longjmp((void *)cb->__next->__jb, 1);
}
- LOCK(&self->exitlock);
-
__pthread_tsd_run_dtors();
+ __lock(&self->exitlock);
+
/* Mark this thread dead before decrementing count */
+ __lock(&self->killlock);
self->dead = 1;
+ a_store(&self->killlock, 0);
do n = libc.threads_minus_1;
while (n && a_cas(&libc.threads_minus_1, n, n-1)!=n);