Another sync issue:
mdb_env_sync() syncs the wrong way (msync vs fdatasync) if it runs in a process with a different MDB_WRITEMAP setting than one which committed with MDB_NOSYNC or MDB_NOMETASYNC.
I.e. this statement in lmdb.h is too weak:
* Processes with and without MDB_WRITEMAP on the same environment do * not cooperate well.
I think I added it after an IRC chat. But it should either say that it can break ACID, or env_sync() called explicitly should sync more aggressively - at least if the MDB_env did not commit all transactions since last known sync.