I'm building an application using Python 2.3's bsddb wrapper module
around BerkeleyDB 4.1.25 on RH9. My application does a number of reads
and writes and at one point it deadlocks. I'm using BTrees,
transactions, and threads, although at the deadlock point, I believe
there is only one thread in operation.
The deadlock is totally reproducible, and attaching to the running
process, I can see it happens in lock/lock.c:830. However, I've tried
running db_deadlock in the directory with my environment, and it never
seems to do anything. It doesn't break any locks, or otherwise provide
any useful information. It just returns immediately.
All my reads and writes are within a transaction, which I provide when I
get or set any value. What else can I do to debug or avoid this
deadlock situation?