This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Consensus on MT-, AS- and AC-Safety docs.
- From: Rich Felker <dalias at aerifal dot cx>
- To: "Joseph S. Myers" <joseph at codesourcery dot com>
- Cc: Carlos O'Donell <carlos at redhat dot com>, GNU C Library <libc-alpha at sourceware dot org>, Torvald Riegel <triegel at redhat dot com>, Alexandre Oliva <aoliva at redhat dot com>
- Date: Wed, 20 Nov 2013 15:46:55 -0500
- Subject: Re: Consensus on MT-, AS- and AC-Safety docs.
- Authentication-results: sourceware.org; auth=none
- References: <528A7C8F dot 8060805 at redhat dot com> <Pine dot LNX dot 4 dot 64 dot 1311182312130 dot 8831 at digraph dot polyomino dot org dot uk> <528BA2DA dot 3090608 at redhat dot com> <Pine dot LNX dot 4 dot 64 dot 1311192205550 dot 8742 at digraph dot polyomino dot org dot uk>
On Tue, Nov 19, 2013 at 10:39:22PM +0000, Joseph S. Myers wrote:
> * libm functions generally may set the thread-local errno. If a signal
> handler calls such a function without saving and restoring errno, whatever
> code in the thread was interrupted may see an unexpected errno change, and
> libc code may not be robust against errno changing asynchronously during a
> libc function. (I don't know if there are functions beyond the libm and
> strtod/atof families that are AS-Safe but with an errno caveat.)
All AS-safe functions have the potential to modify errno (since all
functions in the standard library do); many are even required to
modify it. When using any library function in a signal handler, it's
the programmer's responsibility to save errno and restore its value
before returning.
Rich