This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug nptl/17013] New: pthread_cond_broadcast could call lll_unlock() twice, breaking the shared data
- From: "hideaki.kimura at gmail dot com" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sourceware dot org
- Date: Tue, 03 Jun 2014 22:26:52 +0000
- Subject: [Bug nptl/17013] New: pthread_cond_broadcast could call lll_unlock() twice, breaking the shared data
- Auto-submitted: auto-generated
https://sourceware.org/bugzilla/show_bug.cgi?id=17013
Bug ID: 17013
Summary: pthread_cond_broadcast could call lll_unlock() twice,
breaking the shared data
Product: glibc
Version: 2.18
Status: NEW
Severity: normal
Priority: P2
Component: nptl
Assignee: unassigned at sourceware dot org
Reporter: hideaki.kimura at gmail dot com
CC: drepper.fsp at gmail dot com
This reports an already-fixed bug that was in glibc 2.18 and 2.19.
The fix will be in the upcoming glibc 2.20, but many linux distros would employ
it much later.
For helping backport request in individual linux distros, I'd like to put
relevant information here.
An example error case I hit:
- Several waitors wait on pthread_cond_wait with holding mutex.
- One signal-er calls broadcast with holding mutex
- The thread that invoked pthread_cond_broadcast occasionally hangs.
When I attach gdb, the hanging thread is waiting at lll_lock_wait() even though
there are no concurrent threads.
According to the commit history, it was caused by a commit on Feb 2013;
commit 8313cb997d2d("FUTEX_*_REQUEUE_PI support for
non-x86 code").
Then, it was fixed by this commit on Apr 2014;
https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=8f630cca5c36941db1cb48726016bbed80ec1041
So, the affected versions of glibc should be 2.18 and 2.19.
Yang/Siddhesh, does it sound right?
--
You are receiving this mail because:
You are on the CC list for the bug.