ID: 37422
User updated by: phpbugs at thequod dot de
-Summary: FastCGI: comm with server .. aborted
Reported By: phpbugs at thequod dot de
-Status: Feedback
+Status: Open
Bug Type: CGI related
Operating System: Ubuntu Linux
PHP Version: 5.1.5CVS
Assigned To: dmitry
New Comment:
I've tried debugging the problem a bit more (with gdb):
The main process (which was started at first) has this
backtrace:
#0 0xb7890968 in wait () from /lib/tls/libc.so.6
#1 0x083203bb in main (argc=1, argv=0xbfdf8be4)
at /home/XXX/cvs/php/php51dev/sapi/cgi/cgi_main.c:1285
("ps aux" says:
XXX 21201 0.0 0.7 15372 3976 ? Ss May14
0:00 /bin/php5-fcgi)
Line 1285 is the while loop here:
if (parent) {
#ifdef DEBUG_FASTCGI
fprintf(stderr, "Wait for kids, pid %d\n",
getpid());
#endif
while (wait(&status) < 0) {
}
running--;
}
And here are backtraces, of two php5-fcgi childs (4
total):
(gdb) bt
#0 0xb78c4678 in poll () from /lib/tls/libc.so.6
#1 0x0827b266 in php_sockop_read (stream=0x866546c,
buf=0xfffffffc <Address 0xfffffffc out of bounds>,
count=4294967292)
at php_network.h:164
#2 0x08099b5e in php_openssl_sockop_read
(stream=0x866546c, buf=0x866557c "etting
t��\222�",
count=8192)
at /home/XXX/cvs/php/php51dev/ext/openssl/xp_ssl.c:229
#3 0x08271d20 in php_stream_fill_read_buffer
(stream=0x866546c, size=1)
at /home/XXX/cvs/php/php51dev/main/streams/streams.c:541
#4 0x08271dd2 in _php_stream_read (stream=0x866546c,
buf=0xbfdf2187 "\b�!߿�\204
\blTf\b����kqI\b", size=1)
at /home/XXX/cvs/php/php51dev/main/streams/streams.c:584
#5 0x08271fa3 in _php_stream_getc (stream=0xfffffffc)
at /home/XXX/cvs/php/php51dev/main/streams/streams.c:649
#6 0x082084c5 in zif_fgetc (ht=1, return_value=0x869180c,
return_value_ptr=0x0, this_ptr=0x0, return_value_used=1)
at /home/XXX/cvs/php/php51dev/ext/standard/file.c:1076
#7 0x082b503b in zend_do_fcall_common_helper_SPEC
(execute_data=0xbfdf4410) at zend_vm_execute.h:200
#8 0x082b472b in execute (op_array=0x8681814) at
zend_vm_execute.h:92
#9 0x0829c694 in zend_execute_scripts (type=8,
retval=Variable "retval" is not available.
) at /home/XXX/cvs/php/php51dev/Zend/zend.c:1109
#10 0x08263044 in php_execute_script
(primary_file=0xbfdf8acc)
at /home/XXX/cvs/php/php51dev/main/main.c:1732
#11 0x08320831 in main (argc=1, argv=0xbfdf8be4)
at /home/XXX/cvs/php/php51dev/sapi/cgi/cgi_main.c:1608
#0 0xb78c4678 in poll () from /lib/tls/libc.so.6
#1 0x0827b266 in php_sockop_read (stream=0x8668804,
buf=0xfffffffc <Address 0xfffffffc out of bounds>,
count=4294967292)
at php_network.h:164
#2 0x08099b5e in php_openssl_sockop_read
(stream=0x8668804, buf=0x865e50c "", count=8192)
at /home/XXX/cvs/php/php51dev/ext/openssl/xp_ssl.c:229
#3 0x08271d20 in php_stream_fill_read_buffer
(stream=0x8668804, size=8192)
at /home/XXX/cvs/php/php51dev/main/streams/streams.c:541
#4 0x08272183 in _php_stream_get_line (stream=0x8668804,
buf=0x0, maxlen=0, returned_len=0xbfdf21b0)
at /home/XXX/cvs/php/php51dev/main/streams/streams.c:820
#5 0x0820b4ad in zif_fgets (ht=1, return_value=0x8696bf4,
return_value_ptr=0x0, this_ptr=0x0, return_value_used=1)
at /home/XXX/cvs/php/php51dev/ext/standard/file.c:1021
#6 0x082b503b in zend_do_fcall_common_helper_SPEC
(execute_data=0xbfdf4410) at zend_vm_execute.h:200
#7 0x082b472b in execute (op_array=0x865228c) at
zend_vm_execute.h:92
#8 0x0829c694 in zend_execute_scripts (type=8,
retval=Variable "retval" is not available.
) at /home/XXX/cvs/php/php51dev/Zend/zend.c:1109
#9 0x08263044 in php_execute_script
(primary_file=0xbfdf8acc)
at /home/XXX/cvs/php/php51dev/main/main.c:1732
#10 0x08320831 in main (argc=1, argv=0xbfdf8be4)
at /home/XXX/cvs/php/php51dev/sapi/cgi/cgi_main.c:1608
PHP_FCGI_CHILDREN=4
PHP_FCGI_MAX_REQUESTS=100
Previous Comments:
------------------------------------------------------------------------
[2006-05-15 11:03:41] [EMAIL PROTECTED]
the behavior of PHP_FCGI_CHILDREN was changed about year ago. If it is
not set then main PHP process doesn't fork worker processes but serve
FastCGI requests by itself.
I cannot reproduce the problem with PHP_FCGI_CHILDREN is set, but it
well reproducable without PHP_FCGI_CHILDREN.
BTW I can reproduce the same problem with mod_fastcgi and PHP-5.0, and
cannot reproduce with PHP-5.1.4 and zend_enabler. So I assume this is
mod_fastcgi bug, that cannot restart PHP properly.
------------------------------------------------------------------------
[2006-05-12 19:37:53] phpbugs at thequod dot de
The test script is just <?php echo 'foo'; ?>.
------------------------------------------------------------------------
[2006-05-12 19:34:38] phpbugs at thequod dot de
Description:
------------
I'm running Apache2/mod_fastcgi/PHP5.1.5-dev (built: May
12 2006 19:46:11).
The problem is, that without setting PHP_FCGI_CHILDREN
children, PHP does not default to the documented value of
8 (no source, but often read): it does not create any
children.
This might be just a documentation issue/bug, but without
using any children, I can reproduce crashing PHP (somehow
after PHP_FCGI_MAX_REQUESTS), but also experience with
PHP_FCGI_CHILDREN set to 4!
This "bogus" report seems to be related:
http://bugs.php.net/bug.php?id=27802
Reproduce code:
---------------
In fastcgi.conf: FastCgiServer
/XXX/fcgi-scripts/XXX/php5-fcgi-starter -user phptest_codeprobe -group
phptest_codeprobe -pass-header HTTP_AUTHORIZATION -flush -idle-timeout
60
php5-fcgi-starter script:
#!/bin/sh
PHPRC="/vhosts/phptest_codeprobe/conf/php5"
export PHPRC
PHP_FCGI_MAX_REQUESTS=100
export PHP_FCGI_MAX_REQUESTS
exec /bin/php5-fcgi
1. Restart Apache
2. A php5-fcgi process gets started (without any childs)
3. ab2 -n 101 url/
4. A new php5-fcgi process gets "re-spawned"
5. ab2 -n 201 url/
6. The longest request takes 4s(!), instead of 0.004.
7. ab2 -n 301 url/
8. The php5-fcgi process disappears forever!
This only seems to be an indication, because I have one server setup
with PHP_FCGI_MAX_REQUESTS=100 and PHP_FCGI_CHILDREN=4 and it also dies
away like this (with the same entries in the server's error log).
This is since PHP 5.1.3/5.1.4..
Expected result:
----------------
Do not crash.
Actual result:
--------------
Apache error log:
FastCGI: comm with
server "/var/www/fcgi-scripts/phptest_codeprobe/php5-fcgi-starter"
aborted: idle timeout (60 sec)
FastCGI: incomplete headers (0 bytes) received from
server "/var/www/fcgi-scripts/phptest_codeprobe/php5-fcgi-starter"
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=37422&edit=1