Re: [patch] change futex_wait() to hrtimers

From: Nick Piggin
Date: Mon Mar 12 2007 - 07:30:28 EST


On Mon, Mar 12, 2007 at 12:19:58PM +0100, Ingo Molnar wrote:
>
> * Nick Piggin <npiggin@xxxxxxx> wrote:
>
> > > even if this means more work for you (i'm sorry about that!) i'm
> > > quite sure we should take Sebastien's hrtimers based implementation
> > > of futex_wait(), and use the nanosleep method to restart it. There's
> > > no point in further tweaking the imprecise approach: whenever some
> > > timeout needs to be restarted, it's a candidate for hrtimers.
> >
> > Absolute timeout is needed, sure. But once that is done, hrtimers does
> > not fix a bug, does it?
>
> the issue is this: your fix reduces the effects of the bug but it is
> still fundamentally incomplete because of the use of timer_list. So

But using schedule_timeout is not a bug. Userspace timeouts are always
defined to be "at least".

> instead of trying to fix the bug the wrong way, please try to fix it the
> right way, ontop of an already existing and tested patch, ok? That also
> enables the other neat stuff Thomas talked about.

Well that's nice, but I have a bugfix here which probably needs to
get backported to stable kernels and distro kernels.

It should be just as easy to rebase the hrtimer patch on top of my
fix. Considering that you've had it for a year, I don't think it
needs to be added right before my fix.

> > > until then, glibc already handles timeouts and restarts it manually.
> >
> > It isn't timeout handling that is buggy, but EINTR behaviour. And
> > glibc does not handle that here.
>
> hm. I'm wondering how this wasnt noticed sooner - this futex_wait
> behavior has been there for like forever.

People ignore LTP test failures, and programs probably try to avoid
exercising the nuances of the unix signal API, I guess.
-
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/