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

Reply via email to