sigwait return 4

Kostik Belousov kostikbel at gmail.com
Wed Aug 24 19:50:48 UTC 2011


On Wed, Aug 24, 2011 at 11:42:29PM +0400, Slawa Olhovchenkov wrote:
> On Wed, Aug 24, 2011 at 10:32:02PM +0300, Kostik Belousov wrote:
> 
> > > > What should the system do for a delivered signal not present in the set ?
> > > > I guess this is the case of your ktrace.
> > > > 
> > > > Looking at the SUSv4, I see no mention of the situation, but in Oracle
> > > > SunOS 5.10 man page for sigwait(2), it is said explicitely
> > > > EINTR The wait was interrupted by an unblocked, caught signal.
> > > 
> > > I don't think you right in this case.
> > > This is kas-milter and in this thread (this is multi-thread
> > > application) kas-milter wait for USR2 for reload config.
> > > 
> > > System return from sigwait only on USR2, but not each return w/
> > > non-zero return code.
> > > 
> > > On freebsd7 this application don't complain about sigwait's return value.
> > 
> > Could it be that some other thread has the signal unblocked ?
> > (You can verify this with procstat -j).
> > 
> > Can you write the self-contained test case that demonstrates the behaviour ?
> 
> This is closed-source software.
How is this statement related to the creation of the standalone test case ?

> # procstat -j
>   PID    TID COMM             SIG     FLAGS
>  1395 100199 kas-milter       USR2     --
>  1395 100232 kas-milter       USR2     --

Both threads have the signal not blocked. This is not definitive,
since signal must be blocked during the call to sigwait(2). Note that
the SUSv4 says that "The signals defined by set shall have been
blocked at the time of the call to sigwait(); otherwise, the behavior is
undefined."
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20110824/aa46659c/attachment.pgp


More information about the freebsd-stable mailing list