From 4d45ad00037a056e52c74dca8a5c00ab2763da5d Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> Date: Wed, 11 Nov 2009 12:41:06 +0100 Subject: [PATCH] always clear pending command queue before posting shutdown commands this ensures that, among other things, we won't get into this scenario: - process is running - interrupt is requested by user - termination is requested by user - before interrupt takes effect, the process terminates => shutdown is called => exit is also queued, as there is already a queued kill => nothing happens, as there will never be a stop response Reviewed-by: hjk --- src/plugins/debugger/gdb/gdbengine.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 2fec141eeb3..2c33f40e1da 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -1406,7 +1406,6 @@ void GdbEngine::handleExecContinue(const GdbResponse &response) } else { if (state() == InferiorRunningRequested_Kill) { setState(InferiorStopped); - m_commandsToRunOnTemporaryBreak.clear(); shutdown(); return; } @@ -1423,7 +1422,6 @@ void GdbEngine::handleExecContinue(const GdbResponse &response) } else { showMessageBox(QMessageBox::Critical, tr("Execution Error"), tr("Cannot continue debugged process:\n") + QString::fromLocal8Bit(msg)); - m_commandsToRunOnTemporaryBreak.clear(); shutdown(); } } @@ -1468,6 +1466,7 @@ void GdbEngine::shutdown() // fall-through case AdapterStartFailed: // Adapter "did something", but it did not help if (m_gdbProc.state() == QProcess::Running) { + m_commandsToRunOnTemporaryBreak.clear(); postCommand(_("-gdb-exit"), GdbEngine::ExitRequest, CB(handleGdbExit)); } else { setState(DebuggerNotReady); @@ -1486,6 +1485,7 @@ void GdbEngine::shutdown() case InferiorShutDown: case InferiorShutdownFailed: // Whatever case InferiorUnrunnable: + m_commandsToRunOnTemporaryBreak.clear(); postCommand(_("-gdb-exit"), GdbEngine::ExitRequest, CB(handleGdbExit)); setState(EngineShuttingDown); // Do it after posting the command! break; -- GitLab