cvs commit: src/sys/kern kern_sig.c

David Xu davidxu at freebsd.org
Wed Jun 20 07:22:07 UTC 2007


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



More information about the cvs-src mailing list