Prechádzať zdrojové kódy

Fix deadlock in logsys during startup.

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1703 fd59a12c-fef9-0310-b244-a6a79926bd2f
Steven Dake 17 rokov pred
rodič
commit
6124b2a29a
1 zmenil súbory, kde vykonal 9 pridanie a 1 odobranie
  1. 9 1
      exec/logsys.c

+ 9 - 1
exec/logsys.c

@@ -436,6 +436,12 @@ static inline void wthread_wait (void)
 	pthread_mutex_unlock (&logsys_cond_mutex);
 }
 
+static inline void wthread_wait_locked (void)
+{
+	pthread_cond_wait (&logsys_cond, &logsys_cond_mutex);
+	pthread_mutex_unlock (&logsys_cond_mutex);
+}
+
 static void *logsys_worker_thread (void *data)
 {
 	int log_msg;
@@ -503,13 +509,15 @@ static void wthread_create (void)
 
 	pthread_mutex_init (&logsys_cond_mutex, NULL);
 	pthread_cond_init (&logsys_cond, NULL);
+	pthread_mutex_lock (&logsys_cond_mutex);
 	res = pthread_create (&logsys_thread_id, NULL,
 		logsys_worker_thread, NULL);
 
+
 	/*
 	 * Wait for thread to be started
 	 */
-	wthread_wait ();
+	wthread_wait_locked ();
 }
 
 /*