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, valgrind-python.supp
,
and in it uncommented the suppressions for PyObject_Free
and PyObject_Realloc
(otherwise the Valgrind output is full
of stuff that is really OK).
Then tweaked 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.
Finally, ran python test.py
, and then looked at /tmp/valgrind_httpd.pid####
to
see the results.