> > [Fri Feb 28 14:31:49 2003] [alert] Child 1216 returned a Fatal error...
> > Apache is exiting!
>
> That's bad.  Sounds like an apache bug to me.  Can anyone else confirm
> if this is intended behavior or not?  You might want to check the httpd
> lists and newsgroups for info about this.

In http_main.c:process_child_status() there's a bit of code:

    if ((WIFEXITED(status)) &&
        WEXITSTATUS(status) == APEXIT_CHILDFATAL) {
        ap_log_error(APLOG_MARK, APLOG_ALERT|APLOG_NOERRNO, server_conf,
                        "Child %d returned a Fatal error... \n"
                        "Apache is exiting!",
                        pid);
        exit(APEXIT_CHILDFATAL);
    }

It looks like the parent server will exit if one of its children exits with
APEXIT_CHILDFATAL.  Unfortunately, if you grep for that in the Apache
source, it comes up more than a few times.  A stacktrace would be useful.
Try setting a breakpoint on clean_child_exit() or use a call tracing utility
like Solaris' truss.

Without a stacktrace, you could try to work around the problem.  It looks
like many errors in the accept mutex code will trigger a fatal error -- try
a different mutex (see
http://httpd.apache.org/docs/mod/core.html#acceptmutex).  Also, security
errors such as errors from setuid(), setgid(), or getpwuid() may cause a
fatal error.  Finally, certain values of errno after the accept() call in
child_main() will cause a fatal error (like ENETDOWN).

--
Kyle Oppenheim
Tellme Networks, Inc.
http://www.tellme.com

Reply via email to