Browse Source

run dtors before taking the exit-lock in pthread exit

previously a long-running dtor could cause pthread_detach to block.
rs-1.0
Rich Felker 15 years ago
parent
commit
f58c8a0f39
  1. 4
      src/thread/pthread_create.c

4
src/thread/pthread_create.c

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

Loading…
Cancel
Save