commit 16fb9086b36e7c7d81241bbd6502634e40346c7b
Author: Imre Vadász <[email protected]>
Date: Sun Apr 2 13:50:15 2017 +0200
libc/libpthread: Inject threadsafe locking callbacks for rtld.
* Make rtld thread-safe. Add lib/libthread_xu/thread/thr_rtld.c
to the build and use it to inject pthread based locking callbacks
for rtld.
* In rtld_lock.c, do the thread_mask_clear(lock->mask); after releasing
the actual lock, to avoid deadlocks when rtld is called recursively
from the pthread locking callbacks.
XXX An alternative solution for this issue would be, to flag the
libpthread dynamic library as bind_now to avoid the recursive rtld
calls.
Summary of changes:
lib/libthread_xu/Makefile | 1 +
lib/libthread_xu/thread/Makefile.inc | 1 +
lib/libthread_xu/thread/thr_kern.c | 3 +--
lib/libthread_xu/thread/thr_rtld.c | 8 +++++---
libexec/rtld-elf/rtld_lock.c | 2 +-
5 files changed, 9 insertions(+), 6 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/16fb9086b36e7c7d81241bbd6502634e40346c7b
--
DragonFly BSD source repository