1. Problem Description: On AIX 5.3, with both mod_perl 2.0.5 and 2.0.6-rc2, "perl -e 'use Apache2::Request;'" fails because the loader cannot find runtime definitions for several symbols: "Symbol modperl_hash_tied_object was referenced from module /usr/local/perl/lib/site_perl/5.14.2/aix-thread-multi/auto/APR/Table/Table.so(), but a runtime definition of the symbol was not found."
The problem is shown by the t/apr-ext/brigade.t, t/apr-ext/finfo.t, t/apr-ext/pool.t, t/apr-ext/table.t, t/apr-ext/threadmutex.t, and t/apr-ext/uri.t test cases as well: cd "src/modules/perl" && make Target "all" is up to date. /usr/local/bin/perl -Iblib/arch -Iblib/lib t/TEST -clean [warning] setting ulimit to allow core files ulimit -c unlimited; /usr/local/bin/perl /home/user/tmp/mod_perl-2.0.6-rc2/t/TEST -clean APACHE_TEST_GROUP= APACHE_TEST_HTTPD= APACHE_TEST_PORT= APACHE_TEST_USER= APACHE_TEST_APXS= /usr/local/bin/perl -Iblib/arch -Iblib/lib t/TEST -bugreport -verbose=1 apr-ext/brigade.t apr-ext/finfo.t apr-ext/pool.t apr-ext/table.t apr-ext/threadmutex.t apr-ext/uri.t [warning] setting ulimit to allow core files ulimit -c unlimited; /usr/local/bin/perl /home/user/tmp/mod_perl-2.0.6-rc2/t/TEST -bugreport -verbose=1 'apr-ext/brigade.t' 'apr-ext/finfo.t' 'apr-ext/pool.t' 'apr-ext/table.t' 'apr-ext/threadmutex.t' 'apr-ext/uri.t' /usr/local/apache/bin/httpd -d /home/user/tmp/mod_perl-2.0.6-rc2/t -f /home/user/tmp/mod_perl-2.0.6-rc2/t/conf/httpd.conf -D APACHE2 -D PERL_USEITHREADS using Apache/2.2.22 (prefork MPM) waiting 120 seconds for server to start: .[Tue Apr 03 13:09:10 2012] [info] 6 Apache2:: modules loaded [Tue Apr 03 13:09:10 2012] [info] 0 APR:: modules loaded [Tue Apr 03 13:09:10 2012] [info] base server + 29 vhosts ready to run tests ... waiting 120 seconds for server to start: ok (waited 3 secs) server localhost:8529 started server localhost:8530 listening (filter_out_apache) server localhost:8531 listening (perlsections) server localhost:8532 listening (inherit) server localhost:8533 listening (TestModperl::merge) server localhost:8534 listening (TestModperl::perl_options) server localhost:8535 listening (TestModperl::perl_options2) server localhost:8536 listening (TestModperl::setupenv) server localhost:8537 listening (TestModules::proxy) server localhost:8538 listening (TestUser::rewrite) server localhost:8539 listening (TestVhost::config) server localhost:8540 listening (TestVhost::log) server localhost:8541 listening (TestProtocol::echo_bbs) server localhost:8542 listening (TestProtocol::echo_bbs2) server localhost:8543 listening (TestProtocol::echo_block) server localhost:8544 listening (TestProtocol::echo_filter) server localhost:8545 listening (TestProtocol::echo_nonblock) server localhost:8546 listening (TestProtocol::echo_timeout) server localhost:8547 listening (TestProtocol::pseudo_http) server localhost:8548 listening (TestPreConnection::note) server localhost:8549 listening (TestHooks::hookrun) server localhost:8550 listening (TestHooks::init) server localhost:8551 listening (TestHooks::stacked_handlers2) server localhost:8552 listening (TestHooks::startup) server localhost:8553 listening (TestHooks::trans) server localhost:8554 listening (TestFilter::both_str_con_add) server localhost:8555 listening (TestFilter::in_bbs_inject_header) server localhost:8556 listening (TestFilter::in_bbs_msg) server localhost:8557 listening (TestFilter::in_str_msg) server localhost:8558 listening (TestDirective::perlmodule) server localhost:8559 listening (TestDirective::perlrequire) server localhost:8560 listening (TestAPI::add_config) server localhost:8561 listening (TestDirective::perlloadmodule3) server localhost:8562 listening (TestDirective::perlloadmodule4) server localhost:8563 listening (TestDirective::perlloadmodule5) server localhost:8564 listening (TestDirective::perlloadmodule6) server localhost:8565 listening (TestHooks::push_handlers_anon) Can't load '/home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/Brigade/Brigade.so' for module APR::Brigade: rtld: 0712-001 Symbol modperl_croak was referenced from module /home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/Brigade/Brigade.so(), but a runtime definition of the symbol was not found. at /usr/local/perl/lib/5.14.2/aix-thread-multi/DynaLoader.pm line 190. at /home/user/tmp/mod_perl-2.0.6-rc2/t/lib/TestAPRlib/brigade.pm line 15 Compilation failed in require at /home/user/tmp/mod_perl-2.0.6-rc2/t/lib/TestAPRlib/brigade.pm line 15. BEGIN failed--compilation aborted at /home/user/tmp/mod_perl-2.0.6-rc2/t/lib/TestAPRlib/brigade.pm line 15. Compilation failed in require at t/apr-ext/brigade.t line 7. BEGIN failed--compilation aborted at t/apr-ext/brigade.t line 7. t/apr-ext/brigade.t ...... Dubious, test returned 8 (wstat 2048, 0x800) No subtests run Can't load '/home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/Finfo/Finfo.so' for module APR::Finfo: rtld: 0712-001 Symbol modperl_croak was referenced from module /home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/Finfo/Finfo.so(), but a runtime definition of the symbol was not found. at /usr/local/perl/lib/5.14.2/aix-thread-multi/DynaLoader.pm line 190. at /home/user/tmp/mod_perl-2.0.6-rc2/t/lib/TestAPRlib/finfo.pm line 14 Compilation failed in require at /home/user/tmp/mod_perl-2.0.6-rc2/t/lib/TestAPRlib/finfo.pm line 14. BEGIN failed--compilation aborted at /home/user/tmp/mod_perl-2.0.6-rc2/t/lib/TestAPRlib/finfo.pm line 14. Compilation failed in require at t/apr-ext/finfo.t line 7. BEGIN failed--compilation aborted at t/apr-ext/finfo.t line 7. t/apr-ext/finfo.t ........ Dubious, test returned 8 (wstat 2048, 0x800) No subtests run Can't load '/home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/Table/Table.so' for module APR::Table: rtld: 0712-001 Symbol modperl_hash_tied_object was referenced from module /home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/Table/Table.so(), but a runtime definition of the symbol was not found. rtld: 0712-001 Symbol modperl_hash_tied_object_rv was referenced from module /home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/Table/Table.so(), but a runtime definition of the symbol was not found. rtld: 0712-001 Symbol modperl_hash_tie was referenced from module /home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/Table/Table.so(), but a runtime definition of the symbol was not found. at /usr/local/perl/lib/5.14.2/aix-thread-multi/DynaLoader.pm line 190. at /home/user/tmp/mod_perl-2.0.6-rc2/t/lib/TestAPRlib/pool.pm line 11 Compilation failed in require at /home/user/tmp/mod_perl-2.0.6-rc2/t/lib/TestAPRlib/pool.pm line 11. BEGIN failed--compilation aborted at /home/user/tmp/mod_perl-2.0.6-rc2/t/lib/TestAPRlib/pool.pm line 11. Compilation failed in require at t/apr-ext/pool.t line 7. BEGIN failed--compilation aborted at t/apr-ext/pool.t line 7. t/apr-ext/pool.t ......... Dubious, test returned 8 (wstat 2048, 0x800) No subtests run Can't load '/home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/Table/Table.so' for module APR::Table: rtld: 0712-001 Symbol modperl_hash_tied_object was referenced from module /home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/Table/Table.so(), but a runtime definition of the symbol was not found. rtld: 0712-001 Symbol modperl_hash_tied_object_rv was referenced from module /home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/Table/Table.so(), but a runtime definition of the symbol was not found. rtld: 0712-001 Symbol modperl_hash_tie was referenced from module /home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/Table/Table.so(), but a runtime definition of the symbol was not found. at /usr/local/perl/lib/5.14.2/aix-thread-multi/DynaLoader.pm line 190. at /home/user/tmp/mod_perl-2.0.6-rc2/t/lib/TestAPRlib/table.pm line 11 Compilation failed in require at /home/user/tmp/mod_perl-2.0.6-rc2/t/lib/TestAPRlib/table.pm line 11. BEGIN failed--compilation aborted at /home/user/tmp/mod_perl-2.0.6-rc2/t/lib/TestAPRlib/table.pm line 11. Compilation failed in require at t/apr-ext/table.t line 7. BEGIN failed--compilation aborted at t/apr-ext/table.t line 7. t/apr-ext/table.t ........ Dubious, test returned 8 (wstat 2048, 0x800) No subtests run Can't load '/home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/Table/Table.so' for module APR::Table: rtld: 0712-001 Symbol modperl_hash_tied_object was referenced from module /home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/Table/Table.so(), but a runtime definition of the symbol was not found. rtld: 0712-001 Symbol modperl_hash_tied_object_rv was referenced from module /home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/Table/Table.so(), but a runtime definition of the symbol was not found. rtld: 0712-001 Symbol modperl_hash_tie was referenced from module /home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/Table/Table.so(), but a runtime definition of the symbol was not found. at /usr/local/perl/lib/5.14.2/aix-thread-multi/DynaLoader.pm line 190. at /home/user/tmp/mod_perl-2.0.6-rc2/t/lib/TestAPRlib/threadmutex.pm line 40 Compilation failed in require at /home/user/tmp/mod_perl-2.0.6-rc2/t/lib/TestAPRlib/threadmutex.pm line 40. t/apr-ext/threadmutex.t .. 1..5 # Running under perl version 5.014002 for aix # Current time local: Tue Apr 3 13:09:19 2012 # Current time GMT: Tue Apr 3 11:09:19 2012 # Using Test.pm version 1.25_02 # Using Apache/Test.pm version 1.37 ok 1 # testing : lock == APR::Const::SUCCESS # expected: 0 # received: 0 ok 2 # testing : unlock == APR::Const::SUCCESS # expected: 0 # received: 0 ok 3 Dubious, test returned 8 (wstat 2048, 0x800) Failed 2/5 subtests Can't load '/home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/URI/URI.so' for module APR::URI: rtld: 0712-001 Symbol modperl_uri_new was referenced from module /home/user/tmp/mod_perl-2.0.6-rc2/blib/arch/auto/APR/URI/URI.so(), but a runtime definition of the symbol was not found. at /usr/local/perl/lib/5.14.2/aix-thread-multi/DynaLoader.pm line 190. at /home/user/tmp/mod_perl-2.0.6-rc2/t/lib/TestAPRlib/uri.pm line 11 Compilation failed in require at /home/user/tmp/mod_perl-2.0.6-rc2/t/lib/TestAPRlib/uri.pm line 11. BEGIN failed--compilation aborted at /home/user/tmp/mod_perl-2.0.6-rc2/t/lib/TestAPRlib/uri.pm line 11. Compilation failed in require at t/apr-ext/uri.t line 7. BEGIN failed--compilation aborted at t/apr-ext/uri.t line 7. t/apr-ext/uri.t .......... Dubious, test returned 8 (wstat 2048, 0x800) No subtests run Contents of error_log: END in modperl_extra.pl, pid=901248 [Tue Apr 03 13:09:14 2012] [notice] Apache/2.2.22 (Unix) world domination series/2.0 mod_perl/2.0.6-rc2 Perl/v5.14.2 configured -- resuming normal operations [Tue Apr 03 13:09:14 2012] [info] Server built: Mar 29 2012 15:19:34 [Tue Apr 03 13:09:14 2012] [debug] prefork.c(1023): AcceptMutex: sysvsem (default: sysvsem) [Tue Apr 03 13:09:21 2012] [info] Child process pid=159934 is exiting [Tue Apr 03 13:09:21 2012] [info] Child process pid=159934 is exiting - server push END in modperl_extra.pl, pid=159934 [Tue Apr 03 13:09:21 2012] [info] Child process pid=901256 is exiting [Tue Apr 03 13:09:21 2012] [info] Child process pid=901256 is exiting - server push END in modperl_extra.pl, pid=901256 [Tue Apr 03 13:09:23 2012] [info] removed PID file /home/user/tmp/mod_perl-2.0.6-rc2/t/logs/httpd.pid (pid=1011966) [Tue Apr 03 13:09:23 2012] [notice] caught SIGTERM, shutting down END in modperl_extra.pl, pid=1011966 2. Used Components and their Configuration: *** mod_perl version 2.000006 *** using /home/user/tmp/mod_perl-2.0.6-rc2/lib/Apache2/BuildConfig.pm *** Makefile.PL options: MP_APR_LIB => aprext MP_APXS => /usr/local/apache/bin/apxs MP_COMPAT_1X => 1 MP_GENERATE_XS => 1 MP_LIBNAME => mod_perl MP_USE_DSO => 1 *** /usr/local/apache/bin/httpd -V Server version: Apache/2.2.22 (Unix) Server built: Mar 29 2012 15:19:34 Server's Module Magic Number: 20051115:30 Server loaded: APR 1.4.5, APR-Util 1.4.1 Compiled using: APR 1.4.5, APR-Util 1.4.1 Architecture: 32-bit Server MPM: Prefork threaded: no forked: yes (variable process count) Server compiled with.... -D APACHE_MPM_DIR="server/mpm/prefork" -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=128 -D HTTPD_ROOT="/usr/local/apache" -D SUEXEC_BIN="/usr/local/apache/bin/suexec" -D DEFAULT_PIDLOG="/var/httpd/logs/httpd.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_LOCKFILE="/var/httpd/logs/accept.lock" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="conf/mime.types" -D SERVER_CONFIG_FILE="conf/httpd.conf" *** /usr/bin/ldd /usr/local/apache/bin/httpd /usr/local/apache/bin/httpd needs: /usr/local/apache/lib/libaprutil-1.so /usr/local/apache/lib/libapr-1.so /usr/lib/libpthread.a(shr_xpg5.o) /usr/lib/libc.a(shr.o) /usr/lib/librtl.a(shr.o) /usr/local/apache/lib/libexpat.a(libexpat.so.0) /usr/lib/libiconv.a(shr4.o) /usr/lib/libpthreads.a(shr_comm.o) /unix /usr/lib/libcrypt.a(shr.o) *** (apr|apu)-config linking info -L/usr/local/apache/lib -laprutil-1 -lexpat -liconv -L/usr/local/apache/lib -lapr-1 -lpthread -Wl,-brtl *** /usr/local/perl/bin/perl -V Summary of my perl5 (revision 5 version 14 subversion 2) configuration: Platform: osname=aix, osvers=5.3.0.0, archname=aix-thread-multi uname='aix host 3 5 00ce7e0f4c00 ' config_args='-d -Dcc=cc_r -Duseshrplib -Dusethreads -Dprefix=/usr/local/perl -Dcf_email=root' hint=recommended, useposix=true, d_sigaction=define useithreads=define, usemultiplicity=define useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef use64bitint=undef, use64bitall=undef, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc_r -q32', ccflags ='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -q32 -D_LARGE_FILES -qlonglong', optimize='-O', cppflags='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1 -qnoansialias -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT' ccversion='7.0.0.16', gccversion='', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='ld', ldflags =' -brtl -bdynamic -L/usr/local/lib -b32 -bmaxdata:0x80000000' libpth=/usr/local/lib /lib /usr/lib /usr/ccs/lib libs=-lbind -lnsl -ldbm -ldl -lld -lm -lcrypt -lpthreads -lc perllibs=-lbind -lnsl -ldl -lld -lm -lcrypt -lpthreads -lc libc=/lib/libc.a, so=a, useshrplib=true, libperl=libperl.a gnulibc_version='' Dynamic Linking: dlsrc=dl_aix.xs, dlext=so, d_dlsymun=undef, ccdlflags=' -bE:/usr/local/perl/lib/5.14.2/aix-thread-multi/CORE/perl.exp' cccdlflags=' ', lddlflags='-bhalt:4 -G -bI:$(PERL_INC)/perl.exp -bE:$(BASEEXT).exp -bnoentry -lpthreads -lc -lm -L/usr/local/lib' Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP PERL_PRESERVE_IVUV USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF USE_REENTRANT_API Built under aix Compiled at Mar 28 2012 12:52:40 %ENV: PERL_LWP_USE_HTTP_10="1" @INC: /usr/local/perl/lib/site_perl/5.14.2/aix-thread-multi /usr/local/perl/lib/site_perl/5.14.2 /usr/local/perl/lib/5.14.2/aix-thread-multi /usr/local/perl/lib/5.14.2 . *** Packages of interest status: Apache2 : - Apache2::Request : 2.13 CGI : 3.52 ExtUtils::MakeMaker: 6.62 LWP : 6.04 mod_perl : - mod_perl2 : 2.000006 -- Peter Heimann