Linas Vepstas <linasveps...@gmail.com> writes: > 2009/3/5 Neil Jerram <n...@ossau.uklinux.net>: >>> Yes, it's an unrelated bug. All of the places that raise errors (and >>> so exit non-locally) should exit the critical section first. >> >>> You're absolutely right. I'll leave this part out, and generate a >>> separate patch for it. >> >> Here's the separate patch... > > Looks good, except for the test case: > > + (pass-if-exception "handler arg is an invalid integer" > + exception:out-of-range > + (sigaction SIGINT 51)) > > whereas my bits/signum.h shows: > > #define SIGUNUSED 31 > > #define _NSIG 65 /* Biggest signal number + 1 > (including real-time signals). */ > > I presume that in the era of 64-bit CPU's we might > start seeing new sigs in the 32-64 range. Or maybe > the RT kernels already do ... ?
Right, but the 51 is the handler arg, for which the only valid integer values are SIG_DFL (0) and SIG_IGN (1). I'll add a comment to explain this, and code to make the test fail in case SIG_DFL or SIG_IGN is (on some platform) 51. Neil