[Python-Dev] test_bsddb hangs with CVS Python
Tim Peters
tim.one at comcast.net
Mon Oct 6 10:20:56 EDT 2003
[Jeremy Hylton]
> test_bsddb hangs for me everytime. This is a current CVS python with
> BerkeleyDB 4.1.25. I've tried commenting out test_pop and
> test_mapping_iteration_methods, but it still hangs somewhere.
On Win98SE, it hangs every time in test_popitem, which I changed like so:
def test_popitem(self):
print [1] # ADDED THIS
k, v = self.f.popitem()
print [2] # AND THIS
self.assert_(k in self.d)
self.assert_(v in self.d.values())
self.assert_(k not in self.f)
self.assertEqual(len(self.d)-1, len(self.f))
It prints [1], but not [2]:
C:\Code\python\PCbuild>python_d ../lib/test/test_bsddb.py -v
test_change (__main__.TestBTree) ... ok
test_clear (__main__.TestBTree) ... ok
test_close_and_reopen (__main__.TestBTree) ... ok
test_contains (__main__.TestBTree) ... ok
test_first_next_looping (__main__.TestBTree) ... ok
test_get (__main__.TestBTree) ... ok
test_getitem (__main__.TestBTree) ... ok
test_has_key (__main__.TestBTree) ... ok
test_keyordering (__main__.TestBTree) ... ok
test_len (__main__.TestBTree) ... ok
test_mapping_iteration_methods (__main__.TestBTree) ... ok
test_pop (__main__.TestBTree) ... ok
test_popitem (__main__.TestBTree) ... [1]
A stacktrace at the point it's hung; looks like deadlock:
_BSDDB_D! __db_win32_mutex_lock + 134 bytes
_BSDDB_D! __lock_get + 2264 bytes
_BSDDB_D! __lock_get + 197 bytes
_BSDDB_D! __db_lget + 365 bytes
_BSDDB_D! __bam_search + 322 bytes
_BSDDB_D! __bam_c_rget + 3535 bytes
_BSDDB_D! __bam_c_dup + 1251 bytes
_BSDDB_D! __db_c_get + 875 bytes
_BSDDB_D! __db_delete + 378 bytes
_DB_delete(DBObject * 0x00ba1ee8, __db_txn * 0x00000000,
__db_dbt * 0x0062d9b0, int 0)
line 545 + 29 bytes
DB_ass_sub(DBObject * 0x00ba1ee8, _object * 0x00881d10,
_object * 0x00000000)
line 2343 + 17 bytes
PyObject_DelItem(_object * 0x00ba1ee8, _object * 0x00881d10)
line 155 + 16 bytes
eval_frame(_frame * 0x0098a368) line 1460 + 13 bytes
PyEval_EvalCodeEx(PyCodeObject * 0x00bb6550, _object * 0x008782d8,
_object * 0x00000000, _object * * 0x008f034c,
int 2, _object * * 0x00000000, int 0,
_object * * 0x00000000, int 0, _object * 0x00000000)
line 2663 + 9 bytes
...
eval_frame() is executing DELETE_SUBSCR.
Good(?) news: test_popitem continues to hang even if all other tests are
commented out:
C:\Code\python\PCbuild>python_d ../lib/test/test_bsddb.py -v
test_popitem (__main__.TestBTree) ... [1]
Same stacktrace at that point.
I was using a debug-build CVS Python above. It also hangs the same place
using a release-build Python.
More information about the Python-Dev
mailing list