On Tue, 2007-06-05 at 21:39 +0400, Alexey Kuznetsov wrote:
Hmm, right.
Ok, handle_futex_death() is punching the OWNER_DIED bit into the futex
without the hash bucket lock. We might as well grab the hash bucket lock
right there to avoid this. I look for a sane solution.
Sorry, I was not clear here: not the user space lock, the rtmutex must
be held or a deadlock situation against another rtmutex must be
detected. There is no way that the exiting code assigns the owner ship
of the rtmutex. It solely calls rtmutex_unlock() which makes the highest
priority waiter the _PENDING_ owner, which means the pending owner needs
to acquire it for real.
My largest box is a 4 way and it runs since hours in a while true loop.
I fix up some things in the code first and then I'll add a couple of
debugs to nail this EDEADLK problem.
tglx
-