The patch was incorrect and introduced numerous race conditions.
The original problem was a FreeBSD bug, subsequently fixed:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=269277
if (excl > 0)
semctl(env->me_rmutex->semid, 0, IPC_RMID);
}
-#elif defined(MDB_ROBUST_SUPPORTED)
- /* If we have the filelock: If we are the
- * only remaining user, clean up robust
- * mutexes.
- */
- if (excl == 0)
- mdb_env_excl_lock(env, &excl);
- if (excl > 0) {
- pthread_mutex_destroy(env->me_txns->mti_rmutex);
- pthread_mutex_destroy(env->me_txns->mti_wmutex);
- }
#endif
munmap((void *)env->me_txns, (env->me_maxreaders-1)*sizeof(MDB_reader)+sizeof(MDB_txninfo));
}