summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2006-01-25 05:21:55 (GMT)
committerNeal Norwitz <nnorwitz@gmail.com>2006-01-25 05:21:55 (GMT)
commit62a21121b4acf9b37ea62e64498a869048fefb5b (patch)
tree282bdbc5fc5c4f9edc9f94a0c0288dd3764aa7a0 /Lib
parent2a4712dc80bcc873bea2238fcc855c9b92b82095 (diff)
downloadcpython-62a21121b4acf9b37ea62e64498a869048fefb5b.zip
cpython-62a21121b4acf9b37ea62e64498a869048fefb5b.tar.gz
cpython-62a21121b4acf9b37ea62e64498a869048fefb5b.tar.bz2
Fix bug #1413192, fix seg fault in bsddb if a txn was deleted before the env.
Will backport.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/bsddb/test/test_1413192.py16
-rw-r--r--Lib/bsddb/test/test_all.py6
-rw-r--r--Lib/test/test_bsddb3.py6
3 files changed, 28 insertions, 0 deletions
diff --git a/Lib/bsddb/test/test_1413192.py b/Lib/bsddb/test/test_1413192.py
new file mode 100644
index 0000000..45afb36
--- /dev/null
+++ b/Lib/bsddb/test/test_1413192.py
@@ -0,0 +1,16 @@
+
+# http://python.org/sf/1413192
+#
+# This test relies on the variable names, see the bug report for details.
+# The problem was that the env was deallocated prior to the txn.
+
+from bsddb import db
+
+env_name = '.'
+
+env = db.DBEnv()
+env.open(env_name, db.DB_CREATE | db.DB_INIT_TXN)
+the_txn = env.txn_begin()
+
+map = db.DB(env)
+map.open('xxx.db', "p", db.DB_HASH, db.DB_CREATE, 0666, txn=the_txn)
diff --git a/Lib/bsddb/test/test_all.py b/Lib/bsddb/test/test_all.py
index 701bdfe..972cd06 100644
--- a/Lib/bsddb/test/test_all.py
+++ b/Lib/bsddb/test/test_all.py
@@ -46,6 +46,12 @@ test_all.verbose = verbose
def suite():
+ try:
+ # this is special, it used to segfault the interpreter
+ import test_1413192
+ except:
+ pass
+
test_modules = [
'test_associate',
'test_basics',
diff --git a/Lib/test/test_bsddb3.py b/Lib/test/test_bsddb3.py
index cd6ccc6..34555ff 100644
--- a/Lib/test/test_bsddb3.py
+++ b/Lib/test/test_bsddb3.py
@@ -22,6 +22,12 @@ if 'silent' in sys.argv: # take care of old flag, just in case
def suite():
+ try:
+ # this is special, it used to segfault the interpreter
+ import bsddb.test.test_1413192
+ except:
+ pass
+
test_modules = [
'test_associate',
'test_basics',