https://bugs.openldap.org/show_bug.cgi?id=9496
--- Comment #9 from Howard Chu hyc@openldap.org --- (In reply to opensource@gmx-topmail.de from comment #8)
After applying this patch, I observed some conditions in which MDB_PREVSNAPSHOT does not work anymore: instead of the previous commit, the current commit is taken.
While the exact conditions when this happens is not 100% clear, these are the observations:
- Having the DB on a RAM disk has impact. On macOS, we observed that it is
always reproducible for one of our test case (straight forward test for MDB_PREVSNAPSHOT but too much context required to share here). RAM disk was created like that: diskutil partitionDisk $(hdiutil attach -nomount ram://2048000) 1 GPTFormat APFS 'ramdisk' '100%'
- When building with thread sanitizer the issue was also observed on Linux.
It was reproducible in about half of the runs (flaky).
Note that all writes in LMDB are fully serialized, which means there cannot possibly be any threading bugs in LMDB. Any thread sanitizer issues showing up indicates bugs in your calling app.