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