From a210a654265e48043028f912f2a05b5325b7aa1a Mon Sep 17 00:00:00 2001 From: Martin Kraemer Date: Fri, 1 Feb 2008 08:50:09 +0000 Subject: [PATCH] Avoid core dumps by getting the signal_description only if a process actually terminated on a signal. Update status only on a valid wait response. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@617373 13f79535-47bb-0310-9956-ffa450edef68 --- server/mpm_common.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/server/mpm_common.c b/server/mpm_common.c index 36fe9ea588..70942e2e41 100644 --- a/server/mpm_common.c +++ b/server/mpm_common.c @@ -138,7 +138,8 @@ static int reclaim_one_pid(pid_t pid, action_t action) waitret = apr_proc_wait(&proc, &status, &why, APR_NOWAIT); if (waitret != APR_CHILD_NOTDONE) { #ifdef AP_MPM_WANT_PROCESS_CHILD_STATUS - ap_process_child_status(&proc, why, status); + if (waitret == APR_CHILD_DONE) + ap_process_child_status(&proc, why, status); #endif return 1; } @@ -417,7 +418,7 @@ void ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode, apr_proc_t *ret, int ap_process_child_status(apr_proc_t *pid, apr_exit_why_e why, int status) { int signum = status; - const char *sigdesc = apr_signal_description_get(signum); + const char *sigdesc; /* Child died... if it died due to a fatal error, * we should simply bail out. The caller needs to @@ -445,6 +446,8 @@ int ap_process_child_status(apr_proc_t *pid, apr_exit_why_e why, int status) } if (APR_PROC_CHECK_SIGNALED(why)) { + sigdesc = apr_signal_description_get(signum); + switch (signum) { case SIGTERM: case SIGHUP: -- 2.40.0