Chris, that seems to have solved my problems. Though, I used the package env config as described in the Gentoo Wiki ( http://wiki.gentoo.org/wiki//etc/portage/env). For those having this problem, simple create the following problems and rebuild perl and mod_perl
/etc/portage/env/www-apache_mod_perl.conf: CFLAGS="${CFLAGS} -D_FILE_OFFSET_BITS=64" /etc/portage/package.env: www-apache/mod_perl www-apache_mod_perl.conf dev-lang/perl www-apache_mod_perl.conf Now, I wasn't sure if adding the www-apache/mod_perl was required or not, but I included it anyway. So, mod_perl builds fine and apache is running. I have other problems related to Bugzilla and perl modules, but I don't think it's related. I will follow up if it is. Thank you, everyone! I could not have figured this out without your help. Much appreciated. On Wed, Jun 27, 2012 at 6:00 PM, Christopher Hall <cha...@gmail.com> wrote: > I've been seeing the same problem on Gentoo. I think this is the same > issue as described at > http://www.gossamer-threads.com/lists/perl/porters/263222 . > > When perl is compiled, the optimisation switches in the CFLAGS in > make.conf are used, together with some autodetected ones. When perl > modules, such as mod_perl, are built later, the CFLAGS from the > currently-installed perl are extracted, and used by themselves, > without the autodetected ones. > > In this case, the perl compilation was using my CFLAGS, together with > -D_FILE_OFFSET_BITS=64 (among other things). But mod_perl (and all > other perl modules written in C) are only picking up the CFLAGS. This > causes a difference in ABI, and hence the crash. > > If I add -D_FILE_OFFSET_BITS=64 to the end of my CFLAGS in make.conf, > and recompile perl, then this define still gets added to the compiler > switches -- where it does no harm being specified twice. If I then > recompile mod_perl, this now includes that switch, after which > everything works fine. > > I've since created /etc/portage/env/dev-lang/perl with > CFLAGS="$(CFLAGS) -D_FILE_OFFSET_BITS=64" to save having to alter the > make.conf globally. This approach ought to be sufficient, but I > haven't had chance to test it. > > In case it's useful to anyone, here is the stack trace I was getting > before fixing the problem: > > # gdb --args apache2 -D DEFAULT_VHOST -D PERL > GNU gdb (Gentoo 7.4.1 p1) 7.4.1 > Copyright (C) 2012 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later < > http://gnu.org/licenses/gpl.html> > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. Type "show copying" > and "show warranty" for details. > This GDB was configured as "i686-pc-linux-gnu". > For bug reporting instructions, please see: > <http://bugs.gentoo.org/>... > Reading symbols from /usr/sbin/apache2...Reading symbols from > /usr/lib/debug/usr/sbin/apache2.debug...done. > done. > (gdb) r > Starting program: /usr/sbin/apache2 -D DEFAULT_VHOST -D PERL > warning: Could not load shared library symbols for linux-gate.so.1. > Do you need "set solib-search-path" or "set sysroot"? > [Thread debugging using libthread_db enabled] > Using host libthread_db library "/lib/libthread_db.so.1". > > Program received signal SIGSEGV, Segmentation fault. > 0xb7f0f174 in modperl_env_clear (my_perl=0x8227330) at modperl_env.c:100 > 100 HV *hv = ENVHV; > (gdb) where > #0 0xb7f0f174 in modperl_env_clear (my_perl=0x8227330) at > modperl_env.c:100 > #1 0xb7efcfea in modperl_boot (my_perl=0x8227330, data=0x0) at > mod_perl.c:100 > #2 0xb7e01681 in Perl_leave_scope (my_perl=0x8227330, base=0) at > scope.c:970 > #3 0xb7e024f3 in Perl_pop_scope (my_perl=0x8227330) at scope.c:110 > #4 0xb7d5714b in S_parse_body (xsinit=0xb7efcf70 <modperl_xs_init>, > env=0x0, my_perl=0x8227330) at perl.c:2270 > #5 perl_parse (my_perl=0x8227330, xsinit=0xb7efcf70 > <modperl_xs_init>, argc=2, argv=0x81862d0, env=0x0) at perl.c:1633 > #6 0xb7efd3a6 in modperl_startup (s=0x80b9c08, p=0x80b40a8) at > mod_perl.c:255 > #7 0xb7efd31c in modperl_startup (s=0x80b9c08, p=0x80b40a8) at > mod_perl.c:207 > #8 0xb7efd856 in modperl_init (base_server=0x80b9c08, p=0x80b40a8) at > mod_perl.c:458 > #9 0xb7efda0e in modperl_hook_init (s=0x80b9c08, pconf=0x80b40a8, > plog=<optimized out>, ptemp=<optimized out>) at mod_perl.c:631 > #10 modperl_hook_init (pconf=0x80b40a8, plog=0x80e2160, > ptemp=0x80e4168, s=0x80b9c08) at mod_perl.c:608 > #11 0x0807d589 in ap_run_open_logs (pconf=0x80b40a8, plog=0x80e2160, > ptemp=0x80e4168, s=0x80b9c08) at config.c:151 > #12 0x080680d3 in main (argc=5, argv=0xbfffe3e4) at main.c:680 > (gdb) list > 95 } > 96 } > 97 > 98 void modperl_env_clear(pTHX) > 99 { > 100 HV *hv = ENVHV; > 101 U32 mg_flags; > 102 > 103 modperl_env_untie(mg_flags); > 104 > (gdb) disassemble > Dump of assembler code for function modperl_env_clear: > 0xb7f0f150 <+0>: sub $0x1c,%esp > 0xb7f0f153 <+3>: mov %esi,0x14(%esp) > 0xb7f0f157 <+7>: mov 0x20(%esp),%esi > 0xb7f0f15b <+11>: mov %ebx,0x10(%esp) > 0xb7f0f15f <+15>: call 0xb7efc977 <__i686.get_pc_thunk.bx> > 0xb7f0f164 <+20>: add $0x17e90,%ebx > 0xb7f0f16a <+26>: mov %edi,0x18(%esp) > 0xb7f0f16e <+30>: mov 0x2ec(%esi),%eax > => 0xb7f0f174 <+36>: mov 0xc(%eax),%eax > 0xb7f0f177 <+39>: mov 0x14(%eax),%eax > 0xb7f0f17a <+42>: mov 0x8(%eax),%edi > 0xb7f0f17d <+45>: mov %edi,%edx > 0xb7f0f17f <+47>: and $0xe00000,%edi > 0xb7f0f185 <+53>: and $0xff1fffff,%edx > 0xb7f0f18b <+59>: mov %edx,0x8(%eax) > 0xb7f0f18e <+62>: mov %eax,0x4(%esp) > 0xb7f0f192 <+66>: mov %esi,(%esp) > 0xb7f0f195 <+69>: call 0xb7efc3d0 <Perl_hv_clear@plt> > 0xb7f0f19a <+74>: mov 0x2ec(%esi),%eax > 0xb7f0f1a0 <+80>: mov 0xc(%eax),%eax > 0xb7f0f1a3 <+83>: mov 0x14(%eax),%eax > 0xb7f0f1a6 <+86>: or %edi,0x8(%eax) > 0xb7f0f1a9 <+89>: mov 0x10(%esp),%ebx > 0xb7f0f1ad <+93>: mov 0x14(%esp),%esi > 0xb7f0f1b1 <+97>: mov 0x18(%esp),%edi > 0xb7f0f1b5 <+101>: add $0x1c,%esp > 0xb7f0f1b8 <+104>: ret > End of assembler dump. > (gdb) info registers > eax 0x0 0 > ecx 0x0 0 > edx 0x822ed28 136506664 > ebx 0xb7f26ff4 -1208848396 > esp 0xbfffde40 0xbfffde40 > ebp 0x80b9c08 0x80b9c08 > esi 0x8227330 136475440 > edi 0x80b40a8 134955176 > eip 0xb7f0f174 0xb7f0f174 <modperl_env_clear+36> > eflags 0x10282 [ SF IF RF ] > cs 0x73 115 > ss 0x7b 123 > ds 0x7b 123 > es 0x7b 123 > fs 0x0 0 > gs 0x33 51 > (gdb) c > Continuing. > > Program terminated with signal SIGSEGV, Segmentation fault. > The program no longer exists. > (gdb) q >