Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Dec 2005 15:17:14 -0800 (PST)
From:      Nick Johnson <freebsd@spatula.net>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   bin/90367: libmap.conf needs exclusivity support 
Message-ID:  <20051213231714.9491E17035@turing.morons.org>
Resent-Message-ID: <200512132320.jBDNK3g1014009@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         90367
>Category:       bin
>Synopsis:       libmap.conf needs exclusivity support
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Tue Dec 13 23:20:02 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Nick Johnson
>Release:        FreeBSD 6.0-STABLE i386
>Organization:
morons.org 
>Environment:
System: FreeBSD turing.morons.org 6.0-STABLE FreeBSD 6.0-STABLE #2: Tue Dec 6 08:53:05 PST 2005 root@turing.morons.org:/usr/obj/usr/src/sys/TURING i386


	
>Description:

It is a fairly common problem that a program that uses dynamic linking can end up linking multiple different implementations
of the same library.  This can happen with Java programs that use JNI where the JNI shared object file is linked with 
a different threading library than the Java executable.

One way to deal with this might be to add exclusivity groups to libmap.conf.  For example, a directive might look like this:

Exclusive	libc_r.so* libpthread.so* libthr.so*   # globs might be nice too!

Then if the linker encounters a request for a shared object in an Exclusive group, and something from that group has already
been linked, no additional linking will be performed.

In the case of posix threads, this should work well, because it's a well-known API and private / undocumented functions 
shouldn't be used anyway... (ie, if it works to change the mapping in libmap.conf, this should work too).

The tricky bit would be knowing which shared objects had already been linked to a running program, and doing all of this in
a way that doesn't hinder performance considerably.

	
>How-To-Repeat:
n/a
	
>Fix:
n/a
	


>Release-Note:
>Audit-Trail:
>Unformatted:



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