> Please try this patch:
>
> Index: src/modules/perl/Table.xs
> ===================================================================
> RCS file: /home/cvs/modperl/src/modules/perl/Table.xs,v
> retrieving revision 1.10
> diff -u -r1.10 Table.xs
> --- src/modules/perl/Table.xs 23 May 2000 15:56:12 -0000 1.10
> +++ src/modules/perl/Table.xs 10 Nov 2003 19:46:55 -0000
> @@ -114,9 +114,10 @@
> Apache__Table tab;
>
> CODE:
> - tab = (Apache__Table)hvrv2table(self);
> - if(SvROK(self) && SvTYPE(SvRV(self)) == SVt_PVHV)
> + if(SvROK(self) && SvTYPE(SvRV(self)) == SVt_PVHV) {
> + tab = (Apache__Table)hvrv2table(self);
> safefree(tab);
> + }
>
> void
> FETCH(self, key)
Thanks for the reply. Unfortunately the patch didn't resolve the
problem. The backtrace does look somewhat different, its making some
new calls before the segfault that it wasn't before. Numbers 4-13 show
differently:
GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)
This GDB was configured as "i386-redhat-linux-gnu"...
(gdb) run -X -f /usr/skynet/conf/httpd.conf
Starting program: /usr/skynet/bin/httpd -X -f
/usr/skynet/conf/httpd.conf
Program received signal SIGSEGV, Segmentation fault.
0x0807698b in hvrv2table (rv=0x0) at perl_util.c:101
101 return (table *)SvIV((SV*)SvRV(rv));
(gdb) bt
#0 0x0807698b in hvrv2table (rv=0x0) at perl_util.c:101
#1 0x080889b6 in XS_Apache__Table_DESTROY (cv=0x81ad57c) at Table.c:150
#2 0x0810b6c5 in Perl_pp_entersub ()
#3 0x080ba310 in S_call_body ()
#4 0x080ba0ea in Perl_call_sv ()
#5 0x08112b27 in Perl_sv_clear ()
#6 0x08112d4f in Perl_sv_free ()
#7 0x081126af in Perl_sv_clear ()
#8 0x08112d4f in Perl_sv_free ()
#9 0x081031b1 in Perl_hv_free_ent ()
#10 0x081032f2 in S_hfreeentries ()
#11 0x08103c93 in Perl_hv_undef ()
#12 0x08112961 in Perl_sv_clear ()
#13 0x08112d4f in Perl_sv_free ()
#14 0x08117991 in Perl_sv_clean_objs ()
#15 0x080b89f4 in perl_destruct ()
#16 0x0806bd6c in perl_shutdown (s=0x819d0cc, p=0x8deca64) at
mod_perl.c:294
#17 0x0806ff43 in perl_child_exit_cleanup (data=0x80000) at
mod_perl.c:926
#18 0x0808a8e0 in run_cleanups (c=0x8decbfc) at alloc.c:1745
#19 0x0808917f in ap_clear_pool (a=0x8deca64) at alloc.c:541
#20 0x080891fc in ap_destroy_pool (a=0x8deca64) at alloc.c:571
#21 0x080965ca in clean_child_exit (code=0) at http_main.c:528
#22 0x08099429 in child_main (child_num_arg=0) at http_main.c:4367
#23 0x080999b6 in make_child (s=0x819d0cc, slot=0, now=1068497097) at
http_main.c:4768
#24 0x08099b1c in startup_children (number_to_start=5) at
http_main.c:4850
#25 0x0809a1b9 in standalone_main (argc=4, argv=0xbfffe2c4) at
http_main.c:5169
#26 0x0809a9d7 in main (argc=4, argv=0xbfffe2c4) at http_main.c:5511
#27 0x420156a4 in __libc_start_main () from /lib/tls/libc.so.6
(gdb) list
5511 STANDALONE_MAIN(argc, argv);
5512 }
5513 #else
5514 if (!tpf_child) {
5515 memcpy(tpf_server_name, input_parms.parent.servname,
5516 INETD_SERVNAME_LENGTH);
5517 tpf_server_name[INETD_SERVNAME_LENGTH + 1] = '\0';
5518 sprintf(tpf_mutex_key, "%.*x", TPF_MUTEX_KEY_SIZE - 1,
getpid());
5519 tpf_parent_pid = getppid();
5520 ap_open_logs(server_conf, plog);
We rebuilt the server using new clean tarballs of apache and mod_perl.
Thanks again for your help.
Marc Slagle
Whapps, LLC
--
Reporting bugs: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html