Can you see where the -DAP_DEBUG comes from, e.g. by grepping /usr/local/httpd-2.4.12/bin/ap* for AP_DEBUG?
I think that symbol is not supposed to find its way into the mod_perl build options, but it's obviously getting picked up somewhere and slipping through... On 9 April 2015 at 15:05, Jie Gao <j....@sydney.edu.au> wrote: > Hi Steve > > httpd is configured with "--enable-maintainer-mode". > > For mod_perl: > > /usr/local/bin/perl Makefile.PL MP_APXS=/usr/local/httpd-2.4.12/bin/apxs > MP_APR_CONFIG=/usr/local/httpd-2.4.12/bin/apr-1-config > > and I found the following line in the resultant Makefile: > > 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 -DMOD_PERL -DMP_COMPAT_1X -DLINUX -D_REENTRANT > -D_GNU_SOURCE -DAP_DEBUG > > > > Regards, > > Jie > > * Steve Hay <steve.m....@googlemail.com> wrote: > >> Date: Thu, 9 Apr 2015 14:29:44 +0100 >> From: Steve Hay <steve.m....@googlemail.com> >> To: Jie Gao <j....@sydney.edu.au> >> CC: "modperl@perl.apache.org" <modperl@perl.apache.org>, mod_perl Dev >> <d...@perl.apache.org> >> Subject: Re: Trunk: APR.so won't load >> >> Sorry for the slow reply. >> >> I cannot reproduce the problem here on Windows. Your example module >> loads up fine with all the "use APR" lines uncommented. >> >> The build system (and the means by which APR::* should be loadable >> without mod_perl.so being loaded) is different on Windows, but I did >> notice this: >> >> ap_strchr seems to only be used in xs\Apache2\Module\Apache2__Module.h >> but when I run Module.c through the preprocessor I find that ap_strchr >> gets changed to strchr, and the latter is simply imported from the C >> run-time library. >> >> I guess that's down to this code in httpd.h: >> >> #ifdef AP_DEBUG >> >> #undef strchr >> # define strchr(s, c) ap_strchr(s,c) >> #undef strrchr >> # define strrchr(s, c) ap_strrchr(s,c) >> #undef strstr >> # define strstr(s, c) ap_strstr(s,c) >> >> #else >> >> /** use this instead of strchr */ >> # define ap_strchr(s, c) strchr(s, c) >> /** use this instead of strchr */ >> # define ap_strchr_c(s, c) strchr(s, c) >> /** use this instead of strrchr */ >> # define ap_strrchr(s, c) strrchr(s, c) >> /** use this instead of strrchr */ >> # define ap_strrchr_c(s, c) strrchr(s, c) >> /** use this instead of strrstr*/ >> # define ap_strstr(s, c) strstr(s, c) >> /** use this instead of strrstr*/ >> # define ap_strstr_c(s, c) strstr(s, c) >> >> #endif >> >> so presumably I do not have AP_DEBUG defined for my build (even though >> it was a debug build). >> >> It looks like AP_DEBUG should not be defined, even in maintainer mode, >> according to an old Changes entry: >> >> remove -DAP_HAVE_DESIGNATED_INITIALIZER and -DAP_DEBUG from >> MP_MAINTAINER mode to avoid collisions [Joe Orton] >> >> but do you somehow have AP_DEBUG defined somewhere, which causes the >> replacement of ap_strchr with strchr to not happen for you? >> >> >> On 27 March 2015 at 09:14, Jie Gao <j....@sydney.edu.au> wrote: >> > 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....@sydney.edu.au> wrote: >> > >> >> Date: Sun, 1 Mar 2015 17:30:45 +1100 >> >> From: Jie Gao <j....@sydney.edu.au> >> >> To: "modperl@perl.apache.org" <modperl@perl.apache.org>, mod_perl Dev >> >> <d...@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. >> >> >> >> >> >>