Date: Fri, 26 Aug 2016 14:27:32 +0000 From: bugzilla-noreply@freebsd.org To: freebsd-bugs@FreeBSD.org Subject: [Bug 212173] SIGINT is only delivered once with sigqueue_test:sigqueue_rt Message-ID: <bug-212173-8-FKGtJBL7vk@https.bugs.freebsd.org/bugzilla/> In-Reply-To: <bug-212173-8@https.bugs.freebsd.org/bugzilla/> References: <bug-212173-8@https.bugs.freebsd.org/bugzilla/>
next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=212173 --- Comment #5 from Konstantin Belousov <kib@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 description. -- You are receiving this mail because: You are the assignee for the bug.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-212173-8-FKGtJBL7vk>
