Spinlock-based implementation of PR_StackPop/Push can cause a hang on Solaris. When thread that is holding a lock gets descheduled via SIGLWP and goes into do_preempt - all other threads trying to access the stack are left in a spinning state. For some unknown reason Solaris doesn't seem to give the CPU back to the owner of the lock. This is not a priority inversion problem.
Created attachment 60667 [details] [diff] [review] Proposed patch. Ruslan, please review this patch.
Created attachment 60669 [details] [diff] [review] Proposed patch for NSPRPUB_RELEASE_4_1_BRANCH. I added a reference to this bug in the comment.
Attachment #60667 - Attachment is obsolete: true
Fixed on the NSPRPUB_RELEASE_4_1_BRANCH, NSPRPUB_PRE_4_2_CLIENT_BRANCH, and the main trunk of NSPR.
Status: NEW → RESOLVED
Last Resolved: 17 years ago
Priority: -- → P1
Resolution: --- → FIXED
Target Milestone: --- → 4.1.3
You need to log in before you can comment on or make changes to this bug.