Bug #15254 Updated: modules are unloaded in the wrong order
| From: | sniper@php.net | Date: | Mon, 17 Jun 2002 23:54:46 +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-10975@lists.php.net to get a copy of this message | ||
ID: 15254
Updated by: sniper@php.net
Reported By: stephensb@aciworldwide.com
Status: Open
-Bug Type: Reproducible crash
+Bug Type: Scripting Engine problem
Operating System: Linux, Solaris and win32
PHP Version: 4.1.1
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