Spinlock-based PR_Stack* can cause hang on Solaris

RESOLVED FIXED in 4.1.3

Status

P1
normal
RESOLVED FIXED
17 years ago
17 years ago

People

(Reporter: ruslan, Assigned: wtc)

Tracking

4.1.2
4.1.3
Sun
Solaris

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(2 attachments, 1 obsolete attachment)

(Reporter)

Description

17 years ago
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.
(Assignee)

Comment 1

17 years ago
Created attachment 60667 [details] [diff] [review]
Proposed patch.

Ruslan, please review this patch.
(Assignee)

Comment 2

17 years ago
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
(Assignee)

Comment 3

17 years ago
Created attachment 60754 [details] [diff] [review]
Proposed patch for the tip.
(Assignee)

Comment 4

17 years ago
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.