Crash with Python bindings
Konrad Hinsen
konrad.hinsen at fastmail.net
Tue Jan 12 01:41:57 PST 2016
Hi everyone,
I have been writing quite a few Python scripts for notmuch before
running into a strange bug. Here is a minimal script producing it:
--------------------------------------------------
from notmuch import Query, Database
def foo(bar):
pass
db = Database()
q = Query(db, "*")
db.close()
--------------------------------------------------
Running this script (Python 3.5, MacOS X) yields:
[1] 22478 abort pydev3 Temp/notmuch_test.py
The crash actually happens *after* db.close(), when the Python
interpreter exists, and therefore I suspect that no data is lost, but I
hesitate to use scripts with that behavior in production use.
The strange part is that what causes the crash is the presence of the
function foo(), even though it is never called. Remove foo and the
script runs fine. It is also necessary to create a Query object. The
combination of a function definition (any) and the creation of a Query
object yields the crash. This looks like a memory management issue, but
I didn't explore it any further.
Cheers,
Konrad.
More information about the notmuch
mailing list