OSDN Git Service

Per patch from Nathan Field at ghs.com, fix __pthread_initialize_manager so it
authorEric Andersen <andersen@codepoet.org>
Thu, 23 Jan 2003 07:57:02 +0000 (07:57 -0000)
committerEric Andersen <andersen@codepoet.org>
Thu, 23 Jan 2003 07:57:02 +0000 (07:57 -0000)
locks before calling clone when under a debugger, and unlocks on success or
failure of clone when under a debugger.

libpthread/linuxthreads/pthread.c

index 5142d4c..ace6ac9 100644 (file)
@@ -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);
        }
     }