aad93b043a
used a global pthread_mutex_t for synchronization. r179417 replaced that with an implementation that directly used atomic instructions and thr_* syscalls to synchronize callers to pthread_once. However, calling pthread_mutex_lock on the global mutex implicitly ensured that _thr_check_init() had been called but with r179417 this was no longer guaranteed. This meant that if you were unlucky enough to have your first call into libthr be a call to pthread_once(), you would segfault when trying to access the pointer returned by _get_curthread(). The fix is to explicitly call _thr_check_init() from pthread_once(). Reviewed by: davidxu Approved by: emaste (mentor) MFC after: 1 week |
||
---|---|---|
.. | ||
Makefile.inc | ||
thr_affinity.c | ||
thr_attr.c | ||
thr_autoinit.c | ||
thr_barrier.c | ||
thr_barrierattr.c | ||
thr_cancel.c | ||
thr_clean.c | ||
thr_concurrency.c | ||
thr_cond.c | ||
thr_condattr.c | ||
thr_create.c | ||
thr_detach.c | ||
thr_equal.c | ||
thr_event.c | ||
thr_exit.c | ||
thr_fork.c | ||
thr_getcpuclockid.c | ||
thr_getprio.c | ||
thr_getschedparam.c | ||
thr_getthreadid_np.c | ||
thr_info.c | ||
thr_init.c | ||
thr_join.c | ||
thr_kern.c | ||
thr_kill.c | ||
thr_list.c | ||
thr_main_np.c | ||
thr_multi_np.c | ||
thr_mutex.c | ||
thr_mutexattr.c | ||
thr_once.c | ||
thr_printf.c | ||
thr_private.h | ||
thr_pspinlock.c | ||
thr_resume_np.c | ||
thr_rtld.c | ||
thr_rwlock.c | ||
thr_rwlockattr.c | ||
thr_self.c | ||
thr_sem.c | ||
thr_setprio.c | ||
thr_setschedparam.c | ||
thr_sig.c | ||
thr_single_np.c | ||
thr_sleepq.c | ||
thr_spec.c | ||
thr_spinlock.c | ||
thr_stack.c | ||
thr_suspend_np.c | ||
thr_switch_np.c | ||
thr_symbols.c | ||
thr_syscalls.c | ||
thr_umtx.c | ||
thr_umtx.h | ||
thr_yield.c |