https://bugs.openldap.org/show_bug.cgi?id=9567
Howard Chu hyc@openldap.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |INVALID Status|UNCONFIRMED |RESOLVED
--- Comment #1 from Howard Chu hyc@openldap.org --- Thanks for the report, but this is a postfix bug, not an LMDB bug.
#### gdb) r Starting program: /home/software/postfix-3.6.0/bin/postmap lmdb:/tmp/aa [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Breakpoint 1, mdb_txn_end (txn=0x0, mode=0) at mdb.c:3314 3314 { (gdb) bt #0 mdb_txn_end (txn=0x0, mode=0) at mdb.c:3314 #1 0x0000555555597c8b in mdb_txn_abort (txn=0x5555555e7c80) at mdb.c:3428 #2 0x000055555558a497 in slmdb_put (slmdb=0x5555555e7fc8, mdb_key=0x7fffffffe410, mdb_value=0x7fffffffe420, flags=16) at slmdb.c:585 #3 0x0000555555588bf3 in dict_lmdb_update (dict=0x5555555e7f30, name=0x5555555e3050 "aa", value=0x5555555e5753 "2") at dict_lmdb.c:274 #4 0x000055555555cc07 in postmap (map_type=0x7fffffffead8 "lmdb", path_name=0x7fffffffeadd "/tmp/aa", postmap_flags=3, open_flags=578, dict_flags=671745) at postmap.c:546 #5 0x000055555555e6ec in main (argc=2, argv=0x7fffffffe778) at postmap.c:1140 (gdb) up #1 0x0000555555597c8b in mdb_txn_abort (txn=0x5555555e7c80) at mdb.c:3428 3428 mdb_txn_end(txn, MDB_END_ABORT|MDB_END_SLOT|MDB_END_FREE); (gdb) down #0 mdb_txn_end (txn=0x0, mode=0) at mdb.c:3314 3314 { (gdb) n 3315 MDB_env *env = txn->mt_env; (gdb) bt #0 mdb_txn_end (txn=0x5555555e7c80, mode=2097186) at mdb.c:3315 #1 0x0000555555597c8b in mdb_txn_abort (txn=0x5555555e7c80) at mdb.c:3428 #2 0x000055555558a497 in slmdb_put (slmdb=0x5555555e7fc8, mdb_key=0x7fffffffe410, mdb_value=0x7fffffffe420, flags=16) at slmdb.c:585 #3 0x0000555555588bf3 in dict_lmdb_update (dict=0x5555555e7f30, name=0x5555555e3050 "aa", value=0x5555555e5753 "2") at dict_lmdb.c:274 #4 0x000055555555cc07 in postmap (map_type=0x7fffffffead8 "lmdb", path_name=0x7fffffffeadd "/tmp/aa", postmap_flags=3, open_flags=578, dict_flags=671745) at postmap.c:546 #5 0x000055555555e6ec in main (argc=2, argv=0x7fffffffe778) at postmap.c:1140 (gdb) n ####
slmdb.c:585 calls mdb_txn_abort() on a txn which was assigned from slmdb->txn. When mdb_txn_abort() returns, txn is no longer valid. slmdb->txn must be set to NULL here and that's not happening. So slmdb is closing the same txn twice, which is a user error. Please report this to the postfix developers, thanks.