This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug nptl/17013] New: pthread_cond_broadcast could call lll_unlock() twice, breaking the shared data


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]