John Baldwin wrote:
On Monday 06 June 2005 01:13:11 am David Xu wrote:

davidxu     2005-06-06 05:13:11 UTC

 FreeBSD src repository

 Modified files:
sys/kern kern_sig.c Log:
 Fix a bug relavant to debugging, a masked signal unexpectedly interrupts
 a sleeping thread when process is being debugged.
PR: GNU/77818
 Tested by: Sean C. Farley <sean-freebsd at farley org>


This actually breaks other debugging as now debuggers or other processes using procfs/ptrace to catch signals can no longer see ignored signals or SIGSTOP/SIGCONT. The latter breaks strace when execing a new child process as it opens a race where the child process hangs because the parent doesn't ever see that the child process has stopped itself with SIGSTOP (the parent resumes it with SIGCONT when it sees that). The signal shouldn't make it to the target thread if it is ignored, but the process should be stopped and the debugger notified of all signals.


Where can you find the place SIGSTOP can be masked or ignored ?
Though SIGCONT can be ignored but it still can resume a suspended
process. if ignored signals can be seen by debugger, then a sleep(10)
will be interrupted by ignored signals when the process is being
debugged, but will work correctly if it is not being debugged, this
becauses issignal() must be called by debugged thread to report any
signals to debugger, the thread should be woken up.

David Xu

_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to