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