[Bug 212173] SIGINT is only delivered once with sigqueue_test:sigqueue_rt

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Fri Aug 26 14:27:33 UTC 2016


--- Comment #5 from Konstantin Belousov <kib at FreeBSD.org> ---
If my reading of the code is right, the count of actually delivered signals is
7, which coincides with the signals[] array size.  In your printfs, signo 2 ==
SIGINT is listed twice, as it should be.  The ndelivered value is 6, it is set
to the return value of sigorder() and sigorder() returned 6.

sigorder() seems to try to eliminate duplicates for signals < SIGRTMIN, which
means that two SIGINTs are merged into one entry in the 'ordered' array.  This
is exactly what you see.

OTOH, FreeBSD behaviour is to treat all signals as realtime while there is no
mem shortage and siginfo can be allocated.  In particular, signals < SIGRTMIN
are not collapsed when queued more than once.

I.e. the test behaviour is exactly opposite to what you claimed in the bug

You are receiving this mail because:
You are the assignee for the bug.

More information about the freebsd-bugs mailing list