From c326b7a6282ca6311ca1ece1cd285227a4a48648 Mon Sep 17 00:00:00 2001 From: joost Date: Wed, 3 Jun 2020 22:08:16 +0000 Subject: [PATCH] fpDebug: Fixed endless loop when the debuggee receives an exception-signal. (Calling wstopsig on the signal twice is not the way to go) git-svn-id: trunk@63282 - --- components/fpdebug/fpdbglinuxclasses.pas | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/components/fpdebug/fpdbglinuxclasses.pas b/components/fpdebug/fpdbglinuxclasses.pas index 755dd13117..9345e767ad 100644 --- a/components/fpdebug/fpdbglinuxclasses.pas +++ b/components/fpdebug/fpdbglinuxclasses.pas @@ -1014,7 +1014,7 @@ function TDbgLinuxProcess.Detach(AProcess: TDbgProcess; AThread: TDbgThread): bo begin RemoveAllBreakPoints; - fpPTrace(PTRACE_DETACH, AThread.ID, nil, pointer(wstopsig(TDbgLinuxThread(AThread).FExceptionSignal))); + fpPTrace(PTRACE_DETACH, AThread.ID, nil, pointer(TDbgLinuxThread(AThread).FExceptionSignal)); Result := True; end; @@ -1073,7 +1073,7 @@ begin {$IFDEF DebuglnLinuxDebugEvents} Debugln(['Single-stepping other TID: ', ThreadToContinue.ID]); {$ENDIF} - fpPTrace(PTRACE_SINGLESTEP, ThreadToContinue.ID, pointer(1), pointer(wstopsig(TDbgLinuxThread(ThreadToContinue).FExceptionSignal))); + fpPTrace(PTRACE_SINGLESTEP, ThreadToContinue.ID, pointer(1), pointer(TDbgLinuxThread(ThreadToContinue).FExceptionSignal)); TDbgLinuxThread(ThreadToContinue).ResetPauseStates; ThreadToContinue.FIsPaused := True; @@ -1115,7 +1115,7 @@ begin {$IFDEF DebuglnLinuxDebugEvents} Debugln(['Single-stepping current']); {$ENDIF} - fpPTrace(PTRACE_SINGLESTEP, AThread.ID, pointer(1), pointer(wstopsig(TDbgLinuxThread(AThread).FExceptionSignal))); + fpPTrace(PTRACE_SINGLESTEP, AThread.ID, pointer(1), pointer(TDbgLinuxThread(AThread).FExceptionSignal)); TDbgLinuxThread(AThread).ResetPauseStates; Result := CheckNoError; exit; @@ -1132,7 +1132,7 @@ begin {$IFDEF DebuglnLinuxDebugEvents} Debugln(['RUN other TID: ', ThreadToContinue.ID]); {$ENDIF} - fpPTrace(PTRACE_CONT, ThreadToContinue.ID, pointer(1), pointer(wstopsig(ThreadToContinue.FExceptionSignal))); + fpPTrace(PTRACE_CONT, ThreadToContinue.ID, pointer(1), pointer(ThreadToContinue.FExceptionSignal)); CheckNoError; // only log ThreadToContinue.ResetPauseStates; end; @@ -1146,9 +1146,9 @@ begin Debugln(['RUN ']); {$ENDIF} if AThread.NextIsSingleStep then - fpPTrace(PTRACE_SINGLESTEP, AThread.ID, pointer(1), pointer(wstopsig(TDbgLinuxThread(AThread).FExceptionSignal))) + fpPTrace(PTRACE_SINGLESTEP, AThread.ID, pointer(1), pointer(TDbgLinuxThread(AThread).FExceptionSignal)) else - fpPTrace(PTRACE_CONT, AThread.ID, pointer(1), pointer(wstopsig(TDbgLinuxThread(AThread).FExceptionSignal))); + fpPTrace(PTRACE_CONT, AThread.ID, pointer(1), pointer((TDbgLinuxThread(AThread).FExceptionSignal))); TDbgLinuxThread(AThread).ResetPauseStates; Result := CheckNoError; end;