Date: Thu, 03 Oct 2002 10:33:35 +1000 From: Gregory Bond <gnb@itga.com.au> To: "Jin Guojun [DSD]" <j_guojun@lbl.gov> Cc: freebsd-bugs@FreeBSD.ORG Subject: Re: kern/43599: Balloc did not check mallocated pointer in libc/stdlib/strtod.c Message-ID: <200210030033.KAA01121@lightning.itga.com.au> In-Reply-To: Your message of Wed, 02 Oct 2002 16:10:04 -0700.
next in thread | raw e-mail | index | archive | help
> "man stdio" does not say this. Is this BSD specific? No, signal handlers have always had very limited capability. IIUC, under the broader ANSI C standards, all they can reliably and portably do is set a variable of type "volatile sig_atomic_t" and return. Most real systems are more forgiving, but not limitless. [One of the real pains in the first ANSI C standardisation process was dealing with the then-common practice of calling longjmp() from a signal handler. There is simply no way to make this work anything like reliably or portably, so it is not required by the standard, even tho many C libraries jump through ugly hoops to try and make it work.] For FreeBSD, signal(3) contains the sentence: See sigaction(2) for a list of functions that are considered safe for use in signal handlers. And sigaction(2) has a list of 40-50 system calls and functions [notably _not_ including any STDIO ones, or longjmp()] and the comment: All functions not in the above lists are considered to be unsafe with respect to signals. That is to say, the behaviour of such functions when called from a signal handler is undefined. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200210030033.KAA01121>