Our study shows another potential deadlock in back-bdb/cache.c OpenLDAP 2.4.8
In bdb_cache_release_all(), thread wants to lock the c_lru_mutex at cache.c:1366, while it has the c_rwlock from cache.c:1364
In bdb_cache_delete_internal(), thread wants to lock the c_rwlock at cache.c:1317, while it has the c_lru_mutex from callers, bdb_cache_delete() at cache.c:1259, or bdb_cache_lru_purge() at cache.c:652.
Note that two deadlock bugs of the same two mutexes have been reported and verified in the issue tracking system
http://www.openldap.org/its/index.cgi/Software%20Bugs?id=4254
http://www.openldap.org/its/index.cgi/Software%20Bugs?id=3494
Yin Wang