Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:39020 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 59789 invoked from network); 16 Jul 2008 20:09:22 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 16 Jul 2008 20:09:22 -0000 Authentication-Results: pb1.pair.com header.from=mls@pooteeweet.org; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=mls@pooteeweet.org; spf=permerror; sender-id=unknown Received-SPF: error (pb1.pair.com: domain pooteeweet.org from 88.198.8.16 cause and error) X-PHP-List-Original-Sender: mls@pooteeweet.org X-Host-Fingerprint: 88.198.8.16 bigtime.backendmedia.com Linux 2.6 Received: from [88.198.8.16] ([88.198.8.16:43387] helo=bigtime.backendmedia.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 0D/D5-54589-1755E784 for ; Wed, 16 Jul 2008 16:09:22 -0400 Received: from localhost (unknown [127.0.0.1]) by bigtime.backendmedia.com (Postfix) with ESMTP id F223F4144007; Wed, 16 Jul 2008 20:09:49 +0000 (UTC) X-Virus-Scanned: amavisd-new at backendmedia.com Received: from bigtime.backendmedia.com ([127.0.0.1]) by localhost (bigtime.backendmedia.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Vvl6JIWQUGxO; Wed, 16 Jul 2008 22:09:48 +0200 (CEST) Received: from [192.168.0.151] (77-57-23-243.dclient.hispeed.ch [77.57.23.243]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: mls@pooteeweet.org) by bigtime.backendmedia.com (Postfix) with ESMTP id DDBD04144006; Wed, 16 Jul 2008 22:09:47 +0200 (CEST) Cc: internals Mailing List Message-ID: To: Gregory Beaver In-Reply-To: <4855D62C.2010902@chiaraquartet.net> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v928.1) Date: Wed, 16 Jul 2008 22:07:57 +0200 References: <4855D62C.2010902@chiaraquartet.net> X-Mailer: Apple Mail (2.928.1) Subject: Re: [PHP-DEV] potential shutdown order issue From: mls@pooteeweet.org (Lukas Kahwe Smith) Hi, Does anyone agree that there is an issue to fix here? Messing with the shutdown order is probably the last thing any RM would like to see happening .. regards, Lukas On 16.06.2008, at 04:55, Gregory Beaver wrote: > Hi, > > I'm getting errors of hashtable already destroyed when running > phpMyAdmin with PHP 5.3, and (of course), thinking this is a phar > issue, > I've traced through and found a problem in the shutdown order. > Basically, php_request_shutdown() calls zend_deactivate() which calls > zend_destroy_rsrc_list(&EG(regular_list)). On the next line, > zend_post_deactivate_modules() is called, which steps through the > module > list and unloads all the dynamically loaded modules. If one of these > modules (like mysqli) declares a resource type, then in > module_destructor() zend_clean_module_rsrc_dtors() is called, which > calls zend_clean_modules_rsrc_dtors_cb() (zend_list.c:253). > > This function then walks over EG(regular_list), which had been > previously destroyed. > > I think this issue could be fixed by moving the > zend_destroy_rsrc_list(&EG(regular_list)) call after the module > shutdown. I've attached a patch demonstrating the principle (this > fixes > the hashtable destroyed message and I don't get anything bad like a > segfault). > > Could someone with more brains double-check this one? I think it > can be > reproduced with a debug build using mysqli loaded dynamically and any > script that uses mysqli, but I've only reproduced it with phpMyAdmin. > > Thanks, > Greg > Index: Zend/zend.c > =================================================================== > RCS file: /repository/ZendEngine2/zend.c,v > retrieving revision 1.308.2.12.2.35.2.18 > diff -u -r1.308.2.12.2.35.2.18 zend.c > --- Zend/zend.c 29 Apr 2008 08:15:16 -0000 1.308.2.12.2.35.2.18 > +++ Zend/zend.c 16 Jun 2008 02:53:00 -0000 > @@ -901,7 +901,8 @@ > shutdown_compiler(TSRMLS_C); > } zend_end_try(); > > - zend_destroy_rsrc_list(&EG(regular_list) TSRMLS_CC); > + /* shutdown order issue */ > + /* zend_destroy_rsrc_list(&EG(regular_list) TSRMLS_CC); */ > > #ifdef ZEND_DEBUG > if (GC_G(gc_enabled) && !CG(unclean_shutdown)) { > Index: main/main.c > =================================================================== > RCS file: /repository/php-src/main/main.c,v > retrieving revision 1.640.2.23.2.57.2.22 > diff -u -r1.640.2.23.2.57.2.22 main.c > --- main/main.c 21 May 2008 15:55:31 -0000 1.640.2.23.2.57.2.22 > +++ main/main.c 16 Jun 2008 02:53:02 -0000 > @@ -1527,6 +1527,8 @@ > zend_post_deactivate_modules(TSRMLS_C); > } zend_end_try(); > > + zend_destroy_rsrc_list(&EG(regular_list) TSRMLS_CC); > + > /* 9. SAPI related shutdown (free stuff) */ > zend_try { > sapi_deactivate(TSRMLS_C); > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php Lukas Kahwe Smith mls@pooteeweet.org