Closed
Bug 957812
Opened 12 years ago
Closed 12 years ago
Use NSSRWLock instead of PRRWLock in sslSessionID
Categories
(NSS :: Libraries, defect, P1)
Tracking
(Not tracked)
RESOLVED
WONTFIX
3.15.5
People
(Reporter: wtc, Assigned: wtc)
Details
Attachments
(1 file)
11.52 KB,
patch
|
briansmith
:
review+
|
Details | Diff | Splinter Review |
Both NSSRWLock and PRRWLock have debug code that enforces lock ranking.
For PRRWLock, this code is enabled if DEBUG is defined.
For NSSRWLock, this code is enabled if DEBUG_RANK_ORDER is defined.
Since DEBUG_RANK_ORDER is an uncommon macro, this code is effectively
never used with NSSRWLock.
I found that this code has several bugs (see NSPR bug 957458). So it
is better to use NSSRWLock. Also, NSSRWLock is more commonly used than
PRRWLock in NSS:
http://mxr.mozilla.org/nss/search?string=PRRWLock
http://mxr.mozilla.org/nss/ident?i=NSSRWLock
Attachment #8357423 -
Flags: review?(brian)
Comment 1•12 years ago
|
||
Comment on attachment 8357423 [details] [diff] [review]
Patch
Review of attachment 8357423 [details] [diff] [review]:
-----------------------------------------------------------------
I originally used the NSPR lock because I had thought that the NSPR version was lighter-weight. I believe I thought that the NSS variant had additional re-entrance guarantees that made it at least slightly less efficient. But, it is hard to remember now.
Attachment #8357423 -
Flags: review?(brian) → review+
Assignee | ||
Comment 2•12 years ago
|
||
Brian: I think you are right. I forgot that NSSRWLock is re-entrant. NSSRWLock is
only slightly more expensive than PRRWLock, requiring a PR_GetCurrentThread() call
to acquire a lock. But I am worried that my patch will result in the confusion
that the |lock| member of sslSessionID can be locked recursively.
Although the lock rank checking code of PRRWLock has several bugs, we only hit
a minor one (the thread-specific lock stack is created unnecessarily) in debug
builds because this lock has no lock rank. So I am willing to abandon my patch.
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → WONTFIX
You need to log in
before you can comment on or make changes to this bug.
Description
•