From root@turing.morons.org  Tue Dec 13 23:17:30 2005
Return-Path: <root@turing.morons.org>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id DCD7616A41F
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 13 Dec 2005 23:17:30 +0000 (GMT)
	(envelope-from root@turing.morons.org)
Received: from turing.morons.org (morons.org [64.147.161.226])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 08B2443D68
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 13 Dec 2005 23:17:25 +0000 (GMT)
	(envelope-from root@turing.morons.org)
Received: from localhost (localhost.morons.org [127.0.0.1])
	by turing.morons.org (Postfix) with ESMTP id B1F6B17067
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 13 Dec 2005 15:17:25 -0800 (PST)
Received: from turing.morons.org ([127.0.0.1])
 by localhost (turing.morons.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 86767-07 for <FreeBSD-gnats-submit@freebsd.org>;
 Tue, 13 Dec 2005 15:17:14 -0800 (PST)
Received: by turing.morons.org (Postfix, from userid 0)
	id 9491E17035; Tue, 13 Dec 2005 15:17:14 -0800 (PST)
Message-Id: <20051213231714.9491E17035@turing.morons.org>
Date: Tue, 13 Dec 2005 15:17:14 -0800 (PST)
From: Nick Johnson <freebsd@spatula.net>
Reply-To: Nick Johnson <freebsd@spatula.net>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: libmap.conf needs exclusivity support
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         90367
>Category:       bin
>Synopsis:       [request] libmap.conf needs exclusivity support
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          suspended
>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:  Mon Jan 28 09:13:43 UTC 2008
>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:
State-Changed-From-To: open->suspended 
State-Changed-By: linimon 
State-Changed-When: Wed Dec 14 19:10:13 UTC 2005 
State-Changed-Why:  
Mark as suspended awaiting someone to generate a patch for this. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=90367 
>Unformatted:
