c19bb9d Bug 863576 - Dirsrv deadlock locking up IPA

Authored and Committed by Noriko Hosoi 6 years ago
    Bug 863576 - Dirsrv deadlock locking up IPA
    
    https://bugzilla.redhat.com/show_bug.cgi?id=863576
    
    Bug Description: Abandon of a Simple Paged Results request causes
    the self deadlock.  When abandoning a simple paged result request,
    the mutex for the connection object c_mutex is locked in do_abandon.
    But to free a pagedresult massage id, pagedresults_free_one_msgid
    called from do_abandon tries to acquire lock on c_mutex again.
    The NSPR lock function PR_Lock is not self re-entrant.  Thus the
    server hangs there due to the self-deadlock.
    
    Fix Description: This patch is removing to call PR_Lock(c_mutex)
    in pagedresults_free_one_msgid and renamed it to pagedresults_free_
    one_msgid_nolock.  To maintain the consistency, "_nolock" is added
    to other pagedresults apis which do not call PR_Lock in it.
    Also, stricter locking on c_mutex is being added to pagedresults_
    parse_control_value to protect the pagedresults related field in
    the connection object.
    
        
file modified
+1 -1
file modified
+1 -1