Bug 99046 - symbol _Jv_RegisterClasses, version GLIBC_2.1.3 not defined in file libc.so.6 with link time reference
symbol _Jv_RegisterClasses, version GLIBC_2.1.3 not defined in file libc.so.6...
Status: CLOSED RAWHIDE
Product: Red Hat Raw Hide
Classification: Retired
Component: elfutils (Show other bugs)
1.0
i686 Linux
medium Severity medium
: ---
: ---
Assigned To: Jakub Jelinek
Brian Brock
http://search.cpan.org/author/DROLSKY...
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2003-07-12 18:30 EDT by Kaj J. Niemi
Modified: 2007-04-18 12:55 EDT (History)
0 users

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2003-07-15 08:40:17 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
SRPM to reproduce the problem easier (69.72 KB, application/octet-stream)
2003-07-12 21:01 EDT, Kaj J. Niemi
no flags Details

  None (edit)
Description Kaj J. Niemi 2003-07-12 18:30:56 EDT
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 18:35:50 EDT
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 18:56:13 EDT
% 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 19:52:05 EDT
I get this to compile on the few RH 7.3, RH 8 systems I tried on.
Comment 4 Kaj J. Niemi 2003-07-12 21:01:16 EDT
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 08:40:17 EDT
Problem got fixed by elfutils 0.84-3. Thanks guys.

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

Note You need to log in before you can comment on or make changes to this bug.