freebsd-skq/lib/libthr/thread
Konstantin Belousov bd43f0691c If libthr.so is dlopened without RTLD_GLOBAL flag, the libthr symbols
do not participate in the global symbols namespace, but rtld locks are
still replaced and functions are interposed.  In particular,
__pthread_map_stacks_exec is resolved to the libc version.  If a
library is loaded later, which requires adjustment of the stack
protection mode, rtld calls into libc __pthread_map_stacks_exec due to
the symbols scope.  The libc version might recurse into binder and
recursively acquire rtld bind lock, causing the hang.

Make libc __pthread_map_stacks_exec() interposed, which synchronizes
rtld locks and version of the stack exec hook when libthr loaded,
regardless of the symbol scope control or symbol resolution order.

The __pthread_map_stacks_exec() symbol is removed from the private
version in libthr since libc symbol now operates correctly in presence
of libthr.

Reported and tested by:	markj
Sponsored by:	The FreeBSD Foundation
MFC after:	2 weeks
2016-02-08 19:24:13 +00:00
..
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_ctrdtr.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 If libthr.so is dlopened without RTLD_GLOBAL flag, the libthr symbols 2016-02-08 19:24:13 +00:00
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 If libthr.so is dlopened without RTLD_GLOBAL flag, the libthr symbols 2016-02-08 19:24:13 +00:00
thr_suspend_np.c
thr_switch_np.c
thr_symbols.c
thr_syscalls.c If libthr.so is dlopened without RTLD_GLOBAL flag, the libthr symbols 2016-02-08 19:24:13 +00:00
thr_umtx.c libthr: const-ify two variables 2016-01-13 22:34:55 +00:00
thr_umtx.h
thr_yield.c