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. -- Hallvard