[PATCH 03/11] Add external interface changes: new lock types for pthread_mutex_t
Andi Kleen
andi@firstfloor.org
Fri Jun 14 14:20:00 GMT 2013
On Fri, Jun 14, 2013 at 03:42:19PM +0200, Andi Kleen wrote:
>
> That's what I wrote for the manual:
I reconsidered this now because it was still misleading.
If the lock is executed first (so the dynamic links happen) it will
also deadlock because dynamic linking aborts. During a program's
startup phase there are typically quite a few aborts due to various
environmental factors (page faults, page dirty bits etc.)
So I rewrote it to:
A program like
@smallexample
/* lock is not a recursive lock type */
pthread_mutex_lock (&lock);
/* Relock same lock in same thread */
pthread_mutex_lock (&lock);
@end smallexample
will immediately hang on the second lock (dead lock) without elision.
With elision the deadlock will only happen on an abort, which can happen
early or could happen later, but will likely not happen every time.
More information about the Libc-alpha
mailing list