Re: kernel bug: futex_wait hang

From: Andrew Morton
Date: Tue Mar 22 2005 - 00:28:25 EST


Jamie Lokier <jamie@xxxxxxxxxxxxx> wrote:
>
> Andrew Morton wrote:
> > iirc we ended up deciding that the futex problems around that time were due
> > to userspace problems (a version of libc). But then, there's no discussion
> > around Seto's patch and it didn't get applied. So I don't know what
> > happened to that work - it's all a bit mysterious.
>
> It can be fixed _either_ in Glibc, or by changing the kernel.
>
> That problem is caused by differing assumptions between Glibc and the
> kernel about subtle futex semantics. Which goes to show they are
> really clever, or something.
>
> I provided pseudo-code for the Glibc fix, but not an actual patch
> because NPTL is quite complicated and I wanted to know the Glibc
> people were interested, but apparently they were too busy at the time
> - benchmarks would have made sense for such a patch.
>
> Scott Snyder started fixing part of Glibc, and that did fix his
> instance of this problem so we know the approach works. But a full
> patch for Glibc was not prepared.
>
> The most recent messages under "Futex queue_me/get_user ordering",
> with a patch from Jakub Jelinek will fix this problem by changing the
> kernel. Yes, you should apply Jakub's most recent patch, message-ID
> "<20050318165326.GB32746@xxxxxxxxxxxxxxxxxxxxxxxx>".
>
> I have not tested the patch, but it looks convincing.

OK, thanks. Lee && Paul, that's at
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.12-rc1/2.6.12-rc1-mm1/broken-out/futex-queue_me-get_user-ordering-fix.patch


> I argued for fixing Glibc on the grounds that the changed kernel
> behaviour, or more exactly having Glibc depend on it, loses a certain
> semantic property useful for unusual operations on multiple futexes at
> the same time. But I appear to have lost the argument, and Jakub's
> latest patch does clean up some cruft quite nicely, with no expected
> performance hit.

Futexes were initially so simple.
-
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/