Hi Steph, As I remember this patch modified "zend_config.w32.h". It made inclusion of "main/config.w32.h" in the same way as on all other systems. How it affects TSRM? May be I forgot something.
Thanks. Dmitry. > -----Original Message----- > From: Steph Fox [mailto:[EMAIL PROTECTED] > Sent: Tuesday, May 30, 2006 1:30 AM > To: Dmitry Stogov > Cc: 'PHP-GTK dev'; 'internals' > Subject: Re: [PHP-DEV] Ides of March [WAS: tsrm_shutdown() > and the CLI SAPI] > > > Hi Dmitry, > > Finally cracked it, and you're right it had nothing to do > with the suspected > optimizations. There was a win32 memory fix where you > included the PHP win32 > config file in the Zend one, confusing heck out of TSRM's totally > independent (until it meets Zend) alloca definition, which is > some way > before Zend meets PHP's. They all need to match. > > Can you find some other way to fix #36568 pliz? > > I'll take another look at those flags in TSRM itself for the > work-aroundable > shutdown issues when I've caught up with the weeklies... > > - Steph > > ps I knew it had to be you - nobody else did anything major > in core that > week ;) > > > > > Hi Steph, > > > > I have no idea what is wrong with optimized class/functions tables > > cleanup. > > In case if EG(full_tables_cleanup) is set, the behavior > should be exactly > > the same as before patch. > > PHP uses EG(full_table_cleanup) only for dl(), but I do't > know how php-gtk > > uses it. > > > > Thanks. Dmitry. > > > >> -----Original Message----- > >> From: Steph Fox [mailto:[EMAIL PROTECTED] > >> Sent: Monday, May 29, 2006 1:40 PM > >> To: internals > >> Cc: PHP-GTK dev; Dmitry Stogov > >> Subject: [PHP-DEV] Ides of March [WAS: tsrm_shutdown() and the CLI > >> SAPI] > >> > >> > >> Hi all, > >> > >> I've spent a fun weekend debugging TSRM and bits of ZE2, having > >> finally figured that the zend_compiler_globals dtor was > the point of > >> failure here. > >> > >> TSRM needs to mark resources as 'done' following a free > and doesn't > >> in most cases, but that's actually not the main problem we have in > >> PHP-GTK (although > >> fixing it may well solve everybody else's, I'll check that on > >> my travels). > >> > >> Dmitry's "Optimized cleanup loops on request shutdown" > >> commit(s) spanning > >> the 13th and 14th March broke Andrei's > >> 'EG(full_tables_cleanup) = 1' ruse > >> (we needed user classes to be cleaned and internal classes > to stay), > >> but it also broke TSRM shutdown completely for us. PHP-GTK classes > >> are recognized > >> as being internal, but only the first one ever reaches the > >> dtor - even when > >> there are no user-defined classes. > >> > >> zend_hash_reverse_apply() is called at that point, so I'm guessing > >> there's a reentrancy issue behind my access violation crash. > >> > >> I'll get back to this when I get some time, in the > meantime if anyone > >> (Dmitry?) wants to play with this you need to know that I > can't put > >> the 5_2 compat stuff into CVS until Andrei OKs it, so PHP-GTK HEAD > >> has to be built > >> against PHP_5_1 branch at present (anything after March > 14th will do). > >> > >> - Steph > >> > >> > >> > Under CLI ZTS build, when loading a PHP-GTK 2 .dll built against > >> > anything this side of PHP 5.1.2 release, I'm seeing an 'access > >> violation' crash on > >> > reaching: > >> > > >> > if (resource_types_table && !resource_types_table[j].done && > >> > resource_types_table[j].dtor) { > >> > resource_types_table[j].dtor(p->storage[j], > &p->storage); > >> > } > >> > > >> > Similar code is also used in: > >> > > >> > tsrm_free_interpreter_context() > >> > ts_free_thread() > >> > ts_free_worker_threads() > >> > ts_free_id() > >> > > >> > I thought ts_free_thread() was crashing at that line too at > >> first, but > >> > that turned out to be because there's no 'done' check > >> there, i.e. double > >> > dtors are possible via some functions. It's still vaguely > >> possible there's > >> > a double flypast causing the crash I'm seeing, but I have > >> everything I > >> > know about protected now. (On my laptop that is.) > >> > > >> > Eventually I found the resource id for PHP-GTK - the > only extension > >> > I'm loading during runtime, via php.ini - is 32nd out of > a possible > >> > 32. "Eventually", because that means I can't use ts_free_id() > >> to avoid the > >> > crash as advised by Frank (and Tony, and Dmitry, and anyone > >> else who ever > >> > used that MSHUTDOWN workaround for CLI). Interesting too, > >> because the > >> > resource that causes the crash appears to be something > >> completely other. > >> > Tracking down resource id #5 - and that's all I know about > >> it apart from > >> > it crashes - is a barrel of laughs, I'll let y'all know if > >> I ever find out > >> > which of the many possible extensions/files in ext/standard > >> or core it is. > >> > > >> > Short version: One line is problematic, and only in one > >> function, and > >> > presumably only under CLI SAPI. (CGI already doesn't call > >> tsrm_shutdown(), > >> > thanks to similar issues some 3 years ago). > >> > > >> > The question is whether to take 'the Zeev approach' and > >> simply comment > >> > out > >> > the tsrm_shutdown() call at the end of sapi/cli/php_cli.c, > >> or whether to > >> > spend time knitting up a fine-grained approach to prevent > >> the one bad line > >> > in the function from being called in single-threaded > >> environments? I think > >> > I've given up on the idea of actually resolving the bug now... > >> > > >> > Thoughts? > >> > > >> > - oh, and don't make one of them 'chicken-and-egg' - this is > >> > definitively NOT related to the shutdown order in main.c!!!!! > >> > > >> > - Steph > >> > > >> > -- > >> > 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 > > > > > > __________ 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