Closed Bug 1316473 Opened 3 years ago Closed 3 years ago

MessageChannels deadlock when instantiated with broken transports

Categories

(Core :: IPC, defect)

defect
Not set

Tracking

()

RESOLVED FIXED
mozilla53
Tracking Status
firefox53 --- fixed

People

(Reporter: dvander, Assigned: dvander)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

When a process dies, any outstanding endpoints that have not been opened will fail to be opened by IPDL. However, it still creates a transport object, and so we get a MessageChannel that assumes no error has occurred. The result is that no messages are ever sent, and the first sync message will cause a deadlock (as we'll wait for a reply that never comes).
Attached patch fixSplinter Review
This patch fixes MessageLink so that if the Transport is dead on arrivel, we fire off an error notification. I added a new OnChannelError function since the old one has an assert that would otherwise trigger. It might be okay to just remove that assert though.
Attachment #8809241 - Flags: review?(wmccloskey)
Attachment #8809241 - Flags: review?(wmccloskey) → review+
Pushed by danderson@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/10f112105ab2
Fix MessageChannel when constructed with a broken Transport. (bug 1316473, r=billm)
https://hg.mozilla.org/mozilla-central/rev/10f112105ab2
Status: ASSIGNED → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla53
You need to log in before you can comment on or make changes to this bug.