Kaynağa Gözat

Merge trunk revision 2920:
r2920 | sdake | 2010-06-03 15:05:17 -0700 (Thu, 03 Jun 2010) | 2 lines

sem_wait can be interrupted by signal. Handle interruption properly.



git-svn-id: http://svn.fedorahosted.org/svn/corosync/branches/flatiron@2937 fd59a12c-fef9-0310-b244-a6a79926bd2f

Steven Dake 15 yıl önce
ebeveyn
işleme
9f2d7a75c1
1 değiştirilmiş dosya ile 12 ekleme ve 1 silme
  1. 12 1
      exec/logsys.c

+ 12 - 1
exec/logsys.c

@@ -661,7 +661,18 @@ static void *logsys_worker_thread (void *data)
 	sem_post (&logsys_thread_start);
 	sem_post (&logsys_thread_start);
 	for (;;) {
 	for (;;) {
 		dropped = 0;
 		dropped = 0;
-		sem_wait (&logsys_print_finished);
+retry_sem_wait:
+		res = sem_wait (&logsys_print_finished);
+		if (res == -1 && errno == EINTR) {
+			goto retry_sem_wait;
+		} else
+		if (res == -1) {
+			/*
+  			 * This case shouldn't happen
+  			 */
+			pthread_exit (NULL);
+		}
+		
 
 
 		logsys_wthread_lock();
 		logsys_wthread_lock();
 		if (wthread_should_exit) {
 		if (wthread_should_exit) {