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