Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:17313 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 63621 invoked by uid 1010); 18 Jul 2005 13:15:48 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 63606 invoked from network); 18 Jul 2005 13:15:48 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 18 Jul 2005 13:15:48 -0000 X-Host-Fingerprint: 80.74.107.235 mail.zend.com Linux 2.5 (sometimes 2.4) (4) Received: from ([80.74.107.235:44926] helo=mail.zend.com) by pb1.pair.com (ecelerity 2.0 beta r(6227M)) with SMTP id A7/96-61486-28BABD24 for ; Mon, 18 Jul 2005 09:15:47 -0400 Received: (qmail 31581 invoked from network); 18 Jul 2005 13:15:43 -0000 Received: from shire.zend.office (10.1.2.160) by internal.zend.office with SMTP; 18 Jul 2005 13:15:43 -0000 Date: Mon, 18 Jul 2005 16:15:43 +0300 (IDT) X-X-Sender: frodo@shire.zend.office To: PHP Development Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Subject: module startup problem in 5.1 From: stas@zend.com (Stanislav Malyshev) I see very serious problem un current module registration/startup functions in 5.1. In 5.0, there was a function zend_startup_module which did two things: 1. Register PHP module with the system 2. Run startup function of the module Now, in 5.1 those functions got spearated. However, the problem is that it now looks like this: ZEND_API int zend_startup_module(zend_module_entry *module) { TSRMLS_FETCH(); if (zend_register_internal_module(module TSRMLS_CC) == SUCCESS && zend_startup_module_ex(module TSRMLS_CC) == SUCCESS) { return SUCCESS; } return FAILURE; } The trouble here is that zend_register_internal_module stores module in internal hash as value, so when zend_startup_module_ex is run, it runs not on the value in the hash but on original value. This leads to module_started being never set in the hash value on module which was added in runtime - meaning its destructor is never called on shutdown. Since zend_register_internal_module never returns the hash value, I see no easy way to fix this, but I think it must be fixed ASAP. -- Stanislav Malyshev, Zend Products Engineer stas@zend.com http://www.zend.com/ +972-3-6139665 ext.115