diff --git a/src/system/kernel/arch/x86/32/thread.cpp b/src/system/kernel/arch/x86/32/thread.cpp index aa9ce0d42c..0a5e05b3fe 100644 --- a/src/system/kernel/arch/x86/32/thread.cpp +++ b/src/system/kernel/arch/x86/32/thread.cpp @@ -360,6 +360,7 @@ arch_setup_signal_frame(Thread* thread, struct sigaction* action, frame->ip = x86_get_user_signal_handler_wrapper( (action->sa_flags & SA_BEOS_COMPATIBLE_HANDLER) != 0, thread->team->commpage_address); + frame->flags &= ~(X86_EFLAGS_TRAP | X86_EFLAGS_DIRECTION); return B_OK; } diff --git a/src/system/kernel/arch/x86/64/thread.cpp b/src/system/kernel/arch/x86/64/thread.cpp index 3cf8ee6e32..b1c94c813b 100644 --- a/src/system/kernel/arch/x86/64/thread.cpp +++ b/src/system/kernel/arch/x86/64/thread.cpp @@ -376,6 +376,7 @@ arch_setup_signal_frame(Thread* thread, struct sigaction* action, + (addr_t)commPageAddress; clear_ac(); frame->di = (addr_t)userSignalFrameData; + frame->flags &= ~(uint64)(X86_EFLAGS_TRAP | X86_EFLAGS_DIRECTION); return B_OK; }