adamwill / 389-ds-base

Forked from 389-ds-base 4 years ago
Clone

4d82507 Bug 863576 - Dirsrv deadlock locking up IPA

Authored and Committed by Noriko Hosoi 11 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.
    (cherry picked from commit c19bb9dd1e95ee98a53a06f3d7eefb4dce5bc0ef)
    
        
file modified
+1 -1
file modified
+1 -1