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]"