signal handler priority issue

David Xu davidxu at freebsd.org
Fri Jun 11 22:35:22 GMT 2004


Sean McNeil wrote:

>On Fri, 2004-06-11 at 07:40, David Xu wrote:
>  
>
>>Sean McNeil wrote:
>>
>>    
>>
>>>Sorry for top-posting, but it may be easier to read this way....
>>>
>>>The program below has an optimization bug in that done isn't declare
>>>volatile.  With that fixed, it works just fine.  I've been attempting to
>>>get boehm-gc working and it seems OK with libc_r, but fails with
>>>libpthread.  It is essentially doing what the program below does, but
>>>for some reason it gets stuck.  Has anyone else been experimenting with
>>>boehm-gc?
>>>
>>>Also, it would really help if I had a debugger that worked with kse
>>>threads.  How is that going?  Tracking down pthread issues right now has
>>>been difficult with the current debugger.  Can anyone throw some patches
>>>my way that may help?
>>> 
>>>
>>>      
>>>
>>Please try the patch:
>>http://people.freebsd.org/~davidxu/kse/thr_sigsuspend.c.diff
>>
>>the patch is for file /usr/src/lib/libpthread/thread/thr_sigsuspend.c,
>>I believe I caught a bug in the sigsuspend(), thread
>>should scan pending signals first, only when there is
>>no pending signal in wait set,  the thread can sleep.
>>    
>>
>
>Also, the mask provided by the sigsuspend call should govern what
>handlers get called.  So the sigmask should be left in place until after
>the _thr_sig_check_pending(curthread) call.
>
>Thanks for catching this :)
>
>Sean
>
>
>
>
>  
>
No the patch is still not correct, before
_thr_sched_switch_unlocked(curthread) returns, signal will be delivered,
so there needs a flag to tell signal dispatching code to use old signal mask
when delivering signal to signal handler. I am working on it,
thanks for your patch.

David Xu



More information about the freebsd-amd64 mailing list