Explorar o código

run dtors before taking the exit-lock in pthread exit

previously a long-running dtor could cause pthread_detach to block.
Rich Felker %!s(int64=14) %!d(string=hai) anos
pai
achega
f58c8a0f39
Modificáronse 1 ficheiros con 2 adicións e 2 borrados
  1. 2 2
      src/thread/pthread_create.c

+ 2 - 2
src/thread/pthread_create.c

@@ -22,10 +22,10 @@ void __pthread_unwind_next(struct __ptcb *cb)
 		longjmp((void *)cb->__next->__jb, 1);
 	}
 
-	__lock(&self->exitlock);
-
 	__pthread_tsd_run_dtors();
 
+	__lock(&self->exitlock);
+
 	/* Mark this thread dead before decrementing count */
 	self->dead = 1;