Closed Bug 3233 Opened 26 years ago Closed 26 years ago

plevent.c: blocking pipe reads and writes may freeze the Communicator

Categories

(NSPR :: NSPR, defect, P2)

x86
Linux
defect

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: wtc, Assigned: srinivas)

Details

(Whiteboard: 3/25/99 awaiting srinivas@netscape.com to verify)

This bug was reported by the Linux user community. Communicator 4.5 (which uses the old NSPR1) sometimes freezes on the new Linux 2.2 kernel because it is doing a blocking write to a full pipe. Because NSPR1 uses emulated user-level threads, if a thread blocks in write(), the whole process blocks. This pipe is created by the "event" code in ns/nspr/src/swmon.c, which is inherited by NSPR20 in mozilla/nsprpub/lib/ds/plevent.c. (Nobody seems to have reported this bug for SeaMonkey.) The fix is to create the pipe in nonblocking mode and have the reads and writes deal with the possibile EAGAIN/EWOULDBLOCK error. Since we may still use user-level threads on some Unix platforms, I suggest that we check in this fix to NSPR 3.1.
Status: NEW → RESOLVED
Closed: 26 years ago
Resolution: --- → FIXED
The fix is checked into the tip. /cvsroot/mozilla/nsprpub/lib/ds/plevent.c, revision 3.14. The fix is also checked into the internal CVS repository. /m/src/ns/nspr20/lib/ds/plevent.c, revision 2.14.
For the record, the reporter was Stanislav Meduna (stano@trillian.eunet.sk). He did the detective work. Thanks Stano!
For the record, the reporter was Stanislav Meduna (stano@trillian.eunet.sk). He did the detective work. Thanks Stano!
QA Contact: 3849
Whiteboard: awaiting srinivas@netscape.com to verify
Whiteboard: awaiting srinivas@netscape.com to verify → 3/25/99 awaiting srinivas@netscape.com to verify
Status: RESOLVED → VERIFIED
Marked bug as verified.
NSPR now has its own Bugzilla product. Moving this bug to the NSPR product.
You need to log in before you can comment on or make changes to this bug.