Oh well, now I see the difference. With my patch PHP starts call FreeLibrary() for dll extension. I am wonder why it wasn't called before. :)
Probably some other bug that is the reason of the crash was masked by omitting FreeLibrary(). I know Tony fixed some kind of such bugs in ext/tidy and ext/sybase. Probably php-gtk needs similar fix. All other systems except win32 already used common config file, and I don't see any reason for this exceptions. Especially because it was the reason of bug, and masked other bugs that may be reproduced on linux with ZTS. Thanks. Dmitry. > -----Original Message----- > From: Steph Fox [mailto:[EMAIL PROTECTED] > Sent: Wednesday, May 31, 2006 2:38 PM > To: Xuefer; Andi Gutmans; Dmitry Stogov > Cc: internals > Subject: Re: [PHP-DEV] tsrm_shutdown() and the CLI SAPI > > > 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" <[EMAIL PROTECTED]> > To: "Xuefer" <[EMAIL PROTECTED]>; "Andi Gutmans" <[EMAIL PROTECTED]> > 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. > > > > - Steph > > > >> Without 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: > >>>Thanks 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" <[EMAIL PROTECTED]> > >>>To: "Steph Fox" <[EMAIL PROTECTED]> > >>>Cc: "internals" <internals@lists.php.net> > >>>Sent: Sunday, May 28, 2006 4:58 AM > >>>Subject: Re: [PHP-DEV] tsrm_shutdown() and the CLI SAPI > >>> > >>> > >>>>i can confirm this on other extension. > >>>>something like this > >>>>grep free_id */*.c -B1 -A3 > >>>>mbstring/mbstring.c-#ifdef ZTS > >>>>mbstring/mbstring.c: ts_free_id(mbstring_globals_id); > >>>>mbstring/mbstring.c-#else > >>>>mbstring/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 ZTS > >>>>apc/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); > >>> > >>>-- > >>>PHP Internals - PHP Runtime Development Mailing List > >>>To unsubscribe, visit: http://www.php.net/unsub.php > >> > >> -- > >> 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.com > >> > >> > > > > -- > > 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.com > > > > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php