> > [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