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@