#37120 [Com]: mod_php5 + apache2 + mail() = hung process
| From: | spike at indra dot com | Date: | Thu, 10 Aug 2006 21:42:15 +0000 |
| Subject: | #37120 [Com]: mod_php5 + apache2 + mail() = hung process | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-100666@lists.php.net to get a copy of this message | ||
ID: 37120
Comment by: spike at indra dot com
Reported By: brlcad at mac dot com
Status: No Feedback
Bug Type: Apache2 related
Operating System: FreeBSD 5.2.1
PHP Version: 5.1.2
New Comment:
I am seeing the same behavor in 4.4.3. I wrote a script to replace
sendmail and confirmed that the data is being written to the pipe, but
that the pipe is not being closed. I then stuck debuging statements in
mail.c and found the it hangs on pclose(). Again, this is only in
apache, not from the command line.
There may be a connection to this FreeBSD bug report:
http://www.freebsd.org/cgi/query-pr.cgi?pr=86421
Previous Comments:
------------------------------------------------------------------------
[2006-08-09 01:00:01] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
------------------------------------------------------------------------
[2006-08-01 22:23:20] tony2001@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php5.2-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5.2-win32-latest.zip
------------------------------------------------------------------------
[2006-04-18 23:16:09] brlcad at mac dot com
Not sure how helpful this will be, but here are several
stack traces while it was hung. Interestingly enough,
if I ctrl-c'd in gdb during the hang and continued, the
page would unhang and return a mail() failure.
(gdb) run -X -f /usr/local/etc/apache2/httpd.conf
(no debugging symbols found)...(no debugging symbols
found)...(no debugging symbols found)...(no debugging
symbols found)...(no debugging symbols found)...(no
debugging symbols found)...(no debugging symbols
found)...(no debugging symbols found)...
^C
Program received signal SIGINT, Interrupt.
0x283d92af in poll () from /lib/libc.so.5
(gdb) where
#0 0x283d92af in poll () from /lib/libc.so.5
#1 0x2847ba51 in _thread_kern_sched_state_unlock ()
from /usr/lib/libc_r.so.5
#2 0x2847b445 in _thread_kern_scheduler () from /usr/
lib/libc_r.so.5
(gdb) c
Continuing.
[ NOTE: HERE THE PAGE UNHUNG ]
^C
Program received signal SIGINT, Interrupt.
0x283d92af in poll () from /lib/libc.so.5
(gdb) where
#0 0x283d92af in poll () from /lib/libc.so.5
#1 0x2835977e in apr_poll () from /usr/local/lib/
apache2/libapr-0.so.9
#2 0x28359f32 in apr_wait_for_io_or_timeout () from /
usr/local/lib/apache2/libapr-0.so.9
#3 0x2835052a in apr_socket_recv () from /usr/local/
lib/apache2/libapr-0.so.9
#4 0x28350e9d in apr_recv () from /usr/local/lib/
apache2/libapr-0.so.9
#5 0x080705f0 in ap_lingering_close ()
#6 0x080640ab in child_main ()
#7 0x0806417c in make_child ()
#8 0x080642c2 in startup_children ()
#9 0x080646c2 in ap_mpm_run ()
#10 0x0806b7d3 in main ()
#11 0x0805cfd2 in _start ()
(gdb) c
Continuing.
^C
Program received signal SIGINT, Interrupt.
0x283d92af in poll () from /lib/libc.so.5
(gdb) where
#0 0x283d92af in poll () from /lib/libc.so.5
#1 0x2847ba51 in _thread_kern_sched_state_unlock ()
from /usr/lib/libc_r.so.5
#2 0x2847b445 in _thread_kern_scheduler () from /usr/
lib/libc_r.so.5
(gdb) c
Continuing.
[ NOTE: HERE THE PAGE UNHUNG ]
^C
Program received signal SIGINT, Interrupt.
0x283d92af in poll () from /lib/libc.so.5
(gdb) where
#0 0x283d92af in poll () from /lib/libc.so.5
#1 0x2835977e in apr_poll () from /usr/local/lib/
apache2/libapr-0.so.9
#2 0x28359f32 in apr_wait_for_io_or_timeout () from /
usr/local/lib/apache2/libapr-0.so.9
#3 0x2835052a in apr_socket_recv () from /usr/local/
lib/apache2/libapr-0.so.9
#4 0x28350e9d in apr_recv () from /usr/local/lib/
apache2/libapr-0.so.9
#5 0x080705f0 in ap_lingering_close ()
#6 0x080640ab in child_main ()
#7 0x0806417c in make_child ()
#8 0x080642c2 in startup_children ()
#9 0x080646c2 in ap_mpm_run ()
#10 0x0806b7d3 in main ()
#11 0x0805cfd2 in _start ()
(gdb) quit
------------------------------------------------------------------------
[2006-04-18 22:47:43] brlcad at mac dot com
I'll give that a try, though this is on a very heavy
loaded production machine (hundreds of web hits per
minute) -- I'll need to wait for the load to settle a
little, hopefully later tonight.
That said, in the meantime I thought I'd share some more
insight testing. I fully replaced sendmail with qmail
to make sure it wasn't something particular with the
configuration of sendmail. Again, the machine has no
problems sending e-mail on the command line or with mail
clients, but mod_php5 hangs on the mail() call.
Curiously enough, before installing qmail if I made the
clientmqueue dir unreadable so that sendmail reported an
error/failure, the mail() call does return immediately
(reporting a failure return code) so the hanging does
seem to be specific to when the mail 'should' go through
correctly.
------------------------------------------------------------------------
[2006-04-18 21:30:49] tony2001@php.net
Please try to reproduce it with only one Apache process (httpd -X) and
if yes - get a GDB backtrace of the place where it freezes.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/37120
--
Edit this bug report at http://bugs.php.net/?id=37120&edit=1