#27143 [Opn->Bgs]: ISAPI DLL crashes when unloaded

From: Date: Sun, 25 Apr 2004 22:28:05 +0000
Subject: #27143 [Opn->Bgs]: ISAPI DLL crashes when unloaded
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-58753@lists.php.net to get a copy of this message
ID: 27143 Updated by: sniper@php.net Reported By: office at hermannseib dot com -Status: Open +Status: Bogus Bug Type: Zend Engine 2 problem Operating System: Win32 PHP Version: 4.3.4 New Comment: We are aware of PHP's problems with stability under IIS and are working to rectify the problem. Unfortunatly your bug report does not contain any extra useful information and we already have enough bug reports open about this issue. If you can provide more detailed information such as a reproducable crash or a backtrace please do so and reopen this bug. Otherwise please keep trying new releases as we are working to resolve the problems on this platform Thanks for your interest in PHP. There is no ZE2 in PHP 4. Check your version in this report. Previous Comments: ------------------------------------------------------------------------ [2004-02-04 07:45:46] office at hermannseib dot com Description: ------------ I use php as an ISAPI server extension on my self-written web server. Works quite well, except when I remove the extension from memory, i.e., FreeLibrary(hInst) where hInst is the handle to php4isapi.dll. In most cases, this causes the DLL to go belly-up. I traced the problem into the Zend stuff - in zend_shutdown() there's a call to zend_shutdown_timeout_thread() which terminates the timeut thread... or at least it's supposed to do so. Unfortunately, zend_shutdown_timeout_thread() just posts a WM_QUIT message for the thread and then happily goes on deleting thread data... and when the timeout thread finally processes the WM_QUIT message, all data are gone, and it hops to an unused address. Solution to this problem is simple - just make sure that zend_shutdown_timeout_thread() allows the other thread to receive the WM_QUIT message before continuing. I've included a modified version in the "reproduce code" area below which has the desired effect. Reproduce code: --------------- void zend_shutdown_timeout_thread() { if (!timeout_thread_initialized) { return; } PostThreadMessage(timeout_thread_id, WM_QUIT, 0, 0); Sleep(0); // <- this does the trick! } ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=27143&edit=1

« previous php.bugs (#58753) next »