httpd-bugs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
Subject DO NOT REPLY [Bug 47645] httpd-2.2.12 often hangs for hours
Date Thu, 06 Aug 2009 12:39:13 GMT

Jeff Trawick <> changed:

           What    |Removed                     |Added
             Status|NEEDINFO                    |NEW

--- Comment #5 from Jeff Trawick <> 2009-08-06 05:39:11 PDT ---
This pid is supposed to wake up for the next client connection:

* pstack PID :
 fefcb904 portfs   (6, 8, 1ed548, 2, 1, ffbffa80)
 ff21a994 apr_pollset_poll (1ed508, 0, 989680, ffbffaf8, ffbffaf4, 11177) + 12c
 0006a218 child_main (18, 989400, 9a400, 1f34d0, 1, 9c400) + 378

>From the truss I guess it is waking up every 10 seconds or so (whatever the
prefork timeout is), but never finding a new connection.

I don't know exactly what is causing the problem.  I had a similar situation
with the event MPM once and this same implementation of apr_pollset_poll(), but
I didn't have time to debug or to narrow it down to one of {Event MPM, APR,
Solaris kernel}.

You will likely be able to work around the problem by selecting a different
poll implementation.  It should be as easy as 

$ make distclean
$ export ac_cv_func_port_create=no
$ ./configure [normal configure options]

(Does that look right to others following the bug list?)

>From another standpoint:

>In this state, neither any answer packets were generated (tested with network sniffer)
nor any log lines written.

The TCP layer should answer a SYN packet.  Did that happen?

What does netstat show at the time of the hang?  If connections are able to
reach the ESTABLISHED state but not responded to, then TCP is doing the right
thing and httpd isn't finding the connection.  If none reach the ESTABLISHED
state, then it is a TCP layer issue.

What changed in 2.2.12?

The Solaris port code changed in APR, but it doesn't look dangerous:

+    {
+        int flags;
+        if ((flags = fcntl((*pollset)->port_fd, F_GETFD)) == -1)
+            return errno;
+        flags |= FD_CLOEXEC;
+        if (fcntl((*pollset)->port_fd, F_SETFD, flags) == -1)
+            return errno;
+    }

Configure bugmail:
------- You are receiving this mail because: -------
You are the assignee for the bug.

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message