Messages in this thread | | | Subject | Re: [PATCH 5/5] futex: fix miss ordered wakeups | From | Daniel Walker <> | Date | Thu, 12 Jun 2008 16:06:02 -0700 |
| |
On Fri, 2008-06-13 at 00:43 +0200, Thomas Gleixner wrote: > On Thu, 12 Jun 2008, Daniel Walker wrote: > > > > > On Thu, 2008-06-12 at 21:55 +0200, Thomas Gleixner wrote: > > > Also your interpretation of the POSIX requirement is very > > > questionable: > > > > > > "If there are threads blocked on the mutex object referenced by mutex > > > when pthread_mutex_unlock() is called, resulting in the mutex > > > becoming available, the scheduling policy shall determine which > > > thread shall acquire the mutex." > > > > The key is "scheduling policy" .. When the mutex is un-blocked the next > > task to run is the same as if the scheduler was selecting tasks from the > > list of blocked tasks .. For Linux, that means the highest priority > > tasks should be selected.. So it's no more acceptable for the scheduler > > to priority invert some tasks than it is for the futex to do it. > > Sigh, when do you actually get a gripe that the default futex > implementation does not and can not guarantee that at all and therefor > your "correctness" patch is as important as a bag of rice which > toopled over in China ?
Well, the last email I got from Arjan said this,
".. Don't look at the release path... look at the acquire path. If a thread sees the futex is free, it'll take it, without even going to the kernel at all."
And yes, I understand that fully.
> Provide answers to the real questions I asked more than once: > > What's the real world problem ? Who cares about that - except you ?
Any application which starts a thread, and later changes the priority can observe the miss-ordering.. That's pretty common..
Daniel
| |