https://bugs.openldap.org/show_bug.cgi?id=10552
Issue ID: 10552 Summary: LMDB database getting corrupted Product: LMDB Version: unspecified Hardware: All OS: All Status: UNCONFIRMED Keywords: needs_review Severity: normal Priority: --- Component: liblmdb Assignee: bugs@openldap.org Reporter: donxenapo@gmail.com Target Milestone: ---
We have deployed LMDB version 1.0.0 and we're getting corruption-type errors from some users. We don't have the exact number of affected users yet, but apparently deleting the database and recreating it seems to work around the issue. The error seems to happen either during a get or a put request, and once the database is corrupted, it will keep resulting in the same error for that user until the database is purged/recreated. Here are some examples of errors that we're getting:
During Put: LMDB Put Failed Error: MDB_PROBLEM: Unexpected problem - txn should abort LMDB Put Failed Error: MDB_CORRUPTED: Located page was wrong type LMDB Put Failed Error: MDB_PAGE_NOTFOUND: Requested page not found
During Get: LMDB Get Failed Error: MDB_PAGE_NOTFOUND: Requested page not found LMDB Get Failed Error: MDB_BAD_TXN: Transaction must abort, has a child, or is invalid
Sometimes it crashes during Put in memcpy, instead of returning an error. Call stack: memcpy(void) mdb_cursor_get mdb_txn_begin
We're still in the process of collecting corrupted databases from our users, so we don't have any corruption examples yet.