From 363b7bd53715dfc3c4b8bc6809fed0a241c34a9a Mon Sep 17 00:00:00 2001 From: jdp Date: Tue, 28 Dec 1999 04:38:17 +0000 Subject: 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. --- include/dlfcn.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/dlfcn.h b/include/dlfcn.h index 09edf2d..16cc417 100644 --- a/include/dlfcn.h +++ b/include/dlfcn.h @@ -66,6 +66,7 @@ __BEGIN_DECLS int dladdr __P((const void *, Dl_info *)); int dlclose __P((void *)); const char *dlerror __P((void)); +/* XXX dllockinit() interface is likely to change. */ void dllockinit __P((void *_context, void *(*_lock_create)(void *_context), void (*_rlock_acquire)(void *_lock), -- cgit v1.1