From 7f617c6f9edbdc72d7b1080b8103aab21fa201b3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= Date: Tue, 9 Apr 2013 18:08:32 +0200 Subject: [PATCH] - rel 2; bugfixes for upstream 49058 and 39311 (prefork only) --- apache-bug-39311-preforkonly.patch | 37 ++++++++++++++++++++++++++++++ apache.spec | 4 +++- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 apache-bug-39311-preforkonly.patch diff --git a/apache-bug-39311-preforkonly.patch b/apache-bug-39311-preforkonly.patch new file mode 100644 index 0000000..772f4f8 --- /dev/null +++ b/apache-bug-39311-preforkonly.patch @@ -0,0 +1,37 @@ +--- httpd-2.2.24/server/mpm/prefork/prefork.c~ 2012-07-27 21:51:57.000000000 +0200 ++++ httpd-2.2.24/server/mpm/prefork/prefork.c 2013-04-09 17:58:05.772765411 +0200 +@@ -1043,14 +1043,31 @@ + * extra child + */ + if (pid.pid != -1) { ++ process_score *child_record; + processed_status = ap_process_child_status(&pid, exitwhy, status); ++ child_slot = find_child_by_pid(&pid); + if (processed_status == APEXIT_CHILDFATAL) { +- mpm_state = AP_MPMQ_STOPPING; +- return 1; ++ /* fix race condition found in PR 39311 ++ * A child created at the same time as a graceful happens ++ * can find the lock missing and create a fatal error. ++ * It is not fatal for the last generation to be in this state. ++ */ ++ child_record = ap_get_scoreboard_process(child_slot); ++ if (child_slot < 0 ++ || child_record->generation ++ == ap_my_generation) { ++ mpm_state = AP_MPMQ_STOPPING; ++ return DONE; ++ } ++ else { ++ ap_log_error(APLOG_MARK, APLOG_WARNING, 0, ap_server_conf, ++ "Ignoring fatal error in child of previous " ++ "generation (pid %ld).", ++ (long)pid.pid); ++ } + } + + /* non-fatal death... note that it's gone in the scoreboard. */ +- child_slot = find_child_by_pid(&pid); + if (child_slot >= 0) { + (void) ap_update_child_status_from_indexes(child_slot, 0, SERVER_DEAD, + (request_rec *) NULL); diff --git a/apache.spec b/apache.spec index ad932b3..1ffb291 100644 --- a/apache.spec +++ b/apache.spec @@ -44,7 +44,7 @@ Summary(ru.UTF-8): Самый популярный веб-сервер Summary(tr.UTF-8): Lider WWW tarayıcı Name: apache Version: 2.2.24 -Release: 1 +Release: 2 License: Apache v2.0 Group: Networking/Daemons/HTTP Source0: http://www.apache.org/dist/httpd/httpd-%{version}.tar.gz @@ -92,6 +92,7 @@ Patch7: %{name}-syslibs.patch Patch8: httpd-2.0.45-encode.patch Patch9: %{name}-paths.patch Patch10: httpd-2.0.46-dav401dest.patch +Patch11: apache-bug-39311-preforkonly.patch Patch12: httpd-2.0.46-sslmutex.patch Patch14: httpd-2.0.48-corelimit.patch Patch15: httpd-2.0.48-debuglog.patch @@ -1788,6 +1789,7 @@ Dwa programy testowe/przykładowe cgi: test-cgi and print-env. %patch9 -p1 %patch10 -p1 %patch12 -p1 +%patch11 -p1 %patch14 -p1 %patch15 -p1 %patch18 -p1 -- 2.43.0