[prev in list] [next in list] [prev in thread] [next in thread] 

List:       apache-modperl
Subject:    Re: Trunk: APR.so won't load
From:       Jie Gao <J.Gao () sydney ! edu ! au>
Date:       2015-03-27 9:14:31
Message-ID: 20150327091431.GF954 () inforich ! ucc ! usyd ! edu ! au
[Download RAW message or body]

Hi All

I had some more time looking into this, and here's some info I can provide.

--------------------------------------------------------------------------

# readelf -a /usr/local/lib/perl5/site_perl/5.20.2/x86_64-linux-thread-multi/auto/APR/APR.so
 ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Shared object file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x1cb0
  Start of program headers:          64 (bytes into file)
  Start of section headers:          15480 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         6
  Size of section headers:           64 (bytes)
  Number of section headers:         29
  Section header string table index: 26

Section Headers:
  [Nr] Name              Type             Address           Offset
       Size              EntSize          Flags  Link  Info  Align
  [ 0]                   NULL             0000000000000000  00000000
       0000000000000000  0000000000000000           0     0     0

[ Lines removed for clarity ]

Dynamic section at offset 0x36f8 contains 27 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libaprutil-1.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libexpat.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libapr-1.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [librt.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libcrypt.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000f (RPATH)              Library rpath: \
[/usr/local/httpd-2.4.12/lib:/lib/../lib64]

[ Lines removed for clarity ]

Relocation section '.rela.plt' at offset 0x1300 contains 61 entries:
  Offset          Info           Type           Sym. Value    Sym. Name + Addend
000000203930  000200000007 R_X86_64_JUMP_SLO 0000000000000000 Perl_mg_get + 0
000000203938  000300000007 R_X86_64_JUMP_SLO 0000000000000000 Perl_sv_setiv + 0
000000203940  000400000007 R_X86_64_JUMP_SLO 0000000000000000 Perl_sv_bless + 0
000000203948  000500000007 R_X86_64_JUMP_SLO 0000000000000000 apr_strerror + 0
000000203950  000600000007 R_X86_64_JUMP_SLO 0000000000000000 Perl_require_pv + 0
000000203958  000700000007 R_X86_64_JUMP_SLO 0000000000000000 Perl_warn + 0
000000203960  000800000007 R_X86_64_JUMP_SLO 0000000000000000 PerlIO_printf + 0
000000203968  000900000007 R_X86_64_JUMP_SLO 0000000000000000 ap_strchr + 0

[ Lines removed for clarity ]

Symbol table '.dynsym' contains 86 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND 
     1: 00000000000018b8     0 SECTION LOCAL  DEFAULT    9 
     2: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND Perl_mg_get
     3: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND Perl_sv_setiv
     4: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND Perl_sv_bless
     5: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND apr_strerror
     6: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND Perl_require_pv
     7: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND Perl_warn
     8: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND PerlIO_printf
     9: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND ap_strchr


[ Lines removed for clarity ]

Symbol table '.symtab' contains 143 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND 
     1: 0000000000000190     0 SECTION LOCAL  DEFAULT    1 

[ Lines removed for clarity ]

    69: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND ap_strchr


[ Lines removed for clarity ]

--------------------------------------------------------------------------

It seems that ap_strchr is not defined anywhere outside httpd, and not in
any of the shared libs. This seems to create the problem when building
a module with mod_perl or outside the mod_perl source.

I find a somewhat related change by Stas in the past in the Changes file:

bug reports generating code: [Stas]
- add (apr|apu)-config linking info
- show the full path to the config file used to get the data for the
  report

The APR and APR::* family of modules can now be used without having
to load mod_perl.so. On *nix, this is done by compiling the needed
functions from the appropriate sources used to build mod_perl.so
into APR.so, and then arranging for APR::* to 'use APR ()'. On Win32,
a static library of needed functions is built, and APR/APR::*
then link into this library [Stas, Joe Schaefer, Randy Kobes]


I hope this helps resolve this issue in any way.





Regards,

Jie 

* Jie Gao <J.Gao@sydney.edu.au> wrote:

> Date: Sun, 1 Mar 2015 17:30:45 +1100
> From: Jie Gao <J.Gao@sydney.edu.au>
> To: "modperl@perl.apache.org" <modperl@perl.apache.org>, mod_perl Dev
> <dev@perl.apache.org>
> Subject: Trunk: APR.so won't load
> User-Agent: Mutt/1.5.21 (2010-09-15)
> 
> I have got the source code from the trunk, "make test" mostly passed except for
> a threading issue, but I installed it anyway.
> 
> Tried to load a test module, but it fails with the following error:
> 
> #     Error:  Can't load \
> '/usr/local/lib/perl5/site_perl/5.20.2/x86_64-linux-thread-multi/auto/APR/APR.so' \
> for module APR: /usr/local/lib/perl5/site_perl/5.20.2/x86_64-linux-thread-multi/auto/APR/APR.so: \
> undefined symbol: ap_strchr at \
> /usr/local/lib/perl5/5.20.2/x86_64-linux-thread-multi/DynaLoader.pm line 193. #  at \
> /usr/local/lib/perl5/site_perl/5.20.2/x86_64-linux-thread-multi/APR/Table.pm line \
> 23. 
> The following test module loads OK, but fails if I uncomment any of the "use \
> APR::*" lines: 
> #-------------------------------------------------------------------------
> 
> package mytest::mytestmodule;
> 
> use 5.010001;
> use strict;
> use warnings;
> use Carp;
> $SIG{__DIE__} = \&Carp::confess;
> 
> use mod_perl2;
> use Apache2::Connection();
> use Apache2::RequestRec();
> use Apache2::SubRequest();
> use Apache2::Access();
> use Apache2::RequestUtil();
> use Apache2::Response();
> use Apache2::Log();
> use Apache2::Util();
> use Apache2::Const ("-compile", qw(:common :methods :satisfy :auth \
> MODE_READBYTES)); use Apache2::URI();
> use Apache2::Filter ();
> #use APR::Const ("-compile", qw(:common SUCCESS BLOCK_READ));
> use IO::Socket qw(SOCK_STREAM);
> use Data::Dumper;
> use AnyDBM_File ();
> #use APR::Brigade ();
> #use APR::Bucket ();
> #use APR::Base64 ();
> #use APR::Table ();
> #use APR::URI ();
> use URI::Escape::XS qw/uri_escape uri_unescape/;
> #use Apache2::MPM();
> 
> our $VERSION = '1.0.1';
> 
> 1;
> __END__
> 
> #-------------------------------------------------------------------------
> 
> -------------8<---------- Start Bug Report ------------8<----------
> 1. Problem Description:
> 
> [DESCRIBE THE PROBLEM HERE]
> 
> 2. Used Components and their Configuration:
> 
> *** mod_perl version 2.000009
> 
> *** using /usr/local/src/mod_perl-2.0/lib/Apache2/BuildConfig.pm
> 
> *** Makefile.PL options:
> MP_APR_CONFIG  => /usr/local/httpd-2.4.12/bin/apr-1-config
> MP_APR_LIB     => aprext
> MP_APXS        => /usr/local/httpd-2.4.12/bin/apxs
> MP_COMPAT_1X   => 1
> MP_GENERATE_XS => 1
> MP_LIBNAME     => mod_perl
> MP_USE_DSO     => 1
> 
> 
> *** /usr/local/httpd-2.4.12/bin/httpd -V
> Server version: Apache/2.4.12 (Unix)
> Server built:   Feb 27 2015 20:05:23
> Server's Module Magic Number: 20120211:41
> Server loaded:  APR 1.5.1, APR-UTIL 1.5.4
> Compiled using: APR 1.5.1, APR-UTIL 1.5.4
> Architecture:   64-bit
> Server MPM:     worker
> threaded:     yes (fixed thread count)
> forked:     yes (variable process count)
> Server compiled with....
> -D APR_HAS_SENDFILE
> -D APR_HAS_MMAP
> -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
> -D APR_USE_SYSVSEM_SERIALIZE
> -D APR_USE_PTHREAD_SERIALIZE
> -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
> -D APR_HAS_OTHER_CHILD
> -D AP_HAVE_RELIABLE_PIPED_LOGS
> -D DYNAMIC_MODULE_LIMIT=256
> -D HTTPD_ROOT="/usr/local/httpd-2.4.12"
> -D SUEXEC_BIN="/usr/local/httpd-2.4.12/bin/suexec"
> 
> 
> *** /usr/bin/ldd /usr/local/httpd-2.4.12/bin/httpd
> linux-vdso.so.1 =>  (0x00007fffcefff000)
> libpcre.so.0 => /lib64/libpcre.so.0 (0x000000327f400000)
> libaprutil-1.so.0 => /usr/local/httpd-2.4.12/lib/libaprutil-1.so.0 \
> (0x00007f3ba864c000) libexpat.so.1 => /lib64/libexpat.so.1 (0x0000003281c00000)
> libapr-1.so.0 => /usr/local/httpd-2.4.12/lib/libapr-1.so.0 (0x00007f3ba8417000)
> librt.so.1 => /lib64/librt.so.1 (0x000000327dc00000)
> libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00000036c2400000)
> libpthread.so.0 => /lib64/libpthread.so.0 (0x000000327d400000)
> libc.so.6 => /lib64/libc.so.6 (0x000000327d000000)
> /lib64/ld-linux-x86-64.so.2 (0x000000327cc00000)
> libfreebl3.so => /lib64/libfreebl3.so (0x00000036c2800000)
> libdl.so.2 => /lib64/libdl.so.2 (0x000000327d800000)
> 
> 
> *** (apr|apu)-config linking info
> 
> -L/usr/local/httpd-2.4.12/lib -laprutil-1     -lexpat 
> -L/usr/local/httpd-2.4.12/lib -lapr-1 -lrt -lcrypt  -lpthread 
> 
> 
> 
> *** /usr/local/bin/perl -V
> Summary of my perl5 (revision 5 version 20 subversion 2) configuration:
> 
> Platform:
> osname=linux, osvers=2.6.32-504.8.1.el6.x86_64, archname=x86_64-linux-thread-multi
> uname='linux xxx.xxx.xxx.xx 2.6.32-504.8.1.el6.x86_64 #1 smp fri dec 19 12:09:25 \
> est 2014 x86_64 x86_64 x86_64 gnulinux ' config_args='-Dusethreads \
> -Dprefix=/usr/local -des -A ccflags=-fPIC' hint=recommended, useposix=true, \
> d_sigaction=define useithreads=define, usemultiplicity=define
> use64bitint=define, use64bitall=define, uselongdouble=undef
> usemymalloc=n, bincompat5005=undef
> Compiler:
> cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing \
> -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE \
> -D_FILE_OFFSET_BITS=64', optimize='-O2',
> cppflags='-D_REENTRANT -D_GNU_SOURCE -fPIC -fwrapv -fno-strict-aliasing -pipe \
> -fstack-protector -I/usr/local/include' ccversion='', gccversion='4.4.7 20120313 \
> (Red Hat 4.4.7-11)', gccosandvers='' intsize=4, longsize=8, ptrsize=8, \
> doublesize=8, byteorder=12345678 d_longlong=define, longlongsize=8, \
> d_longdbl=define, longdblsize=16 ivtype='long', ivsize=8, nvtype='double', \
> nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define
> Linker and Libraries:
> ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
> libpth=/usr/local/lib /usr/lib /lib/../lib64 /usr/lib/../lib64 /lib /lib64 \
> /usr/lib64 /usr/local/lib64 libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil \
> -lpthread -lc perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
> libc=libc-2.12.so, so=so, useshrplib=false, libperl=libperl.a
> gnulibc_version='2.12'
> Dynamic Linking:
> dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
> cccdlflags='-fPIC', lddlflags='-shared -O2 -L/usr/local/lib -fstack-protector'
> 
> 
> Characteristics of this binary (from libperl): 
> Compile-time options: HAS_TIMES MULTIPLICITY PERLIO_LAYERS
> PERL_DONT_CREATE_GVSV
> PERL_HASH_FUNC_ONE_AT_A_TIME_HARD
> PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP
> PERL_NEW_COPY_ON_WRITE PERL_PRESERVE_IVUV
> USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS
> USE_LARGE_FILES USE_LOCALE USE_LOCALE_COLLATE
> USE_LOCALE_CTYPE USE_LOCALE_NUMERIC USE_PERLIO
> USE_PERL_ATOF USE_REENTRANT_API
> Built under linux
> Compiled at Feb 25 2015 15:58:55
> %ENV:
> PERL_LWP_USE_HTTP_10="1"
> @INC:
> /usr/local/lib/perl5/site_perl/5.20.2/x86_64-linux-thread-multi
> /usr/local/lib/perl5/site_perl/5.20.2
> /usr/local/lib/perl5/5.20.2/x86_64-linux-thread-multi
> /usr/local/lib/perl5/5.20.2
> /usr/local/lib/perl5/site_perl/5.18.2
> /usr/local/lib/perl5/site_perl/5.18.0
> /usr/local/lib/perl5/site_perl
> .
> 
> *** Packages of interest status:
> 
> Apache2            : -
> Apache2::Request   : -
> CGI                : 3.65
> ExtUtils::MakeMaker: 6.98
> LWP                : 5.837
> mod_perl           : -
> mod_perl2          : 2.000009
> 
> 
> 3. This is the core dump trace: (if you get a core dump):
> 
> [CORE TRACE COMES HERE]
> 
> This report was generated by bin/mp2bug on Sun Mar  1 06:21:21 2015 GMT.
> 
> -------------8<---------- End Bug Report --------------8<----------
> 
> # ls -al /usr/local/httpd-2.4.12/lib/
> total 4108
> drwxr-xr-x.  4 root root    4096 Feb 27 20:07 .
> drwxr-xr-x. 15 root root    4096 Feb 27 20:07 ..
> -rw-r--r--.  1 root root    9262 Feb 27 20:07 apr.exp
> drwxr-xr-x.  2 root root    4096 Feb 27 20:07 apr-util-1
> -rw-r--r--.  1 root root    5272 Feb 27 20:07 aprutil.exp
> -rw-r--r--.  1 root root 1685642 Feb 27 20:07 libapr-1.a
> -rwxr-xr-x.  1 root root     969 Feb 27 20:07 libapr-1.la
> lrwxrwxrwx.  1 root root      17 Feb 27 20:07 libapr-1.so -> libapr-1.so.0.5.1
> lrwxrwxrwx.  1 root root      17 Feb 27 20:07 libapr-1.so.0 -> libapr-1.so.0.5.1
> -rwxr-xr-x.  1 root root  858051 Feb 27 20:07 libapr-1.so.0.5.1
> -rw-r--r--.  1 root root 1022024 Feb 27 20:07 libaprutil-1.a
> -rwxr-xr-x.  1 root root    1045 Feb 27 20:07 libaprutil-1.la
> lrwxrwxrwx.  1 root root      21 Feb 27 20:07 libaprutil-1.so -> \
> libaprutil-1.so.0.5.4 lrwxrwxrwx.  1 root root      21 Feb 27 20:07 \
>                 libaprutil-1.so.0 -> libaprutil-1.so.0.5.4
> -rwxr-xr-x.  1 root root  589222 Feb 27 20:07 libaprutil-1.so.0.5.4
> drwxr-xr-x.  2 root root    4096 Feb 27 20:07 pkgconfig
> 
> 
> 
> 
> 
> 
> Regards,
> 
> 
> Jie.
> 
> 
> 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic