ID:               41593
 Comment by:       hanno at hboeck dot de
 Reported By:      jonepet at dcvhost dot no
 Status:           No Feedback
 Bug Type:         CGI related
 Operating System: Linux
 PHP Version:      5.2.3
 Assigned To:      dmitry
 New Comment:

Bernd Wurst has written a workaround-patch for fastcgi, which can be
found here:
http://svn.schokokeks.org/repos/overlay/trunk/www-apache/mod_fastcgi/files/fcgi_pm.c.diff

Maybe some more skilled programmers want to comment on it.


Previous Comments:
------------------------------------------------------------------------

[2008-03-24 11:41:27] void at voip dot e-burg dot ru

PHP 5.2.6RC1
i run php-cgi directly from initng and have term_timeout = 80,
ei initng suspends SIGKILL for 80sec after SIGTERM

when i sigterm php-cgi, i get this fom my web server (lighttpd):
 (mod_fastcgi.c.2462) unexpected end-of-file (perhaps the fastcgi
process died): pid: 0 socket: tcp:172.31.2.108:1026
 (mod_fastcgi.c.3254) response not received, request sent: 1538 on
socket: tcp:172.31.2.108:1026 for /index.php , closing connection

it seems php even not try to shutdown gracefuly

------------------------------------------------------------------------

[2008-02-27 22:29:22] dan at sypher7 dot com

I previously reported that this issue was only effecting PHP4 and not
PHP5. I've now seen PHP 5.2.5 throw 500 errors as well (using
mod_fastcgi).

I believe there are actually two different bugs here. One of them is
with PHP 4.4.8. That bug is that fastcgi mode PHP does not clean up and
exit properly (send headers, etc.) on a SIGTERM from the fastcgi process
manager. It simply dies and returns no headers resulting in the 500
error in Apache. This is incorrect cleanup on the part of PHP.

Doing some further digging, there appear to be indications that the
fastcgi process manager will send a SIGKILL after a SIGTERM if the
process doesn't finish sufficiently fast. Although I did see comments
indicating this in the mod_fastcgi code, and corresponding code that
would do that on Win32 platforms, I could not find in the source code
that mod_fastcgi's process manager would actually do this for a *nix
platform, so I'm unsure if this is actually happening.

In any case, the problem with PHP5 throwing the 500 errors seems to be
that it is getting a SIGKILL from someone (either Apache or
mod_fastcgi), which isn't really a PHP bug, but something to be looked
into with either apache or the fastcgi people. I'm investigating that,
but the issues with PHP4 still stand.

------------------------------------------------------------------------

[2008-02-26 08:48:08] marekm at apnet dot pl

I can confirm that the same problem happens with Apache 2.2.8 +
mod_fastcgi 2.4.6 + PHP 5.2.5 ie. graceful restarts always cause error
500. This is absolutely repeatable.

------------------------------------------------------------------------

[2008-02-18 19:13:22] dan at sypher7 dot com

I just wanted to follow up:

I recently installed PHP 5.2.5 alongside 4.4.8. With the identical
setup. PHP4 will cause the internal server error, but PHP5 will not. So
this appears to be a PHP4-only issue.

------------------------------------------------------------------------

[2008-02-15 21:59:49] dan at sypher7 dot com

I was able to reproduce this in the 4.4.8 version of PHP using the
latest mod_fastcgi and Apache 1.3.

>From what I understand, a graceful reload sends a SIGUSR1 to Apache.
The  FastCGI processor manager then sends SIGTERMs to all of the running
processes.

Instead of exiting cleanly, the PHP script ends abruptly and doesn't
even finish sending headers. Here is what Apache's log had to say about
it:

 FastCGI: incomplete headers (0 bytes) received from server
"/path/to/php-fcgi-wrapper"

I've tried messing with the FastCgiConfig settings a lot, but nothing
in there appears to be changing the result.

I do not know either codebase well, so I can't say with certainty if
this is a mod_fastcgi or PHP bug. It would appear that either PHP isn't
closing out cleanly on a SIGTERM or mod_fastcgi isn't waiting around for
the process to end.

------------------------------------------------------------------------

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/41593

-- 
Edit this bug report at http://bugs.php.net/?id=41593&edit=1

Reply via email to