Bug #47412 [Fbk->NoF]: PHP_MSHUTDOWN_FUNCTION not being called under FastCGI

From: Date: Sun, 18 Aug 2019 04:22:05 +0000
Subject: Bug #47412 [Fbk->NoF]: PHP_MSHUTDOWN_FUNCTION not being called under FastCGI
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-222301@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=47412&edit=1

 ID:               47412
 Updated by:       php-bugs@lists.php.net
 Reported by:      tser at deltacontrols dot com
 Summary:          PHP_MSHUTDOWN_FUNCTION not being called under FastCGI
-Status:           Feedback
+Status:           No Feedback
 Type:             Bug
 Package:          CGI/CLI related
 Operating System: win32 only - Vista
 PHP Version:      5.2.9RC2
 Assigned To:      cmb
 Private report:   N

 New Comment:

No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Re-Opened". Thank you.


Previous Comments:
------------------------------------------------------------------------
[2019-08-09 13:45:49] cmb@php.net

I cannot reproduce the reported behavior.  If you still experience
this issue, please re-open.

------------------------------------------------------------------------
[2010-06-08 15:49:22] tony2001@php.net

See also bug #51760.

------------------------------------------------------------------------
[2010-05-13 21:29:39] tser at deltacontrols dot com

Using Vista64 IIS7 with the update (KB980363).

1. Setup PHP FactCGI in IIS. Everything default.

2. Open C:\Windows\System32\inetsrv\config\applicationHost.config
Edit the <fastCgi> section and add signalBeforeTerminateSeconds="30"

<fastCgi>
            <application fullPath="C:\Program Files (x86)\PHP\php-cgi.exe"
maxInstances="2" idleTimeout="30001" activityTimeout="3000"
instanceMaxRequests="10000" signalBeforeTerminateSeconds="30">
                <environmentVariables>
                    <environmentVariable name="PHP_FCGI_MAX_REQUESTS"
value="10000" />
                    <environmentVariable name="PHPRC" value="C:\Program Files
(x86)\PHP\" />
                </environmentVariables>
            </application>
</fastCgi>

3. Create a test.php with <?phpinfo();?>. Browse it.
4. Attach debugger to php-cgi.exe process (with debug symbol).
5. Put a breakpoint in sapi/cgi/fastcgi.c (after WaitForSingleObject)
static DWORD WINAPI fcgi_shutdown_thread(LPVOID arg)
{
	HANDLE shutdown_event = (HANDLE) arg;
	WaitForSingleObject(shutdown_event, INFINITE);
	in_shutdown = 1; <--------------breakpoint here
	return 0;
}
6. Put a break point in ext/date/php_date.c
PHP_MSHUTDOWN_FUNCTION(date)
{
	UNREGISTER_INI_ENTRIES();

	return SUCCESS; <----------------breakpoint here
}
7. Open a command prompt and do a iisreset.

Notice that the breakpoint in fcgi_shutdown_thread will get hit but the PHP_MSHUTDOWN_FUNCTION(date)
function is not being called.


Before the IIS updates, FastCGI module always force kill php-cgi.exe, make it impossible for
php-cgi.exe to properly call PHP_MSHUTDOWN_FUNCTION for each extension. 
With the new setting signalBeforeTerminateSeconds, "_FCGI_SHUTDOWN_EVENT_" will be
triggered to give php-cgi.exe a change to do proper cleanup. There are actually code in fastcgi.c
(PHP) to wait for that event. However, it still does not properly call PHP_MSHUTDOWN_FUNCTION for
all the loaded extension.

------------------------------------------------------------------------
[2010-05-13 21:03:18] pajoye@php.net

Please post the relevant information here ( > feedback again).

------------------------------------------------------------------------
[2010-05-13 20:27:26] tser at deltacontrols dot com

I cannot re-open the bug.
There are more info on handling of SignalBeforeTerminateSeconds

Please refer to http://forums.iis.net/t/1167753.aspx

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


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

    https://bugs.php.net/bug.php?id=47412


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


Thread (20 messages)

« previous php.bugs (#222301) next »