https://bugs.openldap.org/show_bug.cgi?id=9911
Issue ID: 9911 Summary: MDB_PROBLEM: Unexpected problem - txn should abort, because of mdb_page_loose Product: LMDB Version: unspecified Hardware: All OS: All Status: UNCONFIRMED Keywords: needs_review Severity: normal Priority: --- Component: liblmdb Assignee: bugs@openldap.org Reporter: info@parlepeuple.fr Target Milestone: ---
In mdb.master3, when running some test suite, the transaction commit fails with MDB_PROBLEM: Unexpected problem - txn should abort
The operation that where executed on a blank database: mdb_env_create mdb_env_open with CREATE mode mdb_txn_begin RW mdb_put one key value mdb_txn_commit mdb_txn_begin RW mdb_drop mdb_txn_commit
This last commit fails with : MDB_PROBLEM: Unexpected problem - txn should abort
My investigation shows that the lines 4401-4403 are triggered: if ((unsigned)txn->mt_loose_count != txn->mt_u.dirty_list[0].mid) { rc = MDB_PROBLEM; /* mt_loose_pgs does not match dirty_list */ goto fail; }
And this is because of the commit #12ee1a2 "Use mdb_page_loose() more" https://git.openldap.org/openldap/openldap/-/commit/12ee1a2d7104616ccb812db5...
that does a mdb_page_loose instead of a mdb_midl_append on line 9496.
Reverting this commit solves the problem.
This commit seems to be a non essential optimization.
But you will see into it as i am not so familiar with the refactoring that Hallvard Furuseth did back in July 2017.
It would be nice to have an official fix from you, instead of this revert I did temporally to be able to continue working.