freebsd-dev/libexec/rtld-elf
John Polstra 3600eb76c6 Work around an assert failure in the dynamic linker's default thread
locking functions.  If an application loads a shared object with
dlopen() and the shared object has an init function which requires
lazy binding, then _rtld_bind is called when the thread is already
inside the dynamic linker.  This leads to a recursive acquisition
of the lock, which I was not expecting -- hence the assert failure.

This work-around makes the default locking functions handle recursive
locking.  It is NOT the correct fix -- that should be implemented
at the generic locking level rather than in the default locking
functions.  I will implement the correct fix in a future commit.

Since the dllockinit() interface will likely need to change, warn
about that in both the man page and the header file.
1999-12-28 04:38:17 +00:00
..
alpha Work around an assert failure in the dynamic linker's default thread 1999-12-28 04:38:17 +00:00
amd64 Work around an assert failure in the dynamic linker's default thread 1999-12-28 04:38:17 +00:00
i386 Work around an assert failure in the dynamic linker's default thread 1999-12-28 04:38:17 +00:00
debug.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
debug.h Add a new function dllockinit() for registering thread locking 1999-12-27 04:44:04 +00:00
lockdflt.c Work around an assert failure in the dynamic linker's default thread 1999-12-28 04:38:17 +00:00
Makefile Add a new function dllockinit() for registering thread locking 1999-12-27 04:44:04 +00:00
malloc.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
map_object.c Get the actual pathname of the dynamic linker from the executable's 1999-08-30 01:54:13 +00:00
rtld.1 .Nm += "rtld" 1999-09-28 05:35:59 +00:00
rtld.c Add a new function dllockinit() for registering thread locking 1999-12-27 04:44:04 +00:00
rtld.h Add a new function dllockinit() for registering thread locking 1999-12-27 04:44:04 +00:00
xmalloc.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00