You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by "Gokul P. Nair" <gp...@yahoo.com> on 2005/06/06 21:03:07 UTC

mod_perl2 make test errors - Apache2::Const

I'm tyring to compile and install mod_perl 2.0 as a
dso on Apache 2.0.52 but it complains about not being
able to load Apache2::Const module. This is the error
i get when i run make test:

Can't load
'/usr/local/src/mod_perl-2.0.0/blib/arch/auto/Apache2/Const/Const.so'
for module Apache2::Const:
/usr/local/src/mod_perl-2.0.0/blib/arch/auto/Apache2/Const/Const.so:
undefined symbol: PL_markstack_ptr at
/usr/lib/perl5/5.8.5/i386-linux-thread-multi/DynaLoader.pm
line 230.\n at
/usr/local/src/mod_perl-2.0.0/t/conf/modperl_extra.pl
line 32\nCompilation failed in require at
/usr/local/src/mod_perl-2.0.0/t/conf/modperl_extra.pl
line 32.\nBEGIN failed--compilation aborted at
/usr/local/src/mod_perl-2.0.0/t/conf/modperl_extra.pl
line 32.\nCompilation failed in require at
/usr/local/src/mod_perl-2.0.0/t/conf/modperl_startup.pl
line 17.\n\t...propagated at
/usr/local/src/mod_perl-2.0.0/t/conf/modperl_startup.pl
line 18.\nBEGIN failed--compilation aborted at
/usr/local/src/mod_perl-2.0.0/t/conf/modperl_startup.pl
line 20.\nCompilation failed in require at (eval 2)
line 1.\n

I had mod_perl 1.999.20 running on it prior to this
and so obviously my next step was to try and remove it
as i thought it might be interfering with the new
installation in some way. I did so successfully using:
find /usr/lib/perl5 -name 'Apache2*' -exec rm -rf {}
\;
as specified in the mod_perl 2.0 rename document.

Tried make test and got the same errors again. 
Anybody have any ideas as to what might be causing
this?

Thanks for all your help in advance.

Gokul






		
__________________________________ 
Discover Yahoo! 
Get on-the-go sports scores, stock quotes, news and more. Check it out! 
http://discover.yahoo.com/mobile.html

Re: mod_perl2 make test errors - Apache2::Const

Posted by Stas Bekman <st...@stason.org>.
Gokul P. Nair wrote:
> Thanks for the link Stas. I'm still stumped as what
> could be the problem though, because the version of
> perl i'm using i.e. v5.8.6 is statically linked as is
> evident from the output of this command:
> 
> perl -V:useshrplib
> useshrplib='false';

In the future please always submit a proper bug report as explained here:
http://perl.apache.org/bugs/
so we won't need to guess things. Thanks.

> but then there is only one instance of libperl.a and
> there are no bogus instances of it which is evident
> from this 'find' command:
> 
> find / | grep libperl*
> /usr/local/lib/perl5/5.8.6/i686-linux/CORE/libperl.a
> /usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so
> /usr/lib/perl5/5.8.3/i386-linux-thread-multi/CORE/libperl.so
> /usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE/libperl.so
> /usr/lib/perl5/5.8.4/i386-linux-thread-multi/CORE/libperl.so
> /usr/lib/perl5/5.8.2/i386-linux-thread-multi/CORE/libperl.so
> /usr/lib/perl5/5.8.1/i386-linux-thread-multi/CORE/libperl.so


Here is your problem:

> ldd /usr/local/apache2/bin/httpd
>         libperl.so =>
> /usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE/libperl.so
> (0x02c87000)

You've apache linked against dynamically built perl.

Also check:
ldd /usr/local/src/mod_perl-2.0.0/blib/arch/auto/Apache2/Const/Const.so

> LD_PRELOAD=/usr/local/lib/perl5/5.8.6/i686-linux/CORE/libperl.a
> /usr/local/src/mod_perl-2.0.0/src/modules/perl/mod_perl.so
> Segmentation fault

You can't preload an archive as .so object, I'm not sure why does it even 
let you do that.

-- 
__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

Re: mod_perl2 make test errors - Apache2::Const

Posted by "Gokul P. Nair" <gp...@yahoo.com>.
Thanks for the link Stas. I'm still stumped as what
could be the problem though, because the version of
perl i'm using i.e. v5.8.6 is statically linked as is
evident from the output of this command:

perl -V:useshrplib
useshrplib='false';

but then there is only one instance of libperl.a and
there are no bogus instances of it which is evident
from this 'find' command:

find / | grep libperl*
/usr/local/lib/perl5/5.8.6/i686-linux/CORE/libperl.a
/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/libperl.so
/usr/lib/perl5/5.8.3/i386-linux-thread-multi/CORE/libperl.so
/usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE/libperl.so
/usr/lib/perl5/5.8.4/i386-linux-thread-multi/CORE/libperl.so
/usr/lib/perl5/5.8.2/i386-linux-thread-multi/CORE/libperl.so
/usr/lib/perl5/5.8.1/i386-linux-thread-multi/CORE/libperl.so

output from some other commands:

ldd 
/usr/local/src/mod_perl-2.0.0/src/modules/perl/mod_perl.so
        libnsl.so.1 => /lib/libnsl.so.1 (0xf6e94000)
        libdl.so.2 => /lib/libdl.so.2 (0xf6e90000)
        libm.so.6 => /lib/tls/libm.so.6 (0xf6e6c000)
        libcrypt.so.1 => /lib/libcrypt.so.1
(0xf6e3e000)
        libutil.so.1 => /lib/libutil.so.1 (0xf6e3a000)
        libc.so.6 => /lib/tls/libc.so.6 (0xf6d13000)
        /lib/ld-linux.so.2 (0x002e7000)

ldd /usr/local/apache2/bin/httpd
        libperl.so =>
/usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE/libperl.so
(0x02c87000)
        libutil.so.1 => /lib/libutil.so.1 (0x0099f000)
        libc.so.6 => /lib/tls/libc.so.6 (0x00300000)
        libaprutil-0.so.0 =>
/usr/local/apache2/lib/libaprutil-0.so.0 (0xf6fd6000)
        libgdbm.so.2 => /usr/lib/libgdbm.so.2
(0x00429000)
        libdb-4.2.so => /lib/tls/i686/libdb-4.2.so
(0xf6f08000)
        libexpat.so.0 => /usr/lib/libexpat.so.0
(0x00608000)
        libapr-0.so.0 =>
/usr/local/apache2/lib/libapr-0.so.0 (0xf6ee3000)
        librt.so.1 => /lib/tls/librt.so.1 (0x00cdc000)
        libm.so.6 => /lib/tls/libm.so.6 (0xf6ec0000)
        libcrypt.so.1 => /lib/libcrypt.so.1
(0x00cac000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x0082a000)
        libpthread.so.0 => /lib/tls/libpthread.so.0
(0x0053f000)
        libdl.so.2 => /lib/libdl.so.2 (0x0044e000)
        /lib/ld-linux.so.2 (0x002e7000)

LD_PRELOAD=/usr/local/lib/perl5/5.8.6/i686-linux/CORE/libperl.a
/usr/local/src/mod_perl-2.0.0/src/modules/perl/mod_perl.so
Segmentation fault

perl -V
Summary of my perl5 (revision 5 version 8 subversion
6) configuration:
  Platform:
    osname=linux, osvers=2.6.9-1.667,
archname=i686-linux
    uname='linux socrates.localdomain 2.6.9-1.667 #1
tue nov 2 14:41:25 est 2004 i686 i686 i386 gnulinux '
    config_args=''
    hint=recommended, useposix=true,
d_sigaction=define
    usethreads=undef use5005threads=undef
useithreads=undef usemultiplicity=undef
    useperlio=define d_sfio=undef uselargefiles=define
usesocks=undef
    use64bitint=undef use64bitall=undef
uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-fno-strict-aliasing -pipe
-I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',
    optimize='-O2',
    cppflags='-fno-strict-aliasing -pipe
-I/usr/local/include -I/usr/include/gdbm'
    ccversion='', gccversion='3.4.2 20041017 (Red Hat
3.4.2-6.fc3)', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8,
byteorder=1234
    d_longlong=define, longlongsize=8,
d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double',
nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc
    perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc
    libc=/lib/libc-2.3.3.so, so=so, useshrplib=false,
libperl=libperl.a
    gnulibc_version='2.3.3'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef,
ccdlflags='-Wl,-E'
    cccdlflags='-fpic', lddlflags='-shared
-L/usr/local/lib'

Characteristics of this binary (from libperl):
  Compile-time options: USE_LARGE_FILES
  Built under linux
  Compiled at Mar 10 2005 13:29:19
  @INC:
    /usr/local/lib/perl5/5.8.6/i686-linux
    /usr/local/lib/perl5/5.8.6
    /usr/local/lib/perl5/site_perl/5.8.6/i686-linux
    /usr/local/lib/perl5/site_perl/5.8.6
    /usr/local/lib/perl5/site_perl

Any ideas as to what could be wrong here? i've hit a
dead end here!
Thanks in advance.

Gokul P. Nair

--- Stas Bekman <st...@stason.org> wrote:

> Gokul P. Nair wrote:
> > I'm tyring to compile and install mod_perl 2.0 as
> a
> > dso on Apache 2.0.52 but it complains about not
> being
> > able to load Apache2::Const module. This is the
> error
> > i get when i run make test:
> > 
> > Can't load
> >
>
'/usr/local/src/mod_perl-2.0.0/blib/arch/auto/Apache2/Const/Const.so'
> > for module Apache2::Const:
> >
>
/usr/local/src/mod_perl-2.0.0/blib/arch/auto/Apache2/Const/Const.so:
> > undefined symbol: PL_markstack_ptr at
> [...]
> 
> That means that you have more than one libperl.so
> installed and the wrong 
> one gets loaded (not the one mod_perl was compiled
> with). Gokul, take a 
> look at:
>
http://perl.apache.org/docs/1.0/guide/troubleshooting.html#_relocation_errors__or__undefined_symbol_
> 
> -- 
>
__________________________________________________________________
> Stas Bekman            JAm_pH ------> Just Another
> mod_perl Hacker
> http://stason.org/     mod_perl Guide --->
> http://perl.apache.org
> mailto:stas@stason.org http://use.perl.org
> http://apacheweek.com
> http://modperlbook.org http://apache.org  
> http://ticketmaster.com
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Re: mod_perl2 make test errors - Apache2::Const

Posted by Stas Bekman <st...@stason.org>.
Gokul P. Nair wrote:
> I'm tyring to compile and install mod_perl 2.0 as a
> dso on Apache 2.0.52 but it complains about not being
> able to load Apache2::Const module. This is the error
> i get when i run make test:
> 
> Can't load
> '/usr/local/src/mod_perl-2.0.0/blib/arch/auto/Apache2/Const/Const.so'
> for module Apache2::Const:
> /usr/local/src/mod_perl-2.0.0/blib/arch/auto/Apache2/Const/Const.so:
> undefined symbol: PL_markstack_ptr at
[...]

That means that you have more than one libperl.so installed and the wrong 
one gets loaded (not the one mod_perl was compiled with). Gokul, take a 
look at:
http://perl.apache.org/docs/1.0/guide/troubleshooting.html#_relocation_errors__or__undefined_symbol_

-- 
__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com