|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #15254 modules are unloaded in the wrong order
Submitted: 2002-01-28 08:14 UTC Modified: 2002-06-18 03:29 UTC
From: stephensb at aciworldwide dot com Assigned:
Status: Closed Package: Scripting Engine problem
PHP Version: 4.1.1 OS: Linux, Solaris and win32
Private report: No CVE-ID: None
 [2002-01-28 08:14 UTC] stephensb at aciworldwide dot 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.)


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2002-01-28 08:35 UTC]
i remember doing something about that somewhere
around 4.0.5, too, but i can't remember the outcome :(
 [2002-02-03 20:15 UTC]
Not only for unloading, but also loading modules have smilar problem.
Just reminding :)
 [2002-02-04 06:32 UTC] stephensb at aciworldwide dot 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

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-06-18 03:29 UTC]
This bug has been fixed in CVS. You can grab a snapshot of the
CVS version at In case this was a documentation 
problem, the fix will show up soon at
In case this was a website problem, the change will show
up on the site and on the mirror sites.
Thank you for the report, and for helping us make PHP better.

PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Jun 23 03:01:28 2024 UTC