https://bugs.openldap.org/show_bug.cgi?id=9524

          Issue ID: 9524
           Summary: Removing last entry in database triggers MDB_PROBLEM
           Product: LMDB
           Version: unspecified
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: ---
         Component: liblmdb
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: ---

With a fresh database, if you have have an open read transaction, and you
create a new entry in a write transaction and commit it, and then create a new
transaction and delete that entry, when you commit, it will return an
MDB_PROBLEM from approximately line 4408 from the mt_loose_count/dirty_list
check. This seems to occur on mdb.master3, but not mdb.master. Here is a
minimal example/test-case of how to reproduce:

    MDB_env* env;
    mdb_env_create(&env);
    int rc, flags = 0;
    mdb_env_open(env, "test", flags, 0664);
    MDB_txn* readonly_txn;
    mdb_txn_begin(env, nullptr, MDB_RDONLY, &readonly_txn);    
    MDB_txn* txn;
    MDB_dbi dbi;
    mdb_txn_begin(env, nullptr, 0, &txn);
    mdb_dbi_open(txn, nullptr, MDB_CREATE, &dbi);
    MDB_val val;
    val.mv_data = (void*) "test";
    val.mv_size = 4;
    mdb_put(txn, dbi, &val, &val, 0);
    mdb_txn_commit(txn);
    mdb_txn_begin(env, nullptr, 0, &txn);
    mdb_del(txn, dbi, &val, nullptr);
    rc = mdb_txn_commit(txn); // this returns MDB_PROBLEM

(let me know if this should be submitted differently)

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

Reply via email to