Hi,

I've been troubleshooting a problem with:

  perl-5.6.1       (no-threads)
  apache-1.3.26
  mod_perl-1.27
  HPUX 11
  Compiler: cc/ansic (HP92453-01 A.11.01.00 HP C Compiler)

Please let me know if there is additional info that I can provide that
might help tracking down this problem!

Problem:

Apache child process dies with SIGSEGV, error logged in apache's
error_log(Program received signal SIGSEGV, Segmentation fault.):

    [Tue Sep 10 03:00:33 2002] [notice] child pid 14985 exit signal
      Segmentation fault (11)

This seems to happen with mod_perl at random intervals and the problem
seems to typically come back to SIGALRM handling from what I can tell.

The place that gdb says it blows up is at http_main.c:4302 which says:

        ap_kill_timeout(0);     /* Cancel any outstanding alarms. */


Here is the stack trace (full):

(gdb) where full
#0  0xe67e0 in child_main (child_num_arg=0) at http_main.c:4302
        conn_io = (struct buff_struct *) 0x40070968
        r = (struct request_rec *) 0x0
        clen = 16
        sa_server = {sa_family = 2,
  sa_data = "\037\232\f\236\215$\000\000\000\000\000\000\000"}
        sa_client = {sa_family = 2,
  sa_data = "\320\205\f\236\215$\000\000\000\000\000\000\000"}
        lr = (struct listen_rec *) 0x0
#1  0xe778c in make_child (s=0x400640b8, slot=0, now=1031620784)
    at http_main.c:4765
        pid = 0
#2  0xe78b8 in startup_children (number_to_start=1) at
http_main.c:4792
        i = 0
        now = 1031620784
#3  0xe84d0 in standalone_main (argc=1, argv=0x7f7f03d4) at
http_main.c:5100
        remaining_children_to_start = 1
#4  0xe984c in main (argc=1, argv=0x7f7f03d4) at http_main.c:5448
        c = -1
        sock_in = 0
        sock_out = 0
        s = 0x7f7f0018 "httpd"


In the Apache 2.0 porting guide I found this comment:

  If the C part of the module in 1.0 includes ap_soft_timeout(),
  ap_reset_timeout(), ap_hard_timeout() and ap_kill_timeout() functions
  simply remove these in 2.0. There is no replacement for these
  functions because Apache 2.0 uses non-blocking I/O. As a side-effect
  of this change, Apache 2.0 no longer uses SIGALRM, which has caused
  conflicts in mod_perl 1.0.

Does anyone have any ideas?

I'm not aware of that specific problems SIGALRM is known to cause can
anyone elaborate on this?  Is there anything I can do to help track
down this problem and possible fix it?  I can try to reproduce and
give more details if anyone has a specific request for information
that I have not included, please ask!

Thanks,
Phil

Reply via email to