Subject: 3.0 SA_NODEFER bug?
To: None <tech-kern@netbsd.org>
From: Jon Buller <jon@bullers.net>
List: tech-kern
Date: 01/12/2006 19:45:27
While trying to fix a pkg and the creators pointed me to this note:
<http://thread.gmane.org/gmane.lisp.steel-bank.devel/6157>
The interesting part of the message if from the patch as follows:
--- src/runtime/interrupt.c.orig 2005-12-21 23:11:56.000000000 -0500
+++ src/runtime/interrupt.c 2005-12-25 18:56:09.000000000 -0500
<at> <at> -1053,11 +1053,19 <at> <at> interrupt_maybe_gc_int(int signal, sigin
* the whole sa_mask is ignored and instead of not adding the signal
* in question to the mask. That means if it's not blockable the
* signal must be unblocked at the beginning of signal handlers.
+ *
+ * It turns out that NetBSD's SA_NODEFER doesn't DTRT in a different
+ * way: if SA_NODEFER is set and the signal is in sa_mask, the signal
+ * will be unblocked in the sigmask during the signal handler. -- RMK
+ * X-mas day, 2005
*/
I can't say I've done much work with signals before, let alone anything
even slightly subtle. Is this something I should file a PR about? Or
are they mistaken, misunderstanding the way things are supposed /
allowed to work?
Jon