Re: [RFC PATCH 1/5] signal: Teach sigsuspend to use set_user_sigmask

From: Oleg Nesterov
Date: Thu Jun 13 2019 - 11:26:48 EST

On 06/13, David Laight wrote:
> > And you interpret this as if a pending signal should be delivered in any case,
> > even if pselect succeeds. Again, perhaps you are right, but to me this is simply
> > undocumented.
> This text (from is moderately clear:
> ... if all threads within the process block delivery of the signal, the signal shall
> remain pending on the process until a thread calls a sigwait() function selecting that
> signal, a thread unblocks delivery of the signal, or the action associated with the signal
> is set to ignore the signal.
> So when pselect() 'replaces the signal mask' any pending signals should be delivered.

I fail to understand this logic.

> > However, linux never did this. Until the commit 854a6ed56839 ("signal: Add
> > restore_user_sigmask()"). This commit caused regression. We had to revert it.
> That change wasn't expected to change the behaviour...


And the changed behaviour matched your understanding of standard. We had to
change it back.

So what do you want from me? ;)