Consensus on MT-, AS- and AC-Safety docs.

Florian Weimer fweimer@redhat.com
Sat Nov 30 18:32:00 GMT 2013


On 11/29/2013 04:04 PM, Rich Felker wrote:
> On Fri, Nov 29, 2013 at 12:21:02AM -0500, Carlos O'Donell wrote:
>> All we need to do is extend the kernel infrastructure to create
>> a signal entry trampoline like it does for signal return. This isn't
>> impossible, but requires work. The objections are probably about the
>> cost of the extra instructions in the entry of the signal handler,
>> which I think are invalid given the amount of code that runs in the
>> kernel to deliver the signal. Saving errno isn't that much more
>> expensive relative to all the other work to deliver the signal.
>
> This would be non-conforming. POSIX permits writing errno from a
> signal handler (in fact, it requires all the standard functions to
> write to it), and therefore, the code interrupted by the signal
> handler can see the changed errno.

I disagree.  POSIX requires that saving a value to errno is 
async-signal-safe, and also requires that any libc function can be 
interrupted by a signal handler which consists only of async-signal-safe 
operations and still execute as specified by POSIX.  I see two ways of 
ensuring that: do not use errno-based error handling inside libc, or 
restore errno on exit from the signal handler.  I doubt that this was 
intended.

I think it's fair to say that POSIX leaves the interaction of errno and 
signals unspecified.

-- 
Florian Weimer / Red Hat Product Security Team



More information about the Libc-alpha mailing list