Date: Mon, 27 Dec 1999 21:58:21 +0100 From: Pascal Hofstee <daeron@shadowmere.student.utwente.nl> To: John Polstra <jdp@FreeBSD.org> Cc: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/include dlfcn.h src/lib/libc/gen dllockinit.3 Makefile.inc dlfcn.c src/libexec/rtld-elf lockdflt.c Makefile debug.h rtld.c rtld.h src/libexec/rtld-elf/alpha reloc.c src/libexec/rtld-elf/i386 reloc.c Message-ID: <19991227215821.A4497@shadowmere.student.utwente.nl> In-Reply-To: <199912270444.UAA01884@freefall.freebsd.org>; from jdp@FreeBSD.org on Sun, Dec 26, 1999 at 08:44:04PM -0800 References: <199912270444.UAA01884@freefall.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Dec 26, 1999 at 08:44:04PM -0800, John Polstra wrote: > jdp 1999/12/26 20:44:04 PST > > Modified files: > include dlfcn.h > lib/libc/gen Makefile.inc dlfcn.c > libexec/rtld-elf Makefile debug.h rtld.c rtld.h > libexec/rtld-elf/alpha reloc.c > libexec/rtld-elf/i386 reloc.c > Added files: > lib/libc/gen dllockinit.3 > libexec/rtld-elf lockdflt.c > Log: > Add a new function dllockinit() for registering thread locking > functions to be used by the dynamic linker. This can be called by > threads packages at start-up time. I will add the call to libc_r > soon. > > Also add a default locking method that is used up until dllockinit() > is called. The default method works by blocking SIGVTALRM, SIGPROF, > and SIGALRM in critical sections. It is based on the observation > that most user-space threads packages implement thread preemption > with one of these signals (usually SIGVTALRM). > > The dynamic linker has never been reentrant, but it became less > reentrant in revision 1.34 of "src/libexec/rtld-elf/rtld.c". > Starting with that revision, multiple threads each doing lazy > binding could interfere with each other. The usual symptom was > that a symbol was falsely reported as undefined at start-up time. > It was rare but not unseen. This commit fixes it. With a buildworld of CURRENT that has this commit included (built earlier today) I get the following error when trying to run applications that use the pthread-functionality, like Mozilla and Licq. ld-elf.so.1: assert failed: /usr/src/libexec/rtld-elf/lockdflt.c:55 Abort trap (core dumped) -- -------------------- Pascal Hofstee - daeron@shadowmere.student.utwente.nl -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS d- s+: a-- C++ UB++++ P+ L- E--- W- N+ o? K- w--- O? M V? PS+ PE Y-- PGP-- t+ 5 X-- R tv+ b+ DI D- G e* h+ r- y+ ------END GEEK CODE BLOCK------ 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?19991227215821.A4497>
