Date: Mon, 27 Dec 1999 20:38:17 -0800 (PST) From: John Polstra <jdp@FreeBSD.org> To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/include dlfcn.h src/lib/libc/gen dllockinit.3 src/libexec/rtld-elf lockdflt.c Message-ID: <199912280438.UAA89079@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
jdp 1999/12/27 20:38:17 PST
Modified files:
include dlfcn.h
lib/libc/gen dllockinit.3
libexec/rtld-elf lockdflt.c
Log:
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.
Revision Changes Path
1.8 +2 -1 src/include/dlfcn.h
1.2 +5 -1 src/lib/libc/gen/dllockinit.3
1.2 +9 -5 src/libexec/rtld-elf/lockdflt.c
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199912280438.UAA89079>
