[PING][PATCH] Correct mutex type check for disable lock elision via pthread_mutexattr_settype call
Stefan Liebler
stli@linux.vnet.ibm.com
Tue Apr 8 12:08:00 GMT 2014
ping!
On 04/01/2014 10:29 AM, Stefan Liebler wrote:
> Hi,
>
> if glibc is build with --enable-lock-elision=yes,
> all default mutexes are elided (only for supported architectures).
> Someone can disable the elision for one specific mutex with
> a call to pthread_mutexattr_settype.
> Currently you can specify either PTHREAD_MUTEX_NORMAL or
> PTHREAD_MUTEX_DEFAULT, because they are both defined to 0.
> The function checks for type PTHREAD_MUTEX_DEFAULT
> and then disables elision.
>
> For correctness, the function should check against PTHREAD_MUTEX_NORMAL!
> According to POSIX, PTHREAD_MUTEX_NORMAL shall deadlock if a thread
> tries to relock a mutex without first unlocking it.
> In case of PTHREAD_MUTEX_DEFAULT, the behavior is undefined.
> Thus the mutex can be elided with PTHREAD_MUTEX_DEFAULT, but not with
> PTHREAD_MUTEX_NORMAL.
> The same can be read in the lock elision implementation guidelines
> (https://sourceware.org/glibc/wiki/LockElisionGuide).
>
> Bye.
>
> ---
> 2014-04-01 Stefan Liebler <stli@linux.vnet.ibm.com>
>
> * nptl/pthread_mutexattr_settype.c
> (__pthread_mutexattr_settype):
> Disable lock elision for PTHREAD_MUTEX_NORMAL.
> ---
More information about the Libc-alpha
mailing list