Erroneous text about EINTR in futex man page

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The following text in the futex(2) man page seems incorrect:

       EINTR  A FUTEX_WAIT operation was interrupted by a signal (see
              signal(7)) or a spurious wakeup.

I see no code in the kernel whereby a "spurious wakeup", or anything
other than interruption by a signal handler that's not SA_RESTART, can
cause futex to fail with EINTR. In general, overloading of EINTR
and/or spurious EINTRs from a syscall make it impossible to use that
syscall for implementing any function where EINTR is a mandatory
failure on interruption-by-signal, since there is no way for userspace
to distinguish whether the EINTR occurred as a result of an
interrupting signal or some other reason. The kernel folks have gone
to great lengths to fix spurious EINTRs (see signal(7) for history),
especially by non-interrupting signal handlers, including in futex,
and allowing EINTR here would be contrary to that goal.

It's my belief that the "or a spurious wakeup" text should simply be
removed.

The reason I'm raising this topic is its relevance to a thread on
libc-alpha:
[RFC] mutex destruction (#13690): problem description and workarounds

Rich
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux