Graham Dumpleton
Wed, 15 Feb 2006 13:14:49 -0800
I have already noted that apache.register_cleanup() and req.server.register_cleanup() are prone to failure. The problem is that they are run in the context of a signal handler. See: http://issues.apache.org/jira/browse/MODPYTHON-109 I suggested in the JIRA issue that these functions may need to be removed unless an equivalent can be found that is safe. Graham On 16/02/2006, at 6:55 AM, Nicolas Lehuen wrote:
2006/2/15, Jim Gallacher <[EMAIL PROTECTED]>:Nicolas Lehuen wrote:2006/2/15, Jim Gallacher <[EMAIL PROTECTED]>:Nicolas Lehuen wrote:Hi, I've built Apache 2.2 and tested mod_python SVN trunk with it.The two register_cleanup tests fail. Apparently it's because the testcode registers a cleanup function giving the current request asparameter. Of course when the cleanup function is called, the requestobject is no longer valid, and Apache segfaults.Fixing this is only a matter of fixing the test code, yet I wonder howthis code could properly run on Apache 2.0.55. Maybe the requestobject was not properly destroyed and this has been fixed in Apache2.2 ?The tests pass as-is on Debian linux, so this seems to be Win32 specific.JimYet there is no way it should pass anywhere : the test is de factousing an old request object during the shutdown of the server. Eitherthis old request object is still valid, and we have to ask ourselves why it hasn't be properly destroyed, or the old request object isn't valid and we are just lucky under Linux and unlucky under Win32. BTW, I've launched the debugger and Apache segfaults when dereferencing the request object to get its server object, during an ap_log_rerror() call.Just to make sure I didn't introduce any regressions with the code cleanup I recently checked in, could you retest with revision 376545?The only diffence between that rev and 3.2.7 is the Apache 2.2 supportand bash 3.1 configure problem.svn co -r 376545 https://svn.apache.org/repos/asf/httpd/mod_python/ trunkmp.3765545 JimI've corrected the tests and the documentation, which were both wrong about the usage of apache.register_cleanup and server.register_cleanup. I still wonder how those two test could possibly have passed before. The usage of apache.register_cleanup was plain wrong, it should never have passed. This is not particularly reassuring about the legitimity of our test suite. I've double checked the code, and I don't see what's wrong here, so if anyone want to give a try... Anyway, FWIW, now the whole unit test suite passes with Apache 2.2 under Windows XP SP2. Regards, Nicolas