git: libc/libpthread: Inject threadsafe locking callbacks for rtld.
Imre Vadasz
ivadasz at crater.dragonflybsd.org
Sun Apr 2 12:06:43 PDT 2017
commit 16fb9086b36e7c7d81241bbd6502634e40346c7b
Author: Imre Vadász <imre at vdsz.com>
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
More information about the Commits
mailing list