CVSROOT:        /cvs
Module name:    src
Changes by:     clau...@cvs.openbsd.org 2024/10/01 02:28:34

Modified files:
        sys/kern       : kern_sig.c sys_process.c 
        sys/sys        : proc.h 

Log message:
Adjust ptrace interface to properly suport single threaded continue.

Introduce P_TRACESINGLE flag to instruct the trapped thread to not
wakeup the other threads (via single_thread_clear). This must be done
like this since ptrace must wake just the single thread to ensure it
runs first and gets the ps_xsig value from ptrace.

Modern gdb depends on this for multi-threaded processes, when a breakpoint
is hit gdb fixes up the trapping instruction and then single steps over
it with only that thread. After that single step gdb continues with all
threads. If all threads are run like now it is possible that one of the
other threads hits a breakpoint before the single step is done which results
in an assertion in gdb (because that is not expected).
OK mpi@

Reply via email to