Skip site navigation (1)Skip section navigation (2)
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>