Re: Trunk: APR.so won't load
Hi Steve Yes, I applied the AP_DEBUG patch. Regards, Jie * Steve Hay steve.m@googlemail.com wrote: Date: Tue, 14 Apr 2015 08:32:29 +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 That's great news! Was that with the AP_DEBUG patch to lib/Apache2/Build.pm that I posted last time, or did it just work without that anyway? On 14 April 2015 at 05:13, Jie Gao j@sydney.edu.au wrote: Hi Steve I got the src from trunk again and rebuilt httpd with --enable-maintainer-mode, just as you requested, and make test passed with my module! Didn't have to fiddle with httpd.conf as slotmem_shm_module wasn't commented out this time for some reason. Still had this when running make test with mod_perl: t/perl/ithreads3.t .. 1/6 # Failed test 3 in t/perl/ithreads3.t at line 32 # Failed test 4 in t/perl/ithreads3.t at line 33 # Failed test 5 in t/perl/ithreads3.t at line 35 t/perl/ithreads3.t .. Failed 3/6 subtests Thanks very much for your help! Regards, Jie * Steve Hay steve.m@googlemail.com wrote: Date: Mon, 13 Apr 2015 09:18:50 +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 Thanks for the extra information. I think the build with --enable-maintainer-mode succeeded simply because it doesn't include -DAP_DEBUG; the ap_strchr change was probably not related. It would be nice to allow building mod_perl with a httpd built with --enable-maintainer-mode, and in the light of Joe's comment I think we simply need to remove -DAP_DEBUG from the build flags. So please could you try rebuilding again using a clean mod_perl source tree (i.e. revert the ap_strchr change) but with the patch below applied to it, and using an --enable-maintainer-mode httpd? You may still have to fiddle with slotmem_shm_module as before (sorry, I do not know what the problem is there) and I wouldn't expect the two test failures to go away either, but I'm hopeful that this build might at least work. Index: lib/Apache2/Build.pm === --- lib/Apache2/Build.pm(revision 1673126) +++ lib/Apache2/Build.pm(working copy) @@ -616,6 +616,9 @@ my $extra_cppflags = $self-apxs_extra_cppflags; $ccopts .= . $extra_cppflags; +# Make sure the evil AP_DEBUG is not defined when building mod_perl +$ccopts =~ s/ ?-DAP_DEBUG\b//; + $ccopts; } On 13 April 2015 at 03:37, Jie Gao j@sydney.edu.au wrote: Hi Steve I took some time to look further into this problem: [Fri Apr 10 08:04:45.465468 2015] [proxy_balancer:emerg] [pid 19852:tid 140397405107968] AH01177: Failed to lookup provider 'shm' for 'slotmem': is mod_slotmem_shm loaded?? and I found that the apache build process does not allow slotmem_shm_module to be loaded by default, i.e. LoadModule slotmem_shm_module modules/mod_slotmem_shm.so was commented out in httpd.conf. Uncommenting that line made this problem go away. At the end of the process (with Apache built without --enable-maintainer-mode, and with ap_strchr replaced with strchr, which you suggested (but may not be necessary here without --enable-maintainer-mode, I could load my modules successfully. There were still some errors when running make test for mod_perl: ... t/hooks/authen_digest.t . 1/7 # Failed test 4 in t/hooks/authen_digest.t at line 36 # Failed test 5 in t/hooks/authen_digest.t at line 38 # Failed test 6 in t/hooks/authen_digest.t at line 42 # Failed test 7 in t/hooks/authen_digest.t at line 46 t/hooks/authen_digest.t . Failed 4/7 subtests ... t/perl/ithreads3.t .. 1/6 # Failed test 3 in t/perl/ithreads3.t at line 32 # Failed test 4 in t/perl/ithreads3.t at line 33 # Failed test 5 in t/perl/ithreads3.t at line 35 t/perl/ithreads3.t .. Failed 3/6 subtests Here is some more info: [12:26:07]jiegao@/usr/local/src/mod_perl:975 rm t/logs/error_log jiegao@/usr/local/src/mod_perl:976 t/TEST -v t/hooks/authen_digest.t t/perl/ithreads3.t [warning] setting ulimit to allow core files ulimit -c unlimited; /usr/local/bin/perl /usr/local/src/mod_perl-2.0/t/TEST -v 't/hooks/authen_digest.t' 't/perl/ithreads3.t' /usr/local/httpd-2.4.12/bin/httpd -d /usr/local/src/mod_perl-2.0/t -f /usr/local/src/mod_perl-2.0/t/conf/httpd.conf -D APACHE2 -D APACHE2_4 -D PERL_USEITHREADS using Apache/2.4.12 (worker MPM) waiting
Re: Trunk: APR.so won't load
Excellent! I guess that's fixed it then, so I will apply that patch. Many thanks for testing. On 14 April 2015 at 08:37, Jie Gao j@sydney.edu.au wrote: Hi Steve Yes, I applied the AP_DEBUG patch. Regards, Jie * Steve Hay steve.m@googlemail.com wrote: Date: Tue, 14 Apr 2015 08:32:29 +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 That's great news! Was that with the AP_DEBUG patch to lib/Apache2/Build.pm that I posted last time, or did it just work without that anyway? On 14 April 2015 at 05:13, Jie Gao j@sydney.edu.au wrote: Hi Steve I got the src from trunk again and rebuilt httpd with --enable-maintainer-mode, just as you requested, and make test passed with my module! Didn't have to fiddle with httpd.conf as slotmem_shm_module wasn't commented out this time for some reason. Still had this when running make test with mod_perl: t/perl/ithreads3.t .. 1/6 # Failed test 3 in t/perl/ithreads3.t at line 32 # Failed test 4 in t/perl/ithreads3.t at line 33 # Failed test 5 in t/perl/ithreads3.t at line 35 t/perl/ithreads3.t .. Failed 3/6 subtests Thanks very much for your help! Regards, Jie * Steve Hay steve.m@googlemail.com wrote: Date: Mon, 13 Apr 2015 09:18:50 +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 Thanks for the extra information. I think the build with --enable-maintainer-mode succeeded simply because it doesn't include -DAP_DEBUG; the ap_strchr change was probably not related. It would be nice to allow building mod_perl with a httpd built with --enable-maintainer-mode, and in the light of Joe's comment I think we simply need to remove -DAP_DEBUG from the build flags. So please could you try rebuilding again using a clean mod_perl source tree (i.e. revert the ap_strchr change) but with the patch below applied to it, and using an --enable-maintainer-mode httpd? You may still have to fiddle with slotmem_shm_module as before (sorry, I do not know what the problem is there) and I wouldn't expect the two test failures to go away either, but I'm hopeful that this build might at least work. Index: lib/Apache2/Build.pm === --- lib/Apache2/Build.pm(revision 1673126) +++ lib/Apache2/Build.pm(working copy) @@ -616,6 +616,9 @@ my $extra_cppflags = $self-apxs_extra_cppflags; $ccopts .= . $extra_cppflags; +# Make sure the evil AP_DEBUG is not defined when building mod_perl +$ccopts =~ s/ ?-DAP_DEBUG\b//; + $ccopts; } On 13 April 2015 at 03:37, Jie Gao j@sydney.edu.au wrote: Hi Steve I took some time to look further into this problem: [Fri Apr 10 08:04:45.465468 2015] [proxy_balancer:emerg] [pid 19852:tid 140397405107968] AH01177: Failed to lookup provider 'shm' for 'slotmem': is mod_slotmem_shm loaded?? and I found that the apache build process does not allow slotmem_shm_module to be loaded by default, i.e. LoadModule slotmem_shm_module modules/mod_slotmem_shm.so was commented out in httpd.conf. Uncommenting that line made this problem go away. At the end of the process (with Apache built without --enable-maintainer-mode, and with ap_strchr replaced with strchr, which you suggested (but may not be necessary here without --enable-maintainer-mode, I could load my modules successfully. There were still some errors when running make test for mod_perl: ... t/hooks/authen_digest.t . 1/7 # Failed test 4 in t/hooks/authen_digest.t at line 36 # Failed test 5 in t/hooks/authen_digest.t at line 38 # Failed test 6 in t/hooks/authen_digest.t at line 42 # Failed test 7 in t/hooks/authen_digest.t at line 46 t/hooks/authen_digest.t . Failed 4/7 subtests ... t/perl/ithreads3.t .. 1/6 # Failed test 3 in t/perl/ithreads3.t at line 32 # Failed test 4 in t/perl/ithreads3.t at line 33 # Failed test 5 in t/perl/ithreads3.t at line 35 t/perl/ithreads3.t .. Failed 3/6 subtests Here is some more info: [12:26:07]jiegao@/usr/local/src/mod_perl:975 rm t/logs/error_log jiegao@/usr/local/src/mod_perl:976 t/TEST -v t/hooks/authen_digest.t t/perl/ithreads3.t [warning] setting ulimit to allow core files ulimit -c unlimited; /usr/local/bin/perl /usr/local/src/mod_perl-2.0/t/TEST -v 't/hooks/authen_digest.t' 't/perl/ithreads3.t' /usr/local/httpd-2.4.12/bin/httpd -d /usr/local/src/mod_perl
Re: Trunk: APR.so won't load
That's great news! Was that with the AP_DEBUG patch to lib/Apache2/Build.pm that I posted last time, or did it just work without that anyway? On 14 April 2015 at 05:13, Jie Gao j@sydney.edu.au wrote: Hi Steve I got the src from trunk again and rebuilt httpd with --enable-maintainer-mode, just as you requested, and make test passed with my module! Didn't have to fiddle with httpd.conf as slotmem_shm_module wasn't commented out this time for some reason. Still had this when running make test with mod_perl: t/perl/ithreads3.t .. 1/6 # Failed test 3 in t/perl/ithreads3.t at line 32 # Failed test 4 in t/perl/ithreads3.t at line 33 # Failed test 5 in t/perl/ithreads3.t at line 35 t/perl/ithreads3.t .. Failed 3/6 subtests Thanks very much for your help! Regards, Jie * Steve Hay steve.m@googlemail.com wrote: Date: Mon, 13 Apr 2015 09:18:50 +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 Thanks for the extra information. I think the build with --enable-maintainer-mode succeeded simply because it doesn't include -DAP_DEBUG; the ap_strchr change was probably not related. It would be nice to allow building mod_perl with a httpd built with --enable-maintainer-mode, and in the light of Joe's comment I think we simply need to remove -DAP_DEBUG from the build flags. So please could you try rebuilding again using a clean mod_perl source tree (i.e. revert the ap_strchr change) but with the patch below applied to it, and using an --enable-maintainer-mode httpd? You may still have to fiddle with slotmem_shm_module as before (sorry, I do not know what the problem is there) and I wouldn't expect the two test failures to go away either, but I'm hopeful that this build might at least work. Index: lib/Apache2/Build.pm === --- lib/Apache2/Build.pm(revision 1673126) +++ lib/Apache2/Build.pm(working copy) @@ -616,6 +616,9 @@ my $extra_cppflags = $self-apxs_extra_cppflags; $ccopts .= . $extra_cppflags; +# Make sure the evil AP_DEBUG is not defined when building mod_perl +$ccopts =~ s/ ?-DAP_DEBUG\b//; + $ccopts; } On 13 April 2015 at 03:37, Jie Gao j@sydney.edu.au wrote: Hi Steve I took some time to look further into this problem: [Fri Apr 10 08:04:45.465468 2015] [proxy_balancer:emerg] [pid 19852:tid 140397405107968] AH01177: Failed to lookup provider 'shm' for 'slotmem': is mod_slotmem_shm loaded?? and I found that the apache build process does not allow slotmem_shm_module to be loaded by default, i.e. LoadModule slotmem_shm_module modules/mod_slotmem_shm.so was commented out in httpd.conf. Uncommenting that line made this problem go away. At the end of the process (with Apache built without --enable-maintainer-mode, and with ap_strchr replaced with strchr, which you suggested (but may not be necessary here without --enable-maintainer-mode, I could load my modules successfully. There were still some errors when running make test for mod_perl: ... t/hooks/authen_digest.t . 1/7 # Failed test 4 in t/hooks/authen_digest.t at line 36 # Failed test 5 in t/hooks/authen_digest.t at line 38 # Failed test 6 in t/hooks/authen_digest.t at line 42 # Failed test 7 in t/hooks/authen_digest.t at line 46 t/hooks/authen_digest.t . Failed 4/7 subtests ... t/perl/ithreads3.t .. 1/6 # Failed test 3 in t/perl/ithreads3.t at line 32 # Failed test 4 in t/perl/ithreads3.t at line 33 # Failed test 5 in t/perl/ithreads3.t at line 35 t/perl/ithreads3.t .. Failed 3/6 subtests Here is some more info: [12:26:07]jiegao@/usr/local/src/mod_perl:975 rm t/logs/error_log jiegao@/usr/local/src/mod_perl:976 t/TEST -v t/hooks/authen_digest.t t/perl/ithreads3.t [warning] setting ulimit to allow core files ulimit -c unlimited; /usr/local/bin/perl /usr/local/src/mod_perl-2.0/t/TEST -v 't/hooks/authen_digest.t' 't/perl/ithreads3.t' /usr/local/httpd-2.4.12/bin/httpd -d /usr/local/src/mod_perl-2.0/t -f /usr/local/src/mod_perl-2.0/t/conf/httpd.conf -D APACHE2 -D APACHE2_4 -D PERL_USEITHREADS using Apache/2.4.12 (worker MPM) waiting 300 seconds for server to start: .[Mon Apr 13 12:28:17.293771 2015] [env:warn] [pid 25085:tid 140715845183232] AH01506: PassEnv variable LD_LIBRARY_PATH was undefined [Mon Apr 13 12:28:17.319527 2015] [perl:info] [pid 25085:tid 140715845183232] 6 Apache2:: modules loaded [Mon Apr 13 12:28:17.319576 2015] [perl:info] [pid 25085:tid 140715845183232] 0 APR:: modules loaded [Mon Apr 13 12:28:17.319633 2015] [perl:info] [pid 25085:tid 140715845183232] base server
Re: Trunk: APR.so won't load
Hi Steve I got the src from trunk again and rebuilt httpd with --enable-maintainer-mode, just as you requested, and make test passed with my module! Didn't have to fiddle with httpd.conf as slotmem_shm_module wasn't commented out this time for some reason. Still had this when running make test with mod_perl: t/perl/ithreads3.t .. 1/6 # Failed test 3 in t/perl/ithreads3.t at line 32 # Failed test 4 in t/perl/ithreads3.t at line 33 # Failed test 5 in t/perl/ithreads3.t at line 35 t/perl/ithreads3.t .. Failed 3/6 subtests Thanks very much for your help! Regards, Jie * Steve Hay steve.m@googlemail.com wrote: Date: Mon, 13 Apr 2015 09:18:50 +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 Thanks for the extra information. I think the build with --enable-maintainer-mode succeeded simply because it doesn't include -DAP_DEBUG; the ap_strchr change was probably not related. It would be nice to allow building mod_perl with a httpd built with --enable-maintainer-mode, and in the light of Joe's comment I think we simply need to remove -DAP_DEBUG from the build flags. So please could you try rebuilding again using a clean mod_perl source tree (i.e. revert the ap_strchr change) but with the patch below applied to it, and using an --enable-maintainer-mode httpd? You may still have to fiddle with slotmem_shm_module as before (sorry, I do not know what the problem is there) and I wouldn't expect the two test failures to go away either, but I'm hopeful that this build might at least work. Index: lib/Apache2/Build.pm === --- lib/Apache2/Build.pm(revision 1673126) +++ lib/Apache2/Build.pm(working copy) @@ -616,6 +616,9 @@ my $extra_cppflags = $self-apxs_extra_cppflags; $ccopts .= . $extra_cppflags; +# Make sure the evil AP_DEBUG is not defined when building mod_perl +$ccopts =~ s/ ?-DAP_DEBUG\b//; + $ccopts; } On 13 April 2015 at 03:37, Jie Gao j@sydney.edu.au wrote: Hi Steve I took some time to look further into this problem: [Fri Apr 10 08:04:45.465468 2015] [proxy_balancer:emerg] [pid 19852:tid 140397405107968] AH01177: Failed to lookup provider 'shm' for 'slotmem': is mod_slotmem_shm loaded?? and I found that the apache build process does not allow slotmem_shm_module to be loaded by default, i.e. LoadModule slotmem_shm_module modules/mod_slotmem_shm.so was commented out in httpd.conf. Uncommenting that line made this problem go away. At the end of the process (with Apache built without --enable-maintainer-mode, and with ap_strchr replaced with strchr, which you suggested (but may not be necessary here without --enable-maintainer-mode, I could load my modules successfully. There were still some errors when running make test for mod_perl: ... t/hooks/authen_digest.t . 1/7 # Failed test 4 in t/hooks/authen_digest.t at line 36 # Failed test 5 in t/hooks/authen_digest.t at line 38 # Failed test 6 in t/hooks/authen_digest.t at line 42 # Failed test 7 in t/hooks/authen_digest.t at line 46 t/hooks/authen_digest.t . Failed 4/7 subtests ... t/perl/ithreads3.t .. 1/6 # Failed test 3 in t/perl/ithreads3.t at line 32 # Failed test 4 in t/perl/ithreads3.t at line 33 # Failed test 5 in t/perl/ithreads3.t at line 35 t/perl/ithreads3.t .. Failed 3/6 subtests Here is some more info: [12:26:07]jiegao@/usr/local/src/mod_perl:975 rm t/logs/error_log jiegao@/usr/local/src/mod_perl:976 t/TEST -v t/hooks/authen_digest.t t/perl/ithreads3.t [warning] setting ulimit to allow core files ulimit -c unlimited; /usr/local/bin/perl /usr/local/src/mod_perl-2.0/t/TEST -v 't/hooks/authen_digest.t' 't/perl/ithreads3.t' /usr/local/httpd-2.4.12/bin/httpd -d /usr/local/src/mod_perl-2.0/t -f /usr/local/src/mod_perl-2.0/t/conf/httpd.conf -D APACHE2 -D APACHE2_4 -D PERL_USEITHREADS using Apache/2.4.12 (worker MPM) waiting 300 seconds for server to start: .[Mon Apr 13 12:28:17.293771 2015] [env:warn] [pid 25085:tid 140715845183232] AH01506: PassEnv variable LD_LIBRARY_PATH was undefined [Mon Apr 13 12:28:17.319527 2015] [perl:info] [pid 25085:tid 140715845183232] 6 Apache2:: modules loaded [Mon Apr 13 12:28:17.319576 2015] [perl:info] [pid 25085:tid 140715845183232] 0 APR:: modules loaded [Mon Apr 13 12:28:17.319633 2015] [perl:info] [pid 25085:tid 140715845183232] base server + 32 vhosts ready to run tests ... waiting 300 seconds for server to start: ok (waited 2 secs) server localhost:8529 started server localhost:8530 listening (filter_out_apache) server localhost:8531
Re: Trunk: APR.so won't load
(no directives) [Mon Apr 13 12:28:22.021608 2015] [authz_core:debug] [pid 25093:tid 140715476645632] mod_authz_core.c(835): [client 127.0.0.1:47870] AH01628: authorization result: granted (no directives) [Mon Apr 13 12:28:22.024982 2015] [authz_core:debug] [pid 25093:tid 140715554629376] mod_authz_core.c(835): [client 127.0.0.1:47871] AH01628: authorization result: granted (no directives) [Mon Apr 13 12:28:22.028020 2015] [authz_core:debug] [pid 25093:tid 140715476645632] mod_authz_core.c(835): [client 127.0.0.1:47872] AH01628: authorization result: granted (no directives) [Mon Apr 13 12:28:22.030287 2015] [authz_core:debug] [pid 25093:tid 140715554629376] mod_authz_core.c(835): [client 127.0.0.1:47873] AH01628: authorization result: granted (no directives) [Mon Apr 13 12:28:22.030435 2015] [authz_core:debug] [pid 25093:tid 140715554629376] mod_authz_core.c(835): [client 127.0.0.1:47873] AH01628: authorization result: granted (no directives) [Mon Apr 13 12:28:22.246706 2015] [perl:info] [pid 25093:tid 140715845183232] Child process pid=25093 is exiting [Mon Apr 13 12:28:22.246890 2015] [perl:info] [pid 25093:tid 140715845183232] Child process pid=25093 is exiting - server push END in modperl_extra.pl, pid=25093 END in modperl_extra.pl, pid=25093 [Mon Apr 13 12:28:23.591699 2015] [core:info] [pid 25089:tid 140715845183232] AH00096: removed PID file /usr/local/src/mod_perl-2.0/t/logs/httpd.pid (pid=25089) [Mon Apr 13 12:28:23.591818 2015] [mpm_worker:notice] [pid 25089:tid 140715845183232] AH00295: caught SIGTERM, shutting down *** This is a test for Apache2::ServerUtil::server_shutdown_cleanup_register *** *** Following a line consisting only of * characters there should be a line *** *** containing *** *** cleanup died: testing server_shutdown_cleanup_register. *** *** The next line should then read *** *** done with server_shutdown_cleanup_register *** Apache2::ServerUtil: cleanup died: testing server_shutdown_cleanup_register *** done with server_shutdown_cleanup_register *** END in modperl_extra.pl, pid=25089 END in modperl_extra.pl, pid=25089 BTW, you can install VirtualBox on your Windows machine and have a linux virtual server for testing. Regards, Jie * Jie Gao j@sydney.edu.au wrote: Date: Fri, 10 Apr 2015 12:02:05 +1000 From: Jie Gao j@sydney.edu.au To: Steve Hay steve.m@googlemail.com CC: modperl@perl.apache.org modperl@perl.apache.org, mod_perl Dev d...@perl.apache.org Subject: Re: Trunk: APR.so won't load User-Agent: Mutt/1.5.21 (2010-09-15) Hi Steve I modified xs/Apache2/Module/Apache2__Module.h and replaced ap_strchr with strchr before recompiling. I still got the same error message after that. I re-compiled apache without enabling the maintainer mode: --- CC=gcc; export CC CFLAGS=-Wall -O3; export CFLAGS ./configure \ --prefix=/usr/local/httpd-2.4.12 \ --with-included-apr \ --with-mpm=worker \ --enable-auth-digest \ --enable-dav \ --enable-expires \ --enable-headers \ --enable-proxy-html \ --enable-xml2enc \ --enable-info \ --enable-mime-magic \ --enable-nonportable-atomics \ --enable-proxy \ --enable-proxy-balancer \ --enable-proxy-http \ --enable-rewrite \ --enable-so \ --enable-ssl \ --enable-unique-id \ --enable-vhost-alias \ --enable-modules=most \ --enable-mods-shared=most \ --enable-lbmethod-byrequests \ --enable-lbmethod-bytraffic \ --enable-lbmethod-bybusyness \ --enable-lbmethod-heartbeat \ --enable-heartmonitor \ --enable-watchdog \ --enable-ratelimit \ --enable-ext-filter \ --enable-request \ CC=gcc \ CFLAGS=-Wall -O3 \ $@ --- and got mod_perl source code from Trunk again. mod_perl then fails make test early on: --- [warning] setting ulimit to allow core files ulimit -c unlimited; /usr/local/bin/perl /usr/local/src/mod_perl-2.0_20150310_0709/t/TEST -clean APACHE_TEST_APXS= APACHE_TEST_PORT= APACHE_TEST_HTTPD= APACHE_TEST_GROUP= APACHE_TEST_USER= \ /usr/local/bin/perl -Iblib/arch -Iblib/lib \ t/TEST -bugreport -verbose=0 [warning] setting ulimit to allow core files ulimit -c unlimited; /usr/local/bin/perl /usr/local/src/mod_perl-2.0_20150310_0709/t/TEST -bugreport -verbose=0 /usr/local/httpd-2.4.12/bin/httpd -d /usr/local/src/mod_perl-2.0_20150310_0709/t -f /usr/local/src/mod_perl-2.0_20150310_0709/t/conf/httpd.conf -D APACHE2 -D PERL_USEITHREADS using Apache/2.4.12 (worker MPM) waiting 300 seconds for server to start: .[Fri Apr 10 08:04:42.875770 2015] [env:warn] [pid 19848
Re: Trunk: APR.so won't load
*** *** cleanup died: testing server_shutdown_cleanup_register.*** *** The next line should then read *** *** done with server_shutdown_cleanup_register *** Apache2::ServerUtil: cleanup died: testing server_shutdown_cleanup_register *** done with server_shutdown_cleanup_register *** END in modperl_extra.pl, pid=25089 END in modperl_extra.pl, pid=25089 BTW, you can install VirtualBox on your Windows machine and have a linux virtual server for testing. Regards, Jie * Jie Gao j@sydney.edu.au wrote: Date: Fri, 10 Apr 2015 12:02:05 +1000 From: Jie Gao j@sydney.edu.au To: Steve Hay steve.m@googlemail.com CC: modperl@perl.apache.org modperl@perl.apache.org, mod_perl Dev d...@perl.apache.org Subject: Re: Trunk: APR.so won't load User-Agent: Mutt/1.5.21 (2010-09-15) Hi Steve I modified xs/Apache2/Module/Apache2__Module.h and replaced ap_strchr with strchr before recompiling. I still got the same error message after that. I re-compiled apache without enabling the maintainer mode: --- CC=gcc; export CC CFLAGS=-Wall -O3; export CFLAGS ./configure \ --prefix=/usr/local/httpd-2.4.12 \ --with-included-apr \ --with-mpm=worker \ --enable-auth-digest \ --enable-dav \ --enable-expires \ --enable-headers \ --enable-proxy-html \ --enable-xml2enc \ --enable-info \ --enable-mime-magic \ --enable-nonportable-atomics \ --enable-proxy \ --enable-proxy-balancer \ --enable-proxy-http \ --enable-rewrite \ --enable-so \ --enable-ssl \ --enable-unique-id \ --enable-vhost-alias \ --enable-modules=most \ --enable-mods-shared=most \ --enable-lbmethod-byrequests \ --enable-lbmethod-bytraffic \ --enable-lbmethod-bybusyness \ --enable-lbmethod-heartbeat \ --enable-heartmonitor \ --enable-watchdog \ --enable-ratelimit \ --enable-ext-filter \ --enable-request \ CC=gcc \ CFLAGS=-Wall -O3 \ $@ --- and got mod_perl source code from Trunk again. mod_perl then fails make test early on: --- [warning] setting ulimit to allow core files ulimit -c unlimited; /usr/local/bin/perl /usr/local/src/mod_perl-2.0_20150310_0709/t/TEST -clean APACHE_TEST_APXS= APACHE_TEST_PORT= APACHE_TEST_HTTPD= APACHE_TEST_GROUP= APACHE_TEST_USER= \ /usr/local/bin/perl -Iblib/arch -Iblib/lib \ t/TEST -bugreport -verbose=0 [warning] setting ulimit to allow core files ulimit -c unlimited; /usr/local/bin/perl /usr/local/src/mod_perl-2.0_20150310_0709/t/TEST -bugreport -verbose=0 /usr/local/httpd-2.4.12/bin/httpd -d /usr/local/src/mod_perl-2.0_20150310_0709/t -f /usr/local/src/mod_perl-2.0_20150310_0709/t/conf/httpd.conf -D APACHE2 -D PERL_USEITHREADS using Apache/2.4.12 (worker MPM) waiting 300 seconds for server to start: .[Fri Apr 10 08:04:42.875770 2015] [env:warn] [pid 19848:tid 140397405107968] AH01506: PassEnv variable LD_LIBRARY_PATH was undefined [Fri Apr 10 08:04:42.900978 2015] [perl:info] [pid 19848:tid 140397405107968] 6 Apache2:: modules loaded [Fri Apr 10 08:04:42.901033 2015] [perl:info] [pid 19848:tid 140397405107968] 0 APR:: modules loaded [Fri Apr 10 08:04:42.901092 2015] [perl:info] [pid 19848:tid 140397405107968] base server + 32 vhosts ready to run tests . waiting 300 seconds for server to start: not ok [ error] giving up after 301 secs. If you think that your system is slow or overloaded try again with a longer timeout value. by setting the environment variable APACHE_TEST_STARTUP_TIMEOUT to a high value (e.g. 600) and repeat the last command. [ error] server failed to start! (please examine t/logs/error_log) ++ | Please file a bug report: http://perl.apache.org/bugs/ | ++ make: *** [run_tests] Error 1 [08:09:44]jiegao@/usr/local/src/mod_perl-2.0_20150310_0709:822 ls -l t/logs/error_log -rw-r--r--. 1 jiegao jiegao 1243 Apr 10 08:04 t/logs/error_log [08:10:01]jiegao@/usr/local/src/mod_perl-2.0_20150310_0709:823 cat !$ jiegao@/usr/local/src/mod_perl-2.0_20150310_0709:823 cat t/logs/error_log *** This is a test for Apache2::ServerUtil::server_shutdown_cleanup_register *** *** Following a line consisting only of * characters there should be a line *** *** containing
Re: Trunk: APR.so won't load
: Configuration Failed, exiting --- Adding --enable-maintainer-mode and re-compliling apache, I could get make test going as before. Regards, Jie * Steve Hay steve.m@googlemail.com wrote: Date: Thu, 9 Apr 2015 18:27:51 +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 Actually, I don't think there is anything stopping -DAP_DEBUG from coming through from the httpd config. The change that was made (r357052) just stopped mod_perl from adding that itself when MP_MAINTAINER is specified. But maybe we do need to filter out -DAP_DEBUG? Or else stop using ap_strchr() and just use strchr() directly? Could you try the latter, since it seems like an easy fix? -- Change the one instance of ap_strchr() in xs/Apache2/Module/Apache2__Module.h to be strchr() instead and then rebuild. Does that make the problem go away? On 9 April 2015 at 18:16, Steve Hay steve.m@googlemail.com wrote: 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
Re: Trunk: APR.so won't load
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 0 0 0 [ Lines removed for clarity ] Dynamic section at offset 0x36f8 contains 27 entries: TagType Name/Value 0x0001 (NEEDED) Shared library: [libaprutil-1.so.0] 0x0001 (NEEDED) Shared library: [libexpat.so.1] 0x0001 (NEEDED) Shared library: [libapr-1.so.0] 0x0001 (NEEDED) Shared library: [librt.so.1] 0x0001 (NEEDED
Re: Trunk: APR.so won't load
Actually, I don't think there is anything stopping -DAP_DEBUG from coming through from the httpd config. The change that was made (r357052) just stopped mod_perl from adding that itself when MP_MAINTAINER is specified. But maybe we do need to filter out -DAP_DEBUG? Or else stop using ap_strchr() and just use strchr() directly? Could you try the latter, since it seems like an easy fix? -- Change the one instance of ap_strchr() in xs/Apache2/Module/Apache2__Module.h to be strchr() instead and then rebuild. Does that make the problem go away? On 9 April 2015 at 18:16, Steve Hay steve.m@googlemail.com wrote: 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
Re: Trunk: APR.so won't load
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 0 0 0 [ Lines removed for clarity ] Dynamic section at offset 0x36f8 contains 27 entries: TagType Name/Value 0x0001 (NEEDED) Shared library: [libaprutil-1.so.0] 0x0001 (NEEDED) Shared library: [libexpat.so.1] 0x0001 (NEEDED) Shared library: [libapr-1.so.0] 0x0001 (NEEDED) Shared library: [librt.so.1] 0x0001 (NEEDED) Shared library: [libcrypt.so.1] 0x0001 (NEEDED) Shared library: [libpthread.so.0] 0x0001 (NEEDED) Shared library: [libc.so.6] 0x000f (RPATH) Library rpath: [/usr/local/httpd-2.4.12/lib:/lib/../lib64] [ Lines removed for clarity
Re: Trunk: APR.so won't load
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 0 0 0 [ Lines removed for clarity ] Dynamic section at offset 0x36f8 contains 27 entries: TagType Name/Value 0x0001 (NEEDED) Shared library: [libaprutil-1.so.0] 0x0001 (NEEDED) Shared library: [libexpat.so.1] 0x0001 (NEEDED) Shared library: [libapr-1.so.0] 0x0001 (NEEDED) Shared library: [librt.so.1] 0x0001 (NEEDED) Shared library: [libcrypt.so.1] 0x0001 (NEEDED) Shared library: [libpthread.so.0] 0x0001 (NEEDED) Shared library: [libc.so.6] 0x000f (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. ValueSym. Name + Addend 00203930 00020007 R_X86_64_JUMP_SLO Perl_mg_get + 0 00203938 00030007 R_X86_64_JUMP_SLO Perl_sv_setiv + 0 00203940 00040007 R_X86_64_JUMP_SLO Perl_sv_bless + 0 00203948 00050007 R_X86_64_JUMP_SLO apr_strerror + 0 00203950 00060007 R_X86_64_JUMP_SLO Perl_require_pv + 0 00203958 00070007 R_X86_64_JUMP_SLO Perl_warn + 0 00203960 00080007 R_X86_64_JUMP_SLO PerlIO_printf + 0 00203968 00090007 R_X86_64_JUMP_SLO ap_strchr + 0 [ Lines removed for clarity ] Symbol table '.dynsym' contains 86 entries: Num:Value Size TypeBind Vis Ndx Name 0: 0 NOTYPE LOCAL DEFAULT UND 1: 18b8 0 SECTION LOCAL DEFAULT9 2: 0 NOTYPE GLOBAL DEFAULT UND Perl_mg_get 3: 0 NOTYPE GLOBAL DEFAULT UND Perl_sv_setiv 4: 0 NOTYPE GLOBAL DEFAULT UND Perl_sv_bless 5: 0 FUNCGLOBAL DEFAULT UND apr_strerror 6: 0 NOTYPE GLOBAL DEFAULT UND Perl_require_pv 7: 0 NOTYPE GLOBAL DEFAULT UND Perl_warn 8: 0 NOTYPE GLOBAL DEFAULT UND PerlIO_printf 9: 0 NOTYPE GLOBAL DEFAULT UND ap_strchr [ Lines removed for clarity ] Symbol table '.symtab' contains 143 entries: Num:Value Size TypeBind Vis Ndx Name 0: 0 NOTYPE LOCAL DEFAULT UND 1: 0190 0 SECTION LOCAL DEFAULT1 [ Lines removed for clarity ] 69: 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