race in module_registry_request_startup
| From: | Sascha Schumann | Date: | Fri, 08 Oct 1999 12:52:17 +0000 |
| Subject: | race in module_registry_request_startup | ||
| Groups: | php.version4 | ||
| Request: | Send a blank email to php-version4+get-5375@lists.php.net to get a copy of this message | ||
On request startup, module_registry_request_startup() is
called for the modules stored in module_registry. This list
is shared across all threads.
In this list, _zend_module_entr(ies) are stored. This
structure contains a per-thread element (request_started)
which must not be shared across threads.
This race causes segfaults, since modules are not initialized
properly, but their request shutdown function is called
(request_started == 1).
Temporary "solution":
- mutexing from php_request_startup until php_request_shutdown
Real solution:
- remove request_started
- introduce a list of started modules per request
- on request shutdown, req shutdown all modules stored in
that list
--
Regards,
Sascha Schumann
Consultant