New submission from Paul Colomiets :
When maximum transaction number exceeded and DBEnv->txn_begin returns
with error ENOMEM, error with following traceback occur:
#0 0x000803d4fa48 in DBTxn_dealloc (self=0x846480648) at _bsddb.c:1235
#1 0x000803d506dc in newDBTxnObject (myenv=0x804c23d98, parent=0x0,
txn=Variable "txn" is not available.
) at _bsddb.c:1179
#2 0x000803d50770 in DBEnv_txn_begin (self=0x804c23d98,
args=Variable "args" is not available.
) at _bsddb.c:4584
#3 0x00523ea4 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
<http://bugs.python.org/issue7339>
___
___
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com