Nicolas Williams wrote:
> On Tue, Sep 30, Paul Fisher wrote:
>> I have a shared library that uses routines from libuuid.so.1, and ever
>> since svn_95 dynamically loading the library causes the following error:
>>
>>    ld.so.1: beam.smp: fatal: nspr_use_zone_allocator: can't find symbol
>>
>> Apparently this is related to a change to libnspr4.so introduced in
>> changeset 7057 "PSARC/2008/342 Further SID support":
>>
>>    http://www.virtualbox.org/ticket/1840
>>
>> Unfortunately, this happens without any duplication of the nspr routines
>> as described above.  Simply using libuuid.so.1 causes the error to
>> occur.  I cannot find any other bugs open for this and am wondering if
>> anyone else has a pointer... if not I'll boil down a test case and
>> submit the bug.
> 
> libidmap gets pulled in via libsec, which libuuid depends on.
> 
> NSPR should in turn get pulled in by libldap, which libidmap depends on.
> 
> Is NSPR installed on your system?  

Yep:

$ pkg info SUNWpr
           Name: SUNWpr
        Summary: Netscape Portable Runtime
          State: Installed
      Authority: opensolaris.org (preferred)
        Version: 0.5.11
  Build Release: 5.11
         Branch: 0.98
Packaging Date: Tue Sep 16 18:01:44 2008
           Size: 1.0 MB
           FMRI: pkg:/[EMAIL PROTECTED],5.11-0.98:20080916T180144Z


> Does you application have a private
> copy of NSPR linked into it?

Nope, the executable:

$ file /usr/local/lib/erlang/erts-5.6.4/bin/beam.smp
/usr/local/lib/erlang/erts-5.6.4/bin/beam.smp:  ELF 64-bit LSB executable 
AMD64 Version 1, dynamically linked, not stripped, no debugging 
information available

$ ldd /usr/local/lib/erlang/erts-5.6.4/bin/beam.smp
        libdl.so.1 =>    /lib/64/libdl.so.1
        libm.so.2 =>     /lib/64/libm.so.2
        libumem.so.1 =>  /lib/64/libumem.so.1
        libsocket.so.1 =>        /lib/64/libsocket.so.1
        libnsl.so.1 =>   /lib/64/libnsl.so.1
        libcurses.so.1 =>        /lib/64/libcurses.so.1
        libpthread.so.1 =>       /lib/64/libpthread.so.1
        libc.so.1 =>     /lib/64/libc.so.1
        libmp.so.2 =>    /lib/64/libmp.so.2
        libmd.so.1 =>    /lib/64/libmd.so.1
        libscf.so.1 =>   /lib/64/libscf.so.1
        libuutil.so.1 =>         /lib/64/libuutil.so.1
        libgen.so.1 =>   /lib/64/libgen.so.1

and the dlopen'd library:

$ file bld/solaris-5-11-x86_64-threaded-gcc/lib/libcoresrv.so.1.0
bld/solaris-5-11-x86_64-threaded-gcc/lib/libcoresrv.so.1.0:     ELF 64-bit 
LSB dynamic lib AMD64 Version 1, dynamically linked, stripped

$ ldd bld/solaris-5-11-x86_64-threaded-gcc/lib/libcoresrv.so.1.0
        libalcc.so =>    
/export/home/pfisher/lm/lm-trunk/bld/solaris-5-11-x86_64-threaded-gcc/lib/libalcc.so
        libuuid.so.1 =>  /lib/64/libuuid.so.1
        libpthread.so.1 =>       /lib/64/libpthread.so.1
        libumem.so.1 =>  /lib/64/libumem.so.1
        librt.so.1 =>    /lib/64/librt.so.1
        libdl.so.1 =>    /lib/64/libdl.so.1
        libstdc++.so.6 =>        /usr/sfw/lib/64/libstdc++.so.6
        libm.so.2 =>     /lib/64/libm.so.2
        libgcc_s.so.1 =>         /usr/sfw/lib/64/libgcc_s.so.1
        libc.so.1 =>     /lib/64/libc.so.1
        libsocket.so.1 =>        /lib/64/libsocket.so.1
        libnsl.so.1 =>   /lib/64/libnsl.so.1
        libdlpi.so.1 =>  /lib/64/libdlpi.so.1
        libmp.so.2 =>    /lib/64/libmp.so.2
        libmd.so.1 =>    /lib/64/libmd.so.1
        libscf.so.1 =>   /lib/64/libscf.so.1
        libinetutil.so.1 =>      /lib/64/libinetutil.so.1
        libdladm.so.1 =>         /lib/64/libdladm.so.1
        libuutil.so.1 =>         /lib/64/libuutil.so.1
        libgen.so.1 =>   /lib/64/libgen.so.1
        libdevinfo.so.1 =>       /lib/64/libdevinfo.so.1
        librcm.so.1 =>   /lib/64/librcm.so.1
        libnvpair.so.1 =>        /lib/64/libnvpair.so.1
        libkstat.so.1 =>         /lib/64/libkstat.so.1
        libsec.so.1 =>   /lib/64/libsec.so.1
        libavl.so.1 =>   /lib/64/libavl.so.1
        libidmap.so.1 =>         /usr/lib/64/libidmap.so.1
        libldap.so.5 =>  /usr/lib/64/libldap.so.5
        libresolv.so.2 =>        /lib/64/libresolv.so.2
        libsldap.so.1 =>         /usr/lib/64/libsldap.so.1
        libsasl.so.1 =>  /usr/lib/64/libsasl.so.1
        libnspr4.so =>   /usr/lib/mps/64/libnspr4.so
        libplc4.so =>    /usr/lib/mps/64/libplc4.so
        libnss3.so =>    /usr/lib/mps/64/libnss3.so
        libssl3.so =>    /usr/lib/mps/64/libssl3.so
        libthread.so.1 =>        /lib/64/libthread.so.1
        libsoftokn3.so =>        /usr/lib/mps/amd64/libsoftokn3.so
        libplds4.so =>   /usr/lib/mps/amd64/libplds4.so
        libbsm.so.1 =>   /lib/64/libbsm.so.1
        libsecdb.so.1 =>         /lib/64/libsecdb.so.1
        libtsol.so.2 =>  /lib/64/libtsol.so.2

The really puzzling thing is that this seems to happen once, and then a 
subsequent attempt to dlopen the library works without error.  I tried 
for a bit last night to create a small test case that demonstrated the 
problem, but could not.


--
paul
_______________________________________________
indiana-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/indiana-discuss

Reply via email to