svn commit: r225894 - in head/sys: kern sys
kostikbel at gmail.com
Sat Oct 1 10:23:01 UTC 2011
On Sat, Oct 01, 2011 at 10:18:55AM +0000, Konstantin Belousov wrote:
> Author: kib
> Date: Sat Oct 1 10:18:55 2011
> New Revision: 225894
> URL: http://svn.freebsd.org/changeset/base/225894
> The sigwait(3) function shall not return EINTR, according to the
> POSIX/SUSvN. The sigwait(2) syscall does return EINTR, and libc.so.7
> contains the wrapper sigwait(3) which hides EINTR from callers. The
r212405 will be merged to stable/8 shortly.
> EINTR return is used by libthr to handle required cancellation point
> in the sigwait(3).
> To help the binaries linked against pre-libc.so.7, i.e. RELENG_6 and
> earlier, to have right ABI for sigwait(3), transform EINTR return from
> sigwait(2) into ERESTART.
This leaves the static binaries linked against libc.a from a system
with libc.so.N, where N < 7 or N == 7 and does not contain r212405,
with the broken sigwait(). More intrusive change is to allocate new
syscall number for sigwait(2), and change old sigwait(2) to never return
EINTR. Then, the static binaries linked on HEAD and stable/9 prior
to introduction of the new sigwait syscall numbers will have broken
cancellation at sigwait.
I had this done, but sort of agreement we reached is to go with less
intrusive commit you see.
And before you ask, the story started from the real user report of a
broken binary-only program that is not prepared to handle EINTR there.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/svn-src-head/attachments/20111001/b63ef21d/attachment.pgp
More information about the svn-src-head