Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP3:GA
apache2.2876
httpd-2.4.10-prefork-Ignore-SIGINT-in-child.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File httpd-2.4.10-prefork-Ignore-SIGINT-in-child.patch of Package apache2.2876
From 20656c3b77cc548b59fea3bde5e2b7705d71c427 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kalu=C5=BEa?= <jkaluza@apache.org> Date: Mon, 18 Aug 2014 07:43:43 +0000 Subject: [PATCH] prefork: Ignore SIGINT in child. This fixes race-condition in signals handling when httpd is runnning on foreground and user hits ctrl+c. In this case, SIGINT is sent to all children followed by SIGTERM from the main process, which interrupts the SIGINT handler and leads to inconsistency (process freezes or crashes). git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1618555 13f79535-47bb-0310-9956-ffa450edef68 --- server/mpm/prefork/prefork.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/server/mpm/prefork/prefork.c b/server/mpm/prefork/prefork.c index 8790ec0..d6c038b 100644 --- a/server/mpm/prefork/prefork.c +++ b/server/mpm/prefork/prefork.c @@ -222,6 +222,9 @@ static void clean_child_exit(int code) { mpm_state = AP_MPMQ_STOPPING; + apr_signal(SIGHUP, SIG_IGN); + apr_signal(SIGTERM, SIG_IGN); + if (pchild) { apr_pool_destroy(pchild); } @@ -817,6 +820,13 @@ static int make_child(server_rec *s, int slot) */ apr_signal(SIGHUP, just_die); apr_signal(SIGTERM, just_die); + /* Ignore SIGINT in child. This fixes race-condition in signals + * handling when httpd is runnning on foreground and user hits ctrl+c. + * In this case, SIGINT is sent to all children followed by SIGTERM + * from the main process, which interrupts the SIGINT handler and + * leads to inconsistency. + */ + apr_signal(SIGINT, SIG_IGN); /* The child process just closes listeners on AP_SIG_GRACEFUL. * The pod is used for signalling the graceful restart. */ -- 2.1.4
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor