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: [email protected]
          Reporter: [email protected]
  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/12ee1a2d7104616ccb812db5d5f3548da507d9fc

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.

-- 
You are receiving this mail because:
You are on the CC list for the issue.

Reply via email to