Debugging mod_python with Valgrind
Other people have reported the same problem with mod_python on FreeBSD I had seen before, so I'm happy that I'm not losing my mind.
I took a stab at using Valgrind to find the problem. Didn't actually find anything, but I thought I'd jot down notes on how I went about this.
First, the Valgrind port didn't seem to work on FreeBSD 6.0. When I tried running it against the sample code in the Valgrind Quick Start guide, it didn't find anything wrong with it. Ended up finding a FreeBSD 5.4 machine, which did see the expected problem.
Next, I built the Apache 2.0.x port with:
make WITH_THREADS=1 WITH_DEBUG=1, and then built mod_python
which uses APXS and picks up the debug compile option from that.
Then, in the mod_python distribution, went into the
test directory, and downloaded a Valgrind suppression
file for Python,
and in it uncommented the suppressions for
PyObject_Realloc (otherwise the Valgrind output is full
of stuff that is really OK).
test/test.py around line 307 where it starts Apache, to insert
valgrind --tool=memcheck --logfile=/tmp/valgrind_httpd --suppressions=valgrind-python.supp
At the front of the
cmd variable that's being composed to execute httpd.
python test.py, and then looked at
see the results.