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