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

Reply via email to