From 8f4a115e7d38c31ad8d8c7233eaff2db270aebd8 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Wed, 28 Sep 2011 12:47:15 -0400 Subject: barrier destroy must also wait for threads in other processes exiting barrier the vm lock only waits for threads in the same process exiting. actually this fix is not enough, but it's a start... --- src/thread/pthread_barrier_destroy.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/thread/pthread_barrier_destroy.c b/src/thread/pthread_barrier_destroy.c index f82664d5..3ebc2b39 100644 --- a/src/thread/pthread_barrier_destroy.c +++ b/src/thread/pthread_barrier_destroy.c @@ -5,6 +5,8 @@ void __vm_lock(int), __vm_unlock(void); int pthread_barrier_destroy(pthread_barrier_t *b) { if (b->_b_limit < 0) { + int seq = b->_b_seq; + if (seq & 1) __wait(&b->_b_seq, 0, seq, 0); __vm_lock(-1); __vm_unlock(); } -- cgit v1.2.1