> 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

Reply via email to