--- /dev/null
+--- 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);
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
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
%patch9 -p1
%patch10 -p1
%patch12 -p1
+%patch11 -p1
%patch14 -p1
%patch15 -p1
%patch18 -p1