Philippe,
Thank you for your help. Please find the gdb
output below. m doesn't seem to point to
anything.
Here is some more information that may be relevant.
(1) The segfault seems to happen *after* the http session
is complete, perhaps during some destroy/garbage-collect
sequence. That is, the browser gets what it asks for.
If you have tens of server children, the user does not
feel that anything is amiss.
(2) When I configure the /perl/ directory to be the
equivalent of /cgi-bin/ (ScriptAlias), all seems to
be fine; no error messages in the log.
(3) here is the end of http.conf:
===========================================
LoadModule perl_module modules/mod_perl.so
<Directory "/usr/local/apache2/perl">
AllowOverride None
Order allow,deny
Allow from all
</Directory>
PerlModule ModPerl::Registry
Alias /perl/ /usr/local/apache2/perl/
<Location /perl/>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
</Location>
PerlSwitches -wT
#PerlTrace all
CoreDumpDirectory /tmp
==========================================
On 10/21/05, Philippe M. Chiasson <[EMAIL PROTECTED]> wrote:
> Ali ISIK wrote:
> > -------------8<---------- Start Bug Report ------------8<----------
> > 1. Problem Description:
> >
> > I am building a web application with a Postgres backend using
> > Class::DBI. Some scripts generate repeatable Segmentation
> > Faults on their second invocation. I tried compiling everything
> > with cc and then compiling everything with gcc. Still the same
> > segfaults. Perl, Apache, mod_perl and the CPAN modules are
> > all the latest stable versions.
>
> Any chance at reducing these scripts to a short example that causes
> this bug ?
>
There are so many modules that you would curse at me
if I sent you all that stuff. I can create a tarball of the
used modules and send that as an attachment, but
even that would require some work, as I would like
to reduce the info-noise as much as possible.
Please tell me if you would like this.
> > [...]
> >
> > 3. This is the core dump trace: (if you get a core dump):
> >
> > (gdb) where
> > #0 ap_get_module_config (cv=0x30303320, m=0x30303320) at util_debug.c:106
> > #1 0x40331f30 in Perl_pp_entersub () at pp_hot.c:2888
> > #2 0x40314b9d in Perl_runops_debug () at dump.c:1452
> > #3 0x402c48fa in S_call_body (myop=0xbfffeea0, is_eval=0) at perl.c:2364
> > #4 0x402c4577 in Perl_call_sv (sv=0x8173398, flags=4) at perl.c:2282
> > #5 0x402a7303 in modperl_callback (handler=0x8130b30, p=0x825f880,
> > r=0x825f8b8, s=0x80bd848, args=0x8777914)
> > at modperl_callback.c:100
> > #6 0x402a7a0e in modperl_callback_run_handlers (idx=6, type=4,
> > r=0x825f8b8, c=0x0, s=0x80bd848, pconf=0x0, plog=0x0, ptemp=0x0,
> > run_mode=MP_HOOK_RUN_FIRST) at modperl_callback.c:261
> > #7 0x402a7de5 in modperl_callback_per_dir (idx=6, r=0x825f8b8,
> > run_mode=MP_HOOK_RUN_FIRST) at modperl_callback.c:368
> > #8 0x402a34ee in modperl_response_handler_run (r=0x825f8b8, finish=0)
> > at mod_perl.c:979
> > #9 0x402a379b in modperl_response_handler_cgi (r=0x825f8b8) at
> > mod_perl.c:1074
> > #10 0x0807eafb in ap_run_handler (r=0x825f8b8) at config.c:152
> > #11 0x08081535 in ap_invoke_handler (r=0x825f8b8) at config.c:364
> > #12 0x0806e0df in ap_process_request (r=0x825f8b8) at http_request.c:249
> > #13 0x08069669 in ap_process_http_connection (c=0x8257970) at
> > http_core.c:251
> > #14 0x08088acb in ap_run_process_connection (c=0x8257970) at connection.c:43
> > #15 0x0807dc08 in child_main (child_num_arg=<value optimized out>) at
> > prefork.c:610
> > #16 0x0807dd91 in make_child (s=<value optimized out>, slot=0) at
> > prefork.c:704
> > #17 0x0807de21 in startup_children (number_to_start=5) at prefork.c:722
> > #18 0x0807e4ed in ap_mpm_run (_pconf=0x80b90a8, plog=0x80f1188,
> > s=0x80bd848) at prefork.c:941
> > #19 0x080836fc in main (argc=3, argv=0xbffff444) at main.c:618
> > (gdb) define curinfo
> > Type commands for definition of "curinfo".
> > End with a line saying just "end".
> >
> >> printf "%d:%s\n", PL_curcop->cop_line, \
> >
> > ((XPV*)(*(XPVGV*)PL_curcop->cop_filegv->sv_any)\
> > ->xgv_gp->gp_sv->sv_any)->xpv_pv
> >
> >> end
> >
> > (gdb) curinfo
> > 62:(eval 26)
> > (gdb)
>
> Can you :
>
> (gdb) print *m
> (gdb) print *cv
>
> ?
(gdb) run -X
Starting program: /usr/local/apache2/bin/httpd -X
[Thread debugging using libthread_db enabled]
[New Thread 1076002208 (LWP 18474)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1076002208 (LWP 18474)]
ap_get_module_config (cv=0x2, m=0x2) at util_debug.c:106
106 return ((void **)cv)[m->module_index];
(gdb) print *m
Cannot access memory at address 0x2
(gdb) print *cv
$1 = <incomplete type>
Ali ISIK