https://bugzilla.redhat.com/show_bug.cgi?id=528567
This issue was encountered by the freeIPA project as described in bug 528209. Due to the way we are using PR_RWLock to protect the backend structure, a deadlock can occur when an online backend maintenance operation (such as reindexing) occurs. The way PR_RWLock works is that a waiting writer will block any threads attempting to get a new read lock. If you use read locks in a re-entrant manor, a request for a write lock between the two read lock calls will cause a deadlock (the writer is waiting for the reader to exit, and the reader can't get the re-entrant lock since the writer is waiting). This deadlock can happen when a post-op plug-in is called since a read lock on the backend is already held before the plug-ins are called and not released until after the plug-ins finish. If any of the plug-ins do some sort of internal operation on the same backend, the backend will end up being locked again by the same thread. This typically isn't a problem, but if any other thread attempts to get a write lock on the same backend (such as the db2index task), a deadlock can occur.
I think this is fixed by using posix rwlocks instead of NSPR rwlocks
commit changeset:f9b199e/389-ds-base Author: Nathan Kinder nkinder@redhat.com Date: Wed Aug 17 09:20:26 2011 -0700 This adds a new slapi_rwlock API and uses it throughout the server. Internally, this API can allow either NSPR or POSIX rwlocks to be used for different platforms. This patch makes it use the POSIX implementation on Linux platforms since the NSPR implementation does not safely allow re-entrant reader locks to be used.
fixed in 1.2.9 in rhel 6.2.z
Added initial screened field value.
Metadata Update from @rmeggins: - Issue assigned to rmeggins - Issue set to the milestone: 1.2.10
389-ds-base is moving from Pagure to Github. This means that new issues and pull requests will be accepted only in 389-ds-base's github repository.
This issue has been cloned to Github and is available here: - https://github.com/389ds/389-ds-base/issues/100
If you want to receive further updates on the issue, please navigate to the github issue and click on subscribe button.
subscribe
Thank you for understanding. We apologize for all inconvenience.
Metadata Update from @spichugi: - Issue close_status updated to: wontfix (was: Fixed)
Login to comment on this ticket.