From 1c52aede2b4ff6a2978bc388c1e9933ae3e98844 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 15 Jun 2018 11:21:43 -0400 Subject: [PATCH] eina_lock: do not set PTHREAD_MUTEX_ERRORCHECK on recursive locks Summary: a mutex can only have one type, so setting this type onto a recursive mutex will unset the recursive attribute and cause deadlocks ref T1984 @fix Reviewers: stefan_schmidt, ManMower, devilhorns Reviewed By: devilhorns Subscribers: cedric, #committers Tags: #efl Maniphest Tasks: T1984 Differential Revision: https://phab.enlightenment.org/D6264 --- src/lib/eina/eina_lock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/eina/eina_lock.c b/src/lib/eina/eina_lock.c index 76819367b4..19ff742a50 100644 --- a/src/lib/eina/eina_lock.c +++ b/src/lib/eina/eina_lock.c @@ -99,7 +99,7 @@ _eina_lock_new(Eina_Lock *mutex, Eina_Bool recursive) if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE) != 0) goto fail_release; } #ifdef EINA_HAVE_DEBUG_THREADS - if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK) != 0) goto fail_release; + else if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK) != 0) goto fail_release; memset(mutex, 0, sizeof(Eina_Lock)); #endif if (pthread_mutex_init(&(mutex->mutex), &attr) != 0) goto fail_release;