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

Reply via email to