[mod_python] apache pysqlite segfault

Daniel Nogradi nogradi at gmail.com
Sun May 7 11:33:22 EDT 2006


(crossposted to pysqlite and mod_python)

Some time ago I had problems with running pysqlite from mod_python and
every version of pysqlite beyond 2.0.6 was causing apache to segfault. Now I
upgraded several parts of my system including pysqlite but had no luck,
the following combination

sqlite 3.3.5    (compiled with threadsafe enabled)
pysqlite 2.2.2
apache 2.0.53
mod_python 3.2.8
python 2.4

still makes apache segfault. The last couple of lines from running gdb
on the core file is:

Loaded symbols for /usr/lib/python2.4/lib-dynload/_weakref.so
Reading symbols from
/usr/lib/python2.4/site-packages/pysqlite2/_sqlite.so...done.
Loaded symbols for /usr/lib/python2.4/site-packages/pysqlite2/_sqlite.so
Reading symbols from /usr/lib/libsqlite3.so.0...done.
Loaded symbols for /usr/lib/libsqlite3.so.0
#0  flush_statement_cache (self=0xb7dde200) at src/connection.c:156
156         self->statement_cache->decref_factory = 0;

and then a backtrace gives

(gdb) bt
#0  flush_statement_cache (self=0xb7dde200) at src/connection.c:156
#1  0x009daa39 in connection_close (self=0xb7dde200, args=0x0) at
src/connection.c:237
#2  0x05ba3dce in PyEval_EvalFrame () from /etc/httpd/modules/mod_python.so
#3  0x05ba44d6 in PyEval_EvalCodeEx () from /etc/httpd/modules/mod_python.so
#4  0x05bf07a2 in function_call () from /etc/httpd/modules/mod_python.so
#5  0x05b500c8 in PyObject_Call () from /etc/httpd/modules/mod_python.so
#6  0x05b9ed79 in PyEval_EvalFrame () from /etc/httpd/modules/mod_python.so
#7  0x05ba44d6 in PyEval_EvalCodeEx () from /etc/httpd/modules/mod_python.so
#8  0x05ba229f in PyEval_EvalFrame () from /etc/httpd/modules/mod_python.so
#9  0x05ba3d50 in PyEval_EvalFrame () from /etc/httpd/modules/mod_python.so
#10 0x05ba3d50 in PyEval_EvalFrame () from /etc/httpd/modules/mod_python.so
#11 0x05ba44d6 in PyEval_EvalCodeEx () from /etc/httpd/modules/mod_python.so
#12 0x05bf07a2 in function_call () from /etc/httpd/modules/mod_python.so
#13 0x05b500c8 in PyObject_Call () from /etc/httpd/modules/mod_python.so
#14 0x05b586c5 in instancemethod_call () from /etc/httpd/modules/mod_python.so
#15 0x05b50308 in PyObject_CallMethod () from /etc/httpd/modules/mod_python.so
#16 0x05b4adb5 in python_handler (req=0x8925510, phase=0x5bf95f3
"PythonHandler") at mod_python.c:1114
#17 0x00509a27 in ap_run_handler () from /usr/sbin/httpd
#18 0x08715890 in ?? ()
#19 0x005099fe in ap_run_handler () from /usr/sbin/httpd
#20 0x08925510 in ?? ()
#21 0x08925510 in ?? ()
#22 0xbf926ff8 in ?? ()
#23 0x00509e93 in ap_invoke_handler () from /usr/sbin/httpd
Previous frame inner to this frame (corrupt stack?)
(gdb)

So pysqlite version 2.0.5 is fine, but no version beyond that. While
searching for a solution I came across many times the suggestion (also
raised by Jim as far as I remember) that different apache modules
using different versions of the same library might cause this
behaviour but I don't have php-sqlite or anything else resembling (to
me at least :)) such a situation. Which modules would be suspicious?

What else could I check or what details should I send that would be
useful to debug this?



More information about the Mod_python mailing list