![]() |
|
Message-ID: <20250608170923.GM1827@brightrain.aerifal.cx> Date: Sun, 8 Jun 2025 13:09:32 -0400 From: Rich Felker <dalias@...c.org> To: Bobby Bingham <koorogi@...rogi.info> Cc: musl@...ts.openwall.com Subject: Re: The `sigpause` function behavior does not fully comply with the POSIX specification On Sun, Jun 08, 2025 at 11:53:44AM -0500, Bobby Bingham wrote: > On 6/8/25 10:43, Haelwenn (lanodan) Monnier wrote: > > > > This manpage isn't the POSIX standard but Linux own manpage (which for C > > documents glibc behavior). > > Yes. > > > > > See https://pubs.opengroup.org/onlinepubs/9699919799/functions/ > > sigpause.html for POSIX.1-2018 > > where EINVAL is allowed and sigpause returns SIG_ERR (defined by musl in > > <signal.h> to ((void (*)(int))-1) ). > > That page says: > > The sigpause() function shall suspend execution of the thread until > a signal is received, whereupon it shall return -1 and set errno to > [EINTR]. > > This reads to me that sigpause is only permitted to set errno to EINTR, and > not to return other errors. The list of errors would seem to apply to the > other functions on the page, which are documented to "use errno to indicate > the error." That's specifying the behavior on successful return, not on errors. The ERRORS section says: These functions shall fail if: [EINVAL] The sig argument is an illegal signal number. Seems pretty clear. This is a "shall fail" (mandatory) not a "may fail", so detecting the invalid signal number and failing with EINVAL is mandatory. The old behavior of ignoring it was non-conforming. See: https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigpause.html Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.