public inbox for glibc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libc/5240] New: Pthread hang where there are still waiters when mutex is in "unlocked" state.
@ 2007-11-01 17:03 rsa at us dot ibm dot com
  2007-11-01 17:05 ` [Bug libc/5240] " rsa at us dot ibm dot com
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: rsa at us dot ibm dot com @ 2007-11-01 17:03 UTC (permalink / raw)
  To: glibc-bugs

A customer identified a potential race condition in
nptl/sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait) which causes
waiting threads not to be woken up under certain circumstances.

Reproduced on:
SMP PowerPC 970
SMP POWER6 (with SMT)
SMP POWER5 (with SMT)
Uni PowerPC 440

Not reproduced on:
Uni Intel Pentium M.
SMP Intel Core 2 Duo.

Consider three threads, "A" holding a lock, "B" blocked in a timed
wait on the same lock, and "C" also blocked on that lock. The value of
the futex is 2.  Then:

- "A" releases the lock, setting the futex value to 0 and waking up
  "B".
- Before "B" performs any further action, "A" continues to execute and
  acquires the lock again, setting the futex value to 1.
- "B" checks the while condition in __lll_timedlock_wait:
  while (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0);
  The condition is true, so "B" iterates the do-while loop.
- "B" hits the timeout and returns ETIMEDOUT.
- "A" releases the lock, setting the futex value from 1 to 0 (without
  wakeup).

At the end, "C" is left waiting, and the futex value is 0.

Testcase forthcoming...

-- 
           Summary: Pthread hang where there are still waiters when mutex is
                    in "unlocked" state.
           Product: glibc
           Version: unspecified
            Status: NEW
          Severity: critical
          Priority: P2
         Component: libc
        AssignedTo: drepper at redhat dot com
        ReportedBy: rsa at us dot ibm dot com
                CC: glibc-bugs at sources dot redhat dot com,rsa at us dot
                    ibm dot com
 GCC build triplet: powerpc-linux
  GCC host triplet: powerpc-linux
GCC target triplet: powerpc-linux


http://sourceware.org/bugzilla/show_bug.cgi?id=5240

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2007-11-27 23:20 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-11-01 17:03 [Bug libc/5240] New: Pthread hang where there are still waiters when mutex is in "unlocked" state rsa at us dot ibm dot com
2007-11-01 17:05 ` [Bug libc/5240] " rsa at us dot ibm dot com
2007-11-01 17:55 ` rsa at us dot ibm dot com
2007-11-01 19:48 ` [Bug nptl/5240] " rsa at us dot ibm dot com
2007-11-09  9:10 ` drepper at redhat dot com
2007-11-09 13:54 ` rsa at us dot ibm dot com
2007-11-09 23:05 ` rsa at us dot ibm dot com
2007-11-24  4:46 ` drepper at redhat dot com
2007-11-27 23:20 ` rsa at us dot ibm dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).