Use error-checking mutexes on all platforms when DEBUG is on
authorIan Lynagh <igloo@earth.li>
Sat, 17 Jan 2009 21:59:31 +0000 (21:59 +0000)
committerIan Lynagh <igloo@earth.li>
Sat, 17 Jan 2009 21:59:31 +0000 (21:59 +0000)
Otherwise ASSERT_LOCK_HELD will cause deadlocks

rts/posix/OSThreads.c

index 510a51d..ee4958a 100644 (file)
@@ -104,10 +104,14 @@ osThreadIsAlive(OSThreadId id STG_UNUSED)
 void
 initMutex(Mutex* pMut)
 {
 void
 initMutex(Mutex* pMut)
 {
-#if defined(DEBUG) && defined(linux_HOST_OS)
+#if defined(DEBUG)
     pthread_mutexattr_t attr;
     pthread_mutexattr_init(&attr);
     pthread_mutexattr_t attr;
     pthread_mutexattr_init(&attr);
+#if defined(linux_HOST_OS)
     pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_ERRORCHECK_NP);
     pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_ERRORCHECK_NP);
+#else
+    pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_ERRORCHECK);
+#endif
     pthread_mutex_init(pMut,&attr);
 #else
     pthread_mutex_init(pMut,NULL);
     pthread_mutex_init(pMut,&attr);
 #else
     pthread_mutex_init(pMut,NULL);