Re: tsrm_shutdown() and the CLI SAPI
| From: | Steph Fox | Date: | Wed, 31 May 2006 10:38:04 +0000 |
| Subject: | Re: tsrm_shutdown() and the CLI SAPI | ||
| References: | 1 2 3 4 5 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-23820@lists.php.net to get a copy of this message | ||
C:\sandbox\php5\Zend>grep -l -drecurse "HAVE_LIBDL" *.*
ChangeLog
zend.h
Zend.m4
zend_API.c
zend_config.nw.h
zend_config.w32.h
Zend assumes Windows builds don't have HAVE_LIBDL defined. PHP - which only uses it in dl.c - assumes they do, and sets it during win32 config.
ZEND_MODULE_DTOR - used in the module_registry hash - is defined as module_destructor(), which lives in zend_API.c and contains the following block.
#if HAVE_LIBDL || defined(HAVE_MACH_O_DYLD_H)
#if !(defined(NETWARE) && defined(APACHE_1_BUILD))
if (module->handle) {
DL_UNLOAD(module->handle);
}
#endif
#endif
So PHP-GTK's 'crime' is that it includes zend_API.h. Nice, eh?
A better fix for Dmitry's initial win32 memory-setting issue would be to kill the HAVE_LIBDL line in config.w32.h.in (or replace it with #undef) and alter dl.c to deal with PHP_WIN32 directly.
Dmitry, if you want to go through Zend's codebase and check the side-effects of every single setting in config.w32.h.in that wasn't in zend_config.w32.h before March 14th, that's groovy. But be warned, it takes a long time to test them...!
- Steph
----- Original Message ----- From: "Steph Fox" <steph@zend.com>
To: "Xuefer" <xuefer@gmail.com>; "Andi Gutmans" <andi@zend.com>
Cc: "internals" <internals@lists.php.net>
Sent: Wednesday, May 31, 2006 9:28 AM
Subject: Re: [PHP-DEV] tsrm_shutdown() and the CLI SAPI
Fixing the config so that ZE doesn't think it's PHP might actually make Zend more stable too... I think I _know_ why other extension people are seeing a crash on ts_free_id(), but my biggest priority at present is getting the PHP-GTK crash out of the way. - StephWithout looking to deeply into this reincarnation my guess would be that for CLI, Zeev's approach makes good sense. Andi At 08:04 PM 5/27/2006, Steph Fox wrote:-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php __________ NOD32 1.1380 (20060125) Information __________ This message was checked by NOD32 antivirus system. http://www.eset.comThanks Xuefer... This bug's been extant for a long time, and I only found out why when I spent two days/nights trying to track down its history and mechanics. It's a pig. - Steph ----- Original Message ----- From: "Xuefer" <xuefer@gmail.com> To: "Steph Fox" <steph@zend.com> Cc: "internals" <internals@lists.php.net> Sent: Sunday, May 28, 2006 4:58 AM Subject: Re: [PHP-DEV] tsrm_shutdown() and the CLI SAPI-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php __________ NOD32 1.1380 (20060125) Information __________ This message was checked by NOD32 antivirus system. http://www.eset.comi can confirm this on other extension. something like this grep free_id */*.c -B1 -A3 mbstring/mbstring.c-#ifdef ZTS-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.phpmbstring/mbstring.c: ts_free_id(mbstring_globals_id);mbstring/mbstring.c-#elsembstring/mbstring.c- _php_mb_globals_dtor(&mbstring_globals TSRMLS_CC);mbstring/mbstring.c-#endif have no problem with it while some modules like $ grep 'ndef ZTS' */*.c -A2 apc/php_apc.c:#ifndef ZTSapc/php_apc.c- php_apc_shutdown_globals(&apc_globals);apc/php_apc.c-#endif - eaccelerator/eaccelerator.c:#ifndef ZTS eaccelerator/eaccelerator.c- eaccelerator_globals_dtor(&eaccelerator_globals TSRMLS_CC); eaccelerator/eaccelerator.c-#endif when compiled as shared module, will crash eaccelerator(mmcache) workaround it by disabling the dtor. /*??? FIXME ZEND_INIT_MODULE_GLOBALS(eaccelerator, eaccelerator_init_globals, eaccelerator_globals_dtor); */ ZEND_INIT_MODULE_GLOBALS(eaccelerator, eaccelerator_init_globals, NULL);