Hi,

I'm in the process of upgrading our servers (hoping to replace Stronghold
with mod_ssl) and I came across a problem with a segfaulting httpd.

I'm using:

  apache_1.3.11
  openssl-0.9.4
  mod_ssl-2.5.0-1.3.11
  mod_perl-1.21
  HTML-Embperl-1.2.1


After some number of requests (sometimes the first request to a particular
process, sometimes more), httpd segfaults.  I don't believe that this is
related to mod_ssl in any way, and have tested it without mod_ssl linked.  

I am currently using DSO for mod_ssl and mod_perl.  However, even when I
statically link those modules (or just mod_perl) I have the same issue.

Mod_perl was configured with:

$ perl Makefile.PL \
          EVERYTHING=1 \
          USE_APACI=1 \
          APACHE_SRC=../apache-1.3.11/src \
          DO_HTTPD=1 \
          PREP_HTTPD=1 \
          USE_DSO = 1

Apache was configured with:

$ ./configure --activate-module=src/modules/perl/libperl.a \
                 --enable-shared=perl \
                 --enable-module=ssl \
                 --enable-shared=ssl \
                 --enable-module=info \
                 --enable-shared=info

http.conf contains:

   PerlWarn on
   PerlModule Apache::StatINC
   PerlInitHandler Apache::StatINC

And I'm using in a <Location/>:  

   SetHandler perl-script
   PerlHandler Apache::Registry
   PerlSendHeader On



I compiled everything with debugging symbols, and here one of the stack
traces I get when it faults on the first request (as shown under gdb,
running as httpd -X):

#0  0x402b43b9 in Perl_pp_method () from
/usr/local/apache/libexec/libperl.so
#1  0x402dd92d in Perl_runops_standard () from
/usr/local/apache/libexec/libperl.so
#2  0x40285df1 in perl_call_sv () from
/usr/local/apache/libexec/libperl.so
#3  0x4026d372 in perl_call_handler (sv=0x8c986cc, r=0x8c19964,
args=0x0) at mod_perl.c:1510
#4  0x4026cc96 in perl_run_stacked_handlers (hook=0x402dde19
"PerlHandler", r=0x8c19964, handlers=0x8c3a418) at mod_perl.c:1239
#5  0x4026b984 in perl_handler (r=0x8c19964) at mod_perl.c:802
#6  0x806c733 in ap_invoke_handler (r=0x8c19964) at http_config.c:508
#7  0x807fbd9 in process_request_internal (r=0x8c19964) at
http_request.c:1215
#8  0x807fc3c in ap_process_request (r=0x8c19964) at http_request.c:1231
#9  0x807757e in child_main (child_num_arg=0) at http_main.c:4267
#10 0x807772c in make_child (s=0x80cdba4, slot=0, now=948822765) at
http_main.c:4380
#11 0x8077889 in startup_children (number_to_start=5) at http_main.c:4462
#12 0x8077eb6 in standalone_main (argc=2, argv=0xbffff9a4) at
http_main.c:4750
#13 0x8078653 in main (argc=2, argv=0xbffff9a4) at http_main.c:5087





Here is the trace I get when it faults on a subsequent request:

#0  0x400c1d21 in chunk_free (ar_ptr=0x97ff380, p=0x9829688) at
malloc.c:3121
#1  0x400c1a6a in __libc_free (mem=0x9829690) at malloc.c:3023
#2  0x402a69cc in Perl_safefree () from
/usr/local/apache/libexec/libperl.so
#3  0x402ad9af in Perl_hv_undef () from
/usr/local/apache/libexec/libperl.so
#4  0x402b8026 in Perl_sv_clear () from
/usr/local/apache/libexec/libperl.so
#5  0x402b81dc in Perl_sv_free () from
/usr/local/apache/libexec/libperl.so
#6  0x402c57b7 in Perl_free_tmps () from
/usr/local/apache/libexec/libperl.so
#7  0x402af70d in Perl_pp_nextstate () from
/usr/local/apache/libexec/libperl.so
#8  0x402dd92d in Perl_runops_standard () from
/usr/local/apache/libexec/libperl.so
#9  0x40285df1 in perl_call_sv () from
/usr/local/apache/libexec/libperl.so
#10 0x4026d372 in perl_call_handler (sv=0x8c9868c, r=0x8c1994c,
args=0x0) at mod_perl.c:1510
#11 0x4026cc96 in perl_run_stacked_handlers (hook=0x402dde19
"PerlHandler", r=0x8c1994c, handlers=0x8c3a400) at mod_perl.c:1239
#12 0x4026b984 in perl_handler (r=0x8c1994c) at mod_perl.c:802
#13 0x806c733 in ap_invoke_handler (r=0x8c1994c) at http_config.c:508
#14 0x807fbd9 in process_request_internal (r=0x8c1994c) at
http_request.c:1215
#15 0x807fc3c in ap_process_request (r=0x8c1994c) at http_request.c:1231
#16 0x807757e in child_main (child_num_arg=0) at http_main.c:4267
#17 0x807772c in make_child (s=0x80cdba4, slot=0, now=948823802) at
http_main.c:4380
#18 0x8077889 in startup_children (number_to_start=5) at http_main.c:4462
#19 0x8077eb6 in standalone_main (argc=2, argv=0xbffff9a4) at
http_main.c:4750
#20 0x8078653 in main (argc=2, argv=0xbffff9a4) at http_main.c:5087




Note that there are a number of new variables here.  I haven't used
mod_ssl with an earlier version of apache, and this is also the first time
I've used a shared mod_perl.  However, since it doesn't seem to be related
to the fact that mod_perl is shared, or that I'm using mod_ssl, it may be
due issues with apache_1.3.11 and mod_perl-1.21.  Further, this happens
even if I don't call a page that uses HTML::Embperl.  However, it does
*not* segfault if I serve static files that don't touch mod_perl.


Obviously this isn't a lot to go on, but I'm wondering if anyone has had a
similar experience, or has any suggestions or thoughts.  I can try to
reproduce this with a scaled back server (no SSL and a static mod_perl) if
that helps.

-DeWitt



Reply via email to