When I run the code from comment #4 on my machine (glibc-2.20-2.2.x86_64), after pthread_mutex_lock(): > (gdb) p/x mutex > $2 = {__data = {__lock = 0x1, __count = 0x0, __owner = 0xedf, __nusers = 0x1, __kind = 0x0, __spins = 0x0, > __elision = 0x0, __list = {__prev = 0x0, __next = 0x0}}, __size = {0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdf, > 0xe, 0x0, 0x0, 0x1, 0x0 <repeats 27 times>}, __align = 0x1} The same on Dirk's machine (glibc-2.19-19.1.x86_64): > (gdb) p/x mutex > $1 = {__data = {__lock = 0x1, __count = 0x0, __owner = 0x0, __nusers = 0x0, __kind = 0x100, __spins = 0x0, > __elision = 0x3, __list = {__prev = 0x0, __next = 0x0}}, __size = {0x1, 0x0 <repeats 16 times>, 0x1, 0x0, 0x0, > 0x0, 0x0, 0x3, 0x0 <repeats 17 times>}, __align = 0x1} How do I tell glibc to use lock elision? Dirk, perhaps you still have those workarounds to run Groupwise and they're getting on the way?