8.0 Dynamic Linker Broken? (Was: [PATCH] SASL problems with spnego on 8.0-BETA4)

Doug Rabson dfr at rabson.org
Mon Oct 5 07:30:10 UTC 2009


This is the core of the problem, I think. There are two possible  
solutions:

1. Link libgssapi_foo.so against libgssapi.so. I'm not a fan of this  
because it will encourage people to link with libgssapi_krb5.so when  
they really ought to be linking with libgssapi.so to give them  
mechanism independance.

2. Split the various mechanism libs in to two parts, mech_foo.so which  
will contain the actual mechanism implementation (this can link with  
libgssapi.so to handle the RTLD_LOCAL issue) and optionally  
libgssapi_foo.so to contain any mechanism-specific extensions.

Clearly (2) is unsuitable for 8.0 but could happen in current. I guess  
we could use (1) as a band-aid fix for 8.0.

On 5 Oct 2009, at 05:50, Alexander Nedotsukov wrote:

>
> Actually this may mean quite otherwise.
> What I saying is if some code (eg. libsasl) dlopen() libgssapi as
> RTLD_LOCAL then later attempt to load libgssapi_xxx inside libgssapi  
> may
> fail because of this:
>
> $ldd /usr/lib/libgssapi_spnego.so
> /usr/lib/libgssapi_spnego.so:
>        libasn1.so.10 => /usr/lib/libasn1.so.10 (0x28300000)
>        libc.so.7 => /lib/libc.so.7 (0x2808f000)
>
> I would expect to see libgssapi.so.10 dependency here.
>
> On Mon, 5 Oct 2009 10:07:20 +1100, John Marshall
> <john.marshall at riverwillow.com.au> wrote:
>> On Fri, 02 Oct 2009, 08:24 -0400, John Baldwin wrote:
>>> On Friday 02 October 2009 4:13:19 am John Marshall wrote:
>>>> On Tue, 22 Sep 2009, 08:22 +1000, John Marshall wrote:
>>>>> On Mon, 21 Sep 2009, 11:26 -0400, Rick Macklem wrote:
>>>>>
>>  [snip]
>>>>>>
>>>>>> Now, hopefully someone who understands enough about dynamic
>>>>>> linking will
>>>>>> know if this is the correct fix for 8.0? (I'm going on a couple
> of
>>>>>> weeks
>>>>>> vacation at the end of this week, so I won't be around to commit
>>>>>> anything
>>>>>> and don't understand it well enough to know if this is the
> correct
>>>>>> way
>>>>>> to fix it.)
>>>>>>
>>>>>> So, hopefully someone else can pick this one up?
>>>>>>
>>  [snip]
>>>>>
>>>>> I have submitted a patch to the FreeBSD Makefile which patches the
>>>>> vendor-supplied template for krb5-config.  I should be grateful if
>>>>> dfr@
>>>>> or another src committer would please review this with a view to
>>>>> obtaining re@ approval to commit it before 8.0-RC2.
>>>>>
>>>>> <http://www.freebsd.org/cgi/query-pr.cgi?pr=139037>
>>>>
>>>> Any src committers able to help with this?
>>>
>>> Hmmm, I thought that libgssapi was supposed to use dlopen to load  
>>> the
>>> proper
>>> back-end libraries using /etc/gss/mech rather than having  
>>> applications
>>> directly link against them.
>>
>> OK, so if my proposed solution is, in fact, only masking a symptom  
>> of a
>> broken dynamic linker, would somebody who understands this stuff  
>> please
>> weigh in on this with some debugging suggestions or with a patch to
>> address this problem?
>>
>> I'm able to help with testing but I'm not a programmer and know  
>> nothing
>> about the FreeBSD dynamic linker.
>>
>> Thanks.



More information about the freebsd-current mailing list