|Summary:||errno is 0 when sigwait returns an error|
|Product:||[Fedora] Fedora||Reporter:||Jonathan Kamens <jik>|
|Component:||glibc||Assignee:||Jakub Jelinek <jakub>|
|Status:||CLOSED NOTABUG||QA Contact:||Brian Brock <bbrock>|
|Fixed In Version:||Doc Type:||Bug Fix|
|Doc Text:||Story Points:||---|
|Last Closed:||2005-05-30 08:43:37 UTC||Type:||---|
|oVirt Team:||---||RHEL 7.3 requirements from Atomic Host:|
|Cloudforms Team:||---||Target Upstream Version:|
Description Jonathan Kamens 2005-05-29 05:42:33 UTC
For some reason I do not understand from looking at the code, which must be related in some weird way to how glibc handles function calls, system calls, etc., when sigwait returns an error code the value of errno is not preserved, i.e., the errno value is returned as an error code from sigwait but errno is 0 when it's examined. The value of errno should be preserved, as it is on non-Linux operating systems.
Comment 1 Jakub Jelinek 2005-05-30 08:43:37 UTC
errno after sigwait is unspecified. See http://www.opengroup.org/onlinepubs/009695399/functions/errno.html and http://www.opengroup.org/onlinepubs/009695399/functions/sigwait.html As sigwait's description doesn't mandate anything about errno value, it is unspecified. The only requirement is that if errno was non-zero before sigwait, it will not be set to 0 by the call. If you see errno becoming 0 when it previously was non-zero, then please provide a testcase. But to my knowledge nothing in glibc violates that requirement, especially not sigwait, which on most architectures will simply not touch errno at all, only return the error value as it is supposed to do.