Browse Source

Per patch from Nathan Field at ghs.com, fix __pthread_initialize_manager so it
locks before calling clone when under a debugger, and unlocks on success or
failure of clone when under a debugger.

Eric Andersen 23 years ago
parent
commit
7e6a89bcf0
1 changed files with 5 additions and 3 deletions
  1. 5 3
      libpthread/linuxthreads/pthread.c

+ 5 - 3
libpthread/linuxthreads/pthread.c

@@ -384,6 +384,9 @@ int __pthread_initialize_manager(void)
 		   | __pthread_initial_thread.p_eventbuf.eventmask.event_bits[idx]))
 	  != 0)
 	{
+
+         __pthread_lock(__pthread_manager_thread.p_lock, NULL);
+
 	  pid = clone(__pthread_manager_event,
 			(void **) __pthread_manager_thread_tos,
 			CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND,
@@ -404,10 +407,9 @@ int __pthread_initialize_manager(void)
 
 	      /* Now call the function which signals the event.  */
 	      __linuxthreads_create_event ();
-
-	      /* Now restart the thread.  */
-	      __pthread_unlock(__pthread_manager_thread.p_lock);
 	    }
+	  /* Now restart the thread.  */
+	  __pthread_unlock(__pthread_manager_thread.p_lock);
 	}
     }