From: Stefan Fritsch Date: Tue, 26 Jul 2011 20:37:49 +0000 (+0000) Subject: Install signal handlers for crashes before detaching. Previously, there X-Git-Tag: 2.3.14^2~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d4e7fad99535e7272595e63ad2f0052285fe7918;p=thirdparty%2Fapache%2Fhttpd.git Install signal handlers for crashes before detaching. Previously, there was a time span where crashes would be neither visible on the console nor logged in the error log. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1151234 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 8f4c94be0f0..7844bb79e98 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,9 @@ Changes with Apache 2.3.14 + *) prefork, worker, event: Make sure crashes are logged to the error log if + httpd has already detached from the console. [Stefan Fritsch] + *) prefork, worker, event: Reduce period during startup/restart where a successive signal may be lost. PR 43696. [Arun Bhalla ] diff --git a/server/mpm/event/event.c b/server/mpm/event/event.c index 90cb90afd8e..82401658d98 100644 --- a/server/mpm/event/event.c +++ b/server/mpm/event/event.c @@ -2758,6 +2758,8 @@ static int event_pre_config(apr_pool_t * pconf, apr_pool_t * plog, apr_pollset_destroy(event_pollset); if (!one_process && !foreground) { + /* before we detach, setup crash handlers to log to errorlog */ + ap_fatal_signal_setup(ap_server_conf, pconf); rv = apr_proc_detach(no_detach ? APR_PROC_DETACH_FOREGROUND : APR_PROC_DETACH_DAEMONIZE); if (rv != APR_SUCCESS) { diff --git a/server/mpm/prefork/prefork.c b/server/mpm/prefork/prefork.c index da649f1bad1..9df7e0ac81c 100644 --- a/server/mpm/prefork/prefork.c +++ b/server/mpm/prefork/prefork.c @@ -1275,6 +1275,8 @@ static int prefork_pre_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp ++retained->module_loads; if (retained->module_loads == 2) { if (!one_process && !foreground) { + /* before we detach, setup crash handlers to log to errorlog */ + ap_fatal_signal_setup(ap_server_conf, pconf); rv = apr_proc_detach(no_detach ? APR_PROC_DETACH_FOREGROUND : APR_PROC_DETACH_DAEMONIZE); if (rv != APR_SUCCESS) { diff --git a/server/mpm/worker/worker.c b/server/mpm/worker/worker.c index 13eac65204c..4f80f9a3709 100644 --- a/server/mpm/worker/worker.c +++ b/server/mpm/worker/worker.c @@ -1987,6 +1987,8 @@ static int worker_pre_config(apr_pool_t *pconf, apr_pool_t *plog, ++retained->module_loads; if (retained->module_loads == 2) { if (!one_process && !foreground) { + /* before we detach, setup crash handlers to log to errorlog */ + ap_fatal_signal_setup(ap_server_conf, pconf); rv = apr_proc_detach(no_detach ? APR_PROC_DETACH_FOREGROUND : APR_PROC_DETACH_DAEMONIZE); if (rv != APR_SUCCESS) {