Bug 99046

Summary: symbol _Jv_RegisterClasses, version GLIBC_2.1.3 not defined in file libc.so.6 with link time reference
Product: [Retired] Red Hat Raw Hide Reporter: Kaj J. Niemi <kajtzu>
Component: elfutilsAssignee: Jakub Jelinek <jakub>
Status: CLOSED RAWHIDE QA Contact: Brian Brock <bbrock>
Severity: medium Docs Contact:
Priority: medium    
Version: 1.0   
Target Milestone: ---   
Target Release: ---   
Hardware: i686   
OS: Linux   
URL: http://search.cpan.org/author/DROLSKY/DateTime-0.13/
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2003-07-15 12:40:17 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
SRPM to reproduce the problem easier none

Description Kaj J. Niemi 2003-07-12 22:30:56 UTC
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030703

Description of problem:
I haven't got the faintest idea should I file this against glibc or perl so I'll
try glibc first...

After compile DateTime <http://search.cpan.org/author/DROLSKY/DateTime-0.13/>, a
module providing ways of calculating dates/times the following occurs:

The DateTime.so is getting linked with "gcc  -shared DateTime.o  -o
blib/arch/auto/DateTime/DateTime.so" which works out nicely.

However attempting to use it results in the error below. A short nm on various
libraries (/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so, etc.)
ends up with no address for the symbol

% nm /usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so | grep _Jv
         w _Jv_RegisterClasses

All glibc libraries in /lib/tls/ have the same information.

A quick google search returns the following from the gcc-ml:

Similar problem from March 2003,
<http://sources.redhat.com/ml/binutils/2003-03/msg00443.html>
Answer to his problem <http://sources.redhat.com/ml/binutils/2003-03/msg00450.html>

Wouldn't this mean that a weak symbol should be ignored if missing?

Version-Release number of selected component (if applicable):
glibc-2.3.2-57

How reproducible:
Always

Steps to Reproduce:
1. perl Makefile.PL
2. make
3. make install
4. perl -e 'use DateTime;'
    

Actual Results:  Can't load
'/usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/auto/DateTime/DateTime.so'
for module DateTime:
/usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/auto/DateTime/DateTime.so:
symbol _Jv_RegisterClasses, version GLIBC_2.1.3 not defined in file libc.so.6
with link time reference at
/usr/lib/perl5/5.8.0/i386-linux-thread-multi/XSLoader.pm line 83.
 at /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/DateTime.pm line 17
BEGIN failed--compilation aborted at
/usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/DateTime.pm line 38.
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.

Expected Results:  Should successfully return with code 0.

Additional info:

% rpm -q gcc elfutils binutils glibc perl
gcc-3.3-12
elfutils-0.83-3
binutils-2.14.90.0.4-19
glibc-2.3.2-57 (i686)
perl-5.8.0-89.pre20046.0

Comment 1 Kaj J. Niemi 2003-07-12 22:35:50 UTC
ldd /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/auto/DateTime/DateTime.so
        libc.so.6 => /lib/tls/libc.so.6 (0x00e80000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

nm
/usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/auto/DateTime/DateTime.so
| grep _Jv
         w _Jv_RegisterClasses


ldd /usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so
        libnsl.so.1 => /lib/libnsl.so.1 (0x4014d000)
        libdl.so.2 => /lib/libdl.so.2 (0x40162000)
        libm.so.6 => /lib/tls/libm.so.6 (0x40166000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x40188000)
        libutil.so.1 => /lib/libutil.so.1 (0x401b5000)
        libpthread.so.0 => /lib/tls/libpthread.so.0 (0x401b8000)
        libc.so.6 => /lib/tls/libc.so.6 (0x00e80000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)


Comment 2 Kaj J. Niemi 2003-07-12 22:56:13 UTC
% LD_BIND_NOW='1' LD_DEBUG='all' /lib/ld-linux.so.2 /usr/bin/perl5.8.0 |& fgrep
RegisterClasses
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/usr/bin/perl5.8.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in
file=/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libnsl.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libdl.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libm.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libcrypt.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libutil.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libpthread.so.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libc.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/ld-linux.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/usr/bin/perl5.8.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in
file=/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libnsl.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libdl.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libm.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libcrypt.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libutil.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libpthread.so.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libc.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/ld-linux.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/usr/bin/perl5.8.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in
file=/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libnsl.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libdl.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libm.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libcrypt.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libutil.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libpthread.so.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libc.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/ld-linux.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/usr/bin/perl5.8.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in
file=/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libnsl.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libdl.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libm.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libcrypt.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libutil.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libpthread.so.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libc.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/ld-linux.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/usr/bin/perl5.8.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in
file=/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libnsl.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libdl.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libm.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libcrypt.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libutil.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libpthread.so.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libc.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/ld-linux.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/usr/bin/perl5.8.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in
file=/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libnsl.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libdl.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libm.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libcrypt.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libutil.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libpthread.so.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libc.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/ld-linux.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/usr/bin/perl5.8.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in
file=/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libnsl.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libdl.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libm.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libcrypt.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libutil.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libpthread.so.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libc.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/ld-linux.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/usr/bin/perl5.8.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in
file=/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libnsl.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libdl.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libm.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libcrypt.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libutil.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libpthread.so.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libc.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/ld-linux.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/usr/bin/perl5.8.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in
file=/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libnsl.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libdl.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libm.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libcrypt.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libutil.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libpthread.so.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libc.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/ld-linux.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/usr/bin/perl5.8.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in
file=/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libnsl.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libdl.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libm.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libcrypt.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libutil.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libpthread.so.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libc.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/ld-linux.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/usr/bin/perl5.8.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in
file=/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libnsl.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libdl.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libm.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libcrypt.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libutil.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libpthread.so.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libc.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/ld-linux.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/usr/bin/perl5.8.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in
file=/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libnsl.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libdl.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libm.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libcrypt.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libutil.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libpthread.so.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libc.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/ld-linux.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/usr/bin/perl5.8.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in
file=/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libnsl.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libdl.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libm.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libcrypt.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libutil.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libpthread.so.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libc.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/ld-linux.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/usr/bin/perl5.8.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in
file=/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libnsl.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libdl.so.2
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libm.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libcrypt.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/libutil.so.1
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libpthread.so.0
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/tls/libc.so.6
     15618:     symbol=_Jv_RegisterClasses;  lookup in file=/lib/ld-linux.so.2


Comment 3 Kaj J. Niemi 2003-07-12 23:52:05 UTC
I get this to compile on the few RH 7.3, RH 8 systems I tried on.

Comment 4 Kaj J. Niemi 2003-07-13 01:01:16 UTC
Created attachment 92899 [details]
SRPM to reproduce the problem easier

Ok. The reason why "make test" works but the production version doesn't is
simple.. the library files haven't been processed (stripped, etc.) by the rpm
build process yet.

To get a working DateTime.so one just has to define

%define debug_package	       %{nil}

Commenting the above or setting it to true (1) results in a weird .so file (as
previously described)

I'm sort of confused how the heck something like this can break everything and
result in really interesting errors. I'm fine with not having the .so stripped
but would be inclined to believe that this is the symptom of some deeper
underlying problem.

% rpm -q rpm rpm-build rpm-devel rpm-python redhat-rpm-config
rpm-4.2.1-0.11
rpm-build-4.2.1-0.11
rpm-devel-4.2.1-0.11
rpm-python-4.2.1-0.11
redhat-rpm-config-8.0.26-1

Comment 5 Kaj J. Niemi 2003-07-15 12:40:17 UTC
Problem got fixed by elfutils 0.84-3. Thanks guys.

Marking component elfutils (instead of glibc), resolving as RAWHIDE.