From 0d588a4a8229c590551d6254870863cb275598aa Mon Sep 17 00:00:00 2001 From: Eric Pouech <eric.pouech@wanadoo.fr> Date: Sun, 2 Jun 2002 21:36:39 +0000 Subject: [PATCH] Fixed DebugBreakProcess (now generates EXCEPTION_BREAKPOINT instead of EXCEPTION_SINGLE_STEP). --- dlls/ntdll/signal_i386.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c index fbea3e4e466..199d845c1dd 100644 --- a/dlls/ntdll/signal_i386.c +++ b/dlls/ntdll/signal_i386.c @@ -765,8 +765,19 @@ static void do_trap( CONTEXT *context, int trap_code ) switch(trap_code) { case T_TRCTRAP: /* Single-step exception */ - rec.ExceptionCode = EXCEPTION_SINGLE_STEP; - context->EFlags &= ~0x100; /* clear single-step flag */ + if (context->EFlags & 0x100) + { + rec.ExceptionCode = EXCEPTION_SINGLE_STEP; + context->EFlags &= ~0x100; /* clear single-step flag */ + } + else + { + /* likely we get this because of a kill(SIGTRAP) on ourself, + * so send a bp exception instead of a single step exception + */ + TRACE("Spurious single step trap => breakpoint simulation\n"); + rec.ExceptionCode = EXCEPTION_BREAKPOINT; + } break; case T_BPTFLT: /* Breakpoint exception */ rec.ExceptionAddress = (char *)rec.ExceptionAddress - 1; /* back up over the int3 instruction */ -- GitLab