Red Hat Bugzilla – Bug 145337
nanosleep from 32 bit process return EINVAL instead of EINTR
Last modified: 2007-11-30 17:07:15 EST
Description of problem:
(Component is just a guess)
Executing nanosleep from a 32-bit returns wrong value in errno when interrupted
by a signal (EINVAL instead of EINTR). For quick reference here is man page
In case of an error or exception, the nanosleep system call returns -1 instead
of 0 and sets errno to one of the following values:
The pause has been interrupted by a non-blocked signal that was delivered to
the process. The remaining sleep time has been written into *rem so that the
process can easily call nanosleep again and continue with the pause.
The value in the tv_nsec field was not in the range 0 to 999 999 999 or tv_sec
Version-Release number of selected component (if applicable):
Run repro.sh from attached archive.
errno is EINVAL
errno should be EINTR
Mea culpa! This was my first attempt to submit a bug. The attachment was
missing. I now understand that I could add it later. 145338 is the same bug
with the repro file attached.
*** This bug has been marked as a duplicate of 145338 ***