From bbbe87e35cfeef593e23010e35528e722027567f Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 12 Jul 2012 11:23:43 -0400 Subject: 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. --- src/thread/pthread_create.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/thread/pthread_create.c') diff --git a/src/thread/pthread_create.c b/src/thread/pthread_create.c index ae2f9e4e..94dc308d 100644 --- a/src/thread/pthread_create.c +++ b/src/thread/pthread_create.c @@ -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); -- cgit v1.2.1