2e17c78b61
non-interlocked CAS in the fast unlock path -- it is unsafe to test for the waiters-bit while the owner thread is running, we have to spin for the owner or its state change to be sure about the presence of the bit. Split off the logic into the pthread__mutex_setwaiters() routine. This is a partial fix to the named lockup problem (also see PR/44756). It seems there is another race which can be reproduced on faster CPUs. |
||
---|---|---|
.. | ||
arch | ||
affinity.3 | ||
Makefile | ||
pthread_attr_get_np.3 | ||
pthread_attr_getdetachstate.3 | ||
pthread_attr_getguardsize.3 | ||
pthread_attr_getinheritsched.3 | ||
pthread_attr_getname_np.3 | ||
pthread_attr_getschedparam.3 | ||
pthread_attr_getscope.3 | ||
pthread_attr_getstack.3 | ||
pthread_attr_setcreatesuspend_np.3 | ||
pthread_attr.3 | ||
pthread_attr.c | ||
pthread_barrier.3 | ||
pthread_barrier.c | ||
pthread_barrierattr.3 | ||
pthread_cancel.3 | ||
pthread_cancelstub.c | ||
pthread_cleanup_push.3 | ||
pthread_compat.c | ||
pthread_cond.3 | ||
pthread_cond.c | ||
pthread_condattr.3 | ||
pthread_create.3 | ||
pthread_curcpu_np.3 | ||
pthread_detach.3 | ||
pthread_equal.3 | ||
pthread_exit.3 | ||
pthread_getname_np.3 | ||
pthread_getspecific.3 | ||
pthread_int.h | ||
pthread_join.3 | ||
pthread_key_create.3 | ||
pthread_kill.3 | ||
pthread_lock.c | ||
pthread_misc.c | ||
pthread_mutex.3 | ||
pthread_mutex.c | ||
pthread_mutexattr.3 | ||
pthread_once.3 | ||
pthread_once.c | ||
pthread_queue.h | ||
pthread_rwlock.3 | ||
pthread_rwlock.c | ||
pthread_rwlockattr.3 | ||
pthread_schedparam.3 | ||
pthread_self.3 | ||
pthread_sigmask.3 | ||
pthread_specific.c | ||
pthread_spin.3 | ||
pthread_spin.c | ||
pthread_suspend_np.3 | ||
pthread_testcancel.3 | ||
pthread_tsd.c | ||
pthread_types.h | ||
pthread.3 | ||
pthread.c | ||
pthread.h | ||
README | ||
res_state.c | ||
sem.c | ||
shlib_version | ||
TODO |
$NetBSD: README,v 1.6 2009/04/16 18:37:30 wiz Exp $ When making changes to libpthread, please ensure that libpthread_dbg still compiles. Due to limitations in the current pthread implementation, makecontext(3) and sigaltstack(2) should not be used in programs which link against libpthread (whether threads are used or not). This has been noted in the makecontext(3), sigaltstack(2), and pthread(3) man pages.