Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 8 Mar 2000 09:02:04 -0800 (PST)
From:      John Polstra <jdp@polstra.com>
To:        dmmiller@cvzoom.net
Cc:        current@freebsd.org
Subject:   Re: More "ld-elf.so.1: assert failed" messages
Message-ID:  <200003081702.JAA39397@vashon.polstra.com>
In-Reply-To: <38C5A975.957756C4@cvzoom.net>
References:  <38BA5751.2396AE87@cvzoom.net> <38BB1E9C.CF44EC93@cvzoom.net> <200003060201.SAA85727@vashon.polstra.com> <38C5A975.957756C4@cvzoom.net>

next in thread | previous in thread | raw e-mail | index | archive | help
In article <38C5A975.957756C4@cvzoom.net>,
Donn Miller  <dmmiller@cvzoom.net> wrote:
> John Polstra wrote:
> > 
> > Below is a patch for "src/libexec/rtld-elf" which should fix the
> > assert failures in wine.  I'd appreciate hearing from anybody who
> > tests this with multithreaded packages such as wine, JDK, Mozilla,
> > and linuxthreads.
> 
> [snipped patch]
> 
> OK, here's some of the errors I get with Mozilla.  It looks like it
> happens when Gdk runs out os SysV shared memory.  Otherwise, if I
> don't get the "Gdk-WARNING **: shmget failed!", the ld.so erros never
> occur, and Mozilla runs OK.  It seems as if Wine is working OK so far,
> though, although I probably haven't tested Wine enough:
[...]
> /usr/libexec/ld-elf.so.1: Application locking error: 1 readers and 1
> writers in dynamic linker.  See DLLOCKINIT(3) in manual pages.

This means that one thread was in the middle of a dlopen() call
when another thread either called a new function for the first time
(invoking the dynamic linker for lazy binding) or called dlsym().
Really the only _right_ place I can find to fix this kind of thing is
in the application itself, by calling dllockinit() to set up locking
for the dynamic linker invocations.  I keep trying to come up with
solutions that will work without that, but I'm not at all sure it's
possible.  I'll take another look at Mozilla and see what's done
for other platforms.  They must have this same problem, at least
potentially.

Thanks very much for testing this!

John


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200003081702.JAA39397>