Bug #15254 Updated: modules are unloaded in the wrong order
| From: | derick@php.net | Date: | Tue, 18 Jun 2002 07:29:55 +0000 |
| Subject: | Bug #15254 Updated: modules are unloaded in the wrong order | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-11025@lists.php.net to get a copy of this message | ||
ID: 15254
Updated by: derick@php.net
Reported By: stephensb@aciworldwide.com
-Status: Open
+Status: Closed
Bug Type: Scripting Engine problem
Operating System: Linux, Solaris and win32
PHP Version: 4.1.1
New Comment:
This bug has been fixed in CVS. You can grab a snapshot of the
CVS version at http://snaps.php.net/. In case this was a
documentation
problem, the fix will show up soon at http://www.php.net/manual/.
In case this was a PHP.net website problem, the change will show
up on the PHP.net site and on the mirror sites.
Thank you for the report, and for helping us make PHP better.
Previous Comments:
------------------------------------------------------------------------
[2002-02-04 06:32:13] stephensb@aciworldwide.com
For loading, I presume you're referring to the way PHP apparently loads
and unloads all the modules?
If so, then yes: that's how we noticed the problem. With our
two modules, PHP would fail to start up until we reordered
zend_hash_destroy.
Is there any reason *not* to traverse the list in reverse order in
zend_hash_destroy? It seems logical to me to try to
destroy things in the reverse order that you created them, in general.
------------------------------------------------------------------------
[2002-02-03 20:15:42] yohgaki@php.net
Not only for unloading, but also loading modules have smilar problem.
Just reminding :)
------------------------------------------------------------------------
[2002-01-28 08:35:39] hholzgra@php.net
i remember doing something about that somewhere
around 4.0.5, too, but i can't remember the outcome :(
------------------------------------------------------------------------
[2002-01-28 08:14:22] stephensb@aciworldwide.com
zend_hash_destroy destroys things in order. Thus, if one has
two loadable modules, one of which depends on the other by
calling a function in the initialization or finalization functions,
then bad things will happen whichever order they appear in php.ini,
since whichever way around they're listed,
a function will be called after the providing library has been
unloaded.
Our fix is simply to change zend_hash_destroy to traverse its list
backwards (from ht->pListTail rather than ht->pListHead).
(I believe we (probably as MessagingDirect) reported this bug in PHP3
and it was fixed then, but it seems to have reappeared.)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=15254&edit=1