Re: Futex queue_me/get_user ordering (was: 2.6.10-rc1-mm5 [u])
From: Jamie Lokier
Date: Sun Nov 14 2004 - 04:24:29 EST
Andrew Morton wrote:
> The patch wasn't supposed to optimise anything. It fixed a bug which was
> causing hangs. See
> Or are you saying that userspace is buggy??
I haven't looked at the NPTL code, but that URL's pseudo-code is buggy.
The call to FUTEX_WAKE should be doing wake++ conditionally on the
return value, not unconditionally.
Also, the patch doesn't actually fix the described problem.
It may hide it in tests, but the race or a similar one is present in a
different execution order.
The real NPTL code is more complicated than described at that URL,
because real pthread_cond_wait takes a mutex argument as well. The
bug report does not say how that is handled, and it is critically
important that the mutex and convar are updated concurrently in the
So I don't know if NPTL is buggy, but the pseudo-code given in the bug
report is (because of unconditional wake++), and so is the failure
example (because it doesn't use a mutex).
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/