From 189a3c9fa248040974896f44e779638db5bc416b Mon Sep 17 00:00:00 2001 From: martin Date: Fri, 27 Sep 2013 15:43:31 +0000 Subject: [PATCH] Debugger: fix race condition, stopping the debugger could lead to debugger error git-svn-id: trunk@42990 - --- debugger/gdbmidebugger.pp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/debugger/gdbmidebugger.pp b/debugger/gdbmidebugger.pp index 1fc620bddf..1082899092 100644 --- a/debugger/gdbmidebugger.pp +++ b/debugger/gdbmidebugger.pp @@ -2506,17 +2506,21 @@ begin Result := False; if not FCanKillNow then exit; // only here, if we are in ProcessRunning - FDidKillNow := True; + FDidKillNow := True; // interrupt current ProcessRunning + FCanKillNow := False; // Do not allow to re-enter FTheDebugger.GDBPause(True); FTheDebugger.CancelAllQueued; // before ProcessStopped + FDidKillNow := False; // allow ProcessRunning Result := ProcessRunning(StoppedParams, R); if ProcessResultTimedOut then begin // the uter Processrunning should stop, due to process no longer running + FDidKillNow := True; FTheDebugger.DebugProcess.Terminate(0); Result := True; exit; end; + FDidKillNow := True; if StoppedParams <> '' then ProcessStopped(StoppedParams, FTheDebugger.PauseWaitState = pwsInternal);