Closed Bug 990598 Opened 10 years ago Closed 10 years ago

[e10s] Everything goes south after CPOW timeout

Categories

(Core :: JavaScript Engine, defect)

x86_64
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla32
Tracking Status
e10s + ---

People

(Reporter: billm, Assigned: billm)

References

Details

Attachments

(1 file, 1 obsolete file)

I've noticed that if a page is taking a long time and a CPOW times out during that time, we lose the ability to communicate with the child. I just have to restart Firefox.
Attached patch timeout-fix (obsolete) — Splinter Review
Jim, it looks like you worked on some of this timeout stuff for plugins. Anyway, the problem is that, when ShouldContinueFromReplyTimeout return false, we're supposed to do something to kill the child and cleanup. Right now we're not doing that. For now I think the easiest thing would be to just not timeout. Eventually we probably want to do something like what PluginParent does.
Assignee: nobody → wmccloskey
Status: NEW → ASSIGNED
Attachment #8414155 - Flags: review?(jmathies)
I understand what this changes, but I'm not sure if it's ok to do this. With plugins, if a reply times out in the child, we crash the plugin process to try and free up the parent. If the parent detects a timeout in the child, we throw up a hang ui and then either wait or terminate the child.

When we return false from this for content processes, the channel state gets set to timed out, and we synchronously close the connection - 

http://mxr.mozilla.org/mozilla-central/source/ipc/glue/MessageChannel.cpp#1369
http://mxr.mozilla.org/mozilla-central/source/ipc/glue/MessageChannel.cpp#1369

Returning true implies this will never happen and we will continue to wait forever implying the content process may end up being a zombie that sits around forever.

A couple questions - what impact will this have on B2G? Does closing the connection shutdown the child process, or does it hang around forever?

As you point out, we need a follow up bug to deal with this appropriately once we know what the correct behavior is supposed to be. (hang ui? terminate, etc.)
Attached patch no-timeoutSplinter Review
I found a better fix for this. With this change, we should never call the code from the previous patch.

B2G should not be affected by this change. It never synchronously waits from the parent process, so the code in question will never be triggered.

Closing the connecting does not kill the child. It seems to just sit there spewing errors until I kill it.
Attachment #8414155 - Attachment is obsolete: true
Attachment #8414155 - Flags: review?(jmathies)
Attachment #8414761 - Flags: review?(jmathies)
Comment on attachment 8414761 [details] [diff] [review]
no-timeout

Looks
Attachment #8414761 - Flags: review?(jmathies) → review+
.. good! Note this is basically a backout of bug 905896.
https://hg.mozilla.org/mozilla-central/rev/4c394a47bbc7
Status: ASSIGNED → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla32
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: