Summary: | ASSERT(m_suspendMessageCount >= 0) fails in ProcessThrottler::didCancelProcessSuspension() when WebContent process crashes; Network process may never voluntarily suspend | ||||||
---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Daniel Bates <dbates> | ||||
Component: | WebKit2 | Assignee: | Daniel Bates <dbates> | ||||
Status: | RESOLVED FIXED | ||||||
Severity: | Normal | CC: | andersca, ap, barraclough, beidson, cdumez, sam, webkit-bug-importer | ||||
Priority: | P2 | Keywords: | InRadar | ||||
Version: | 528+ (Nightly build) | ||||||
Hardware: | iPhone / iPad | ||||||
OS: | iOS 8.2 | ||||||
Attachments: |
|
Description
Daniel Bates
2015-07-20 13:53:35 PDT
Created attachment 257124 [details]
Patch
Comment on attachment 257124 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=257124&action=review r=me > Source/WebKit2/NetworkProcess/NetworkProcess.cpp:525 > + // we do not because we have nothing to cancel. NetworkProcessProxy::DidCancelProcessSuspension should nit: I think saying that we are not cancellable because prepareToSuspend() sends back the ProcessReadyToSuspend IPC message synchronously would be clearer. (In reply to comment #3) > > Source/WebKit2/NetworkProcess/NetworkProcess.cpp:525 > > + // we do not because we have nothing to cancel. NetworkProcessProxy::DidCancelProcessSuspension should > > nit: I think saying that we are not cancellable because prepareToSuspend() > sends back the ProcessReadyToSuspend IPC message synchronously would be > clearer. Notice that the IPC message ProcessReadyToSuspend is sent asynchronously. I understand what you are trying to convey by using the word "synchronously" - the network process already replied to the NetworkProcess::PrepareToSuspend message with a NetworkProcessProxy::ProcessReadyToSuspend message and hence should not reply again with a NetworkProcessProxy::DidCancelProcessSuspension. I will update the comment in this function to read to help clarify : Although it is tempting to send a NetworkProcessProxy::DidCancelProcessSuspension message from here we do not because prepareToSuspend() already replied with a NetworkProcessProxy::ProcessReadyToSuspend message. NetworkProcessProxy::DidCancelProcessSuspension should only be sent if and only if we have not replied to a NetworkProcess::PrepareToSuspend message with a NetworkProcessProxy::ProcessReadyToSuspend message. (In reply to comment #4) > I will update the comment in this function to read to help clarify : I meant to write: I will update the comment in this function to help clarify why we do not send a NetworkProcessProxy::DidCancelProcessSuspension message. Committed r187124: <http://trac.webkit.org/changeset/187124> |