make_obcallback not thread protected
------------------------------------
Key: MODPYTHON-150
URL: http://issues.apache.org/jira/browse/MODPYTHON-150
Project: mod_python
Type: Bug
Components: core
Versions: 3.2.8, 3.1.4
Reporter: Graham Dumpleton
Assigned to: Graham Dumpleton
In get_interpreter() function of src/mod_python.c the check of whether or not
the callback object has been created is not within the bounds of the
acquisition of the interpreters lock. As a result, in a multithreaded MPM,
although the creation of the interpreter itself is protected so that only one
thread will get to create it, multiple threads may decide the need to call
make_obcallback().
In the past this hasn't mattered, but now that apache.init() is doing more
complicated things, such as caching parameters as global variables and also
doing fiddles with the callback object to allow optional use of new module
importer, problems can start to arise.
To fix the issue the release of the interpreters lock needs to be moved to the
end of the get_interpreter() function.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira