Jeremie Koenig, le Fri 03 Sep 2010 01:38:29 +0200, a écrit :
> +  pending = ss->pending & ~ss->blocked;
> +
>    __pthread_spin_unlock (&ss->lock);
>  
> +  if (! err && pending)
> +    /* Send a message to the signal thread so it
> +       will wake up and check for pending signals.  */
> +    __msg_sig_post (_hurd_msgport, 0, 0, __mach_task_self ());

Mmm, more precisely, to follow the POSIX behavior AIUI, rather than
ss->pending it should be a process-global pending mask. E.g. if some
signal comes while all threads are masking it it should get recorded
there, and as soon as any of the threads unblocks the signal, it should
get it.

I guess we can however add the patch as such in the Debian package to at
least fix the single-thread case using pthread_sigmask.

Samuel

Reply via email to