httpd-bugs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 42829] graceful restart with multiple listeners using prefork MPM can result in hung processes
Date Tue, 06 Dec 2011 18:11:55 GMT
https://issues.apache.org/bugzilla/show_bug.cgi?id=42829

--- Comment #63 from paul@silevitch.com 2011-12-06 18:11:55 UTC ---
Everytime I do a graceful-stop, I see the following in the error log:

[Fri Dec 02 19:02:22 2011] [notice] caught SIGWINCH, shutting down gracefully
[Fri Dec 02 19:02:22 2011] [error] (9)Bad file descriptor: apr_socket_accept:
(client socket)

I'm using apache 2.2.21; prefork MPM on linux.  After reading through this
thread (especially Joe's comment -
https://issues.apache.org/bugzilla/show_bug.cgi?id=42829#c16).  I figured out
that it is a race condition where SIGUSR1 is called after the child has done
"else if (die_now) {" and before the child has done "status =
lr->accept_func(&csd, lr, ptrans);".

The following patch fixed the problem for me:

@@ -638,6 +638,14 @@
                  * ### than POLLIN
                  */
                 lr = pdesc[last_poll_idx++].client_data;
+
+               if (die_now) {
+                       /* In graceful stop/restart; drop the mutex
+                        * and terminate the child. */
+                       SAFE_ACCEPT(accept_mutex_off());
+                       clean_child_exit(0);
+               }
+
                 goto got_fd;
             }
         }

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


Mime
View raw message