[issue7339] bsddb crashes when transaction limit occurs

Paul Colomiets report at bugs.python.org
Tue Nov 17 17:39:11 CET 2009


New submission from Paul Colomiets <pc at gafol.net>:

When maximum transaction number exceeded and DBEnv->txn_begin returns
with error ENOMEM, error with following traceback occur:

#0  0x0000000803d4fa48 in DBTxn_dealloc (self=0x846480648) at _bsddb.c:1235
#1  0x0000000803d506dc in newDBTxnObject (myenv=0x804c23d98, parent=0x0,
txn=Variable "txn" is not available.
) at _bsddb.c:1179
#2  0x0000000803d50770 in DBEnv_txn_begin (self=0x804c23d98,
args=Variable "args" is not available.
) at _bsddb.c:4584
#3  0x0000000000523ea4 in PyCFunction_Call ()
[..snip..]

I believe that following patch will fix that problem:

Index: Modules/_bsddb.c
===================================================================
--- Modules/_bsddb.c	(revision 76338)
+++ Modules/_bsddb.c	(working copy)
@@ -1232,7 +1232,7 @@
     if (self->env) {
         Py_DECREF(self->env);
     } else {
-        Py_DECREF(self->parent_txn);
+        Py_XDECREF(self->parent_txn);
     }
     PyObject_Del(self);
 }

Seems that normally either env or parent_txn attribute is not null but
when transaction where not created it's untrue (look at the end of
newDBTxnObject if you don't trust :) )

----------
components: Library (Lib)
messages: 95389
nosy: pc
severity: normal
status: open
title: bsddb crashes when transaction limit occurs
type: crash
versions: Python 2.6

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue7339>
_______________________________________


More information about the Python-bugs-list mailing list