This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug nptl/6955] New: PRIO_INHERIT mutexes do not use FUTEX_PRIVATE_FLAG
- From: "ben at ben dot com" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sources dot redhat dot com
- Date: 9 Oct 2008 19:19:02 -0000
- Subject: [Bug nptl/6955] New: PRIO_INHERIT mutexes do not use FUTEX_PRIVATE_FLAG
- Reply-to: sourceware-bugzilla at sourceware dot org
Code in the PRIO_INHERIT cases of pthread_mutex_lock/unlock/trylock/timedlock
call futex() directly with FUTEX_(UN)LOCK_PI regardless of the pshared-ness of
the mutex. Other cases call futex() indirectly through __lll_*() interfaces
that set FUTEX_PRIVATE_FLAG as appropriate. This was observed to cause
contention on mm->mmap_sema leading to large, random latencies on otherwise
quick lock operations (apparently due to brk() holding mmap_sema).
I patched nptl to set the private flag in the PRIO_INHERIT cases (based on the
pshared-ness of the mutex) and tested that against the regression tests and my
application. The tests pass, the application works, and the performance problem
is solved. However, I am working from a fairly superficial understanding of
this code, and I have not received replies from my inquiries to experts in this
code.
I will try to attach my patch after I submit. I think it illustrates the
desired behavior, but it may not be exactly what glibc maintainers would want.
--
Summary: PRIO_INHERIT mutexes do not use FUTEX_PRIVATE_FLAG
Product: glibc
Version: 2.8
Status: NEW
Severity: normal
Priority: P2
Component: nptl
AssignedTo: drepper at redhat dot com
ReportedBy: ben at ben dot com
CC: glibc-bugs at sources dot redhat dot com
GCC build triplet: x86_64-redhat-linux-gnu
GCC host triplet: x86_64-redhat-linux-gnu
GCC target triplet: x86_64-linux
http://sourceware.org/bugzilla/show_bug.cgi?id=6955
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.