Linas Vepstas <[email protected]> writes:
> 2009/3/5 Neil Jerram <[email protected]>:
>>> 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