fix several locks that weren't updated right for new futex-based __lock
these could have caused memory corruption due to invalid accesses to the next field. all should be fixed now; I found the errors with fgrep -r '__lock(&', which is bogus since the argument should be an array.
This commit is contained in:
parent
c89f130f39
commit
bbbe87e35c
4 changed files with 10 additions and 10 deletions
|
|
@ -24,12 +24,12 @@ void pthread_exit(void *result)
|
|||
|
||||
__pthread_tsd_run_dtors();
|
||||
|
||||
__lock(&self->exitlock);
|
||||
__lock(self->exitlock);
|
||||
|
||||
/* Mark this thread dead before decrementing count */
|
||||
__lock(&self->killlock);
|
||||
__lock(self->killlock);
|
||||
self->dead = 1;
|
||||
a_store(&self->killlock, 0);
|
||||
__unlock(self->killlock);
|
||||
|
||||
do n = libc.threads_minus_1;
|
||||
while (n && a_cas(&libc.threads_minus_1, n, n-1)!=n);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue