RE: [PHP-DEV] tsrm_shutdown() and the CLI SAPI
| From: | Dmitry Stogov | Date: | Wed, 31 May 2006 11:19:43 +0000 |
| Subject: | RE: [PHP-DEV] tsrm_shutdown() and the CLI SAPI | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-23822@lists.php.net to get a copy of this message | ||
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:steph@zend.com]
> 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" <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.
> >
> > - 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" <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
> >>>
> >>>
> >>>>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
>
>
>