Diff
Modified: trunk/Source/WebKit/ChangeLog (293016 => 293017)
--- trunk/Source/WebKit/ChangeLog 2022-04-19 15:45:08 UTC (rev 293016)
+++ trunk/Source/WebKit/ChangeLog 2022-04-19 15:58:10 UTC (rev 293017)
@@ -1,3 +1,31 @@
+2022-04-19 Simon Fraser <[email protected]>
+
+ Use ProcessTerminationReason::Unresponsive for unresponsive network processes
+ https://bugs.webkit.org/show_bug.cgi?id=239401
+
+ Reviewed by Chris Dumez.
+
+ NetworkProcessProxy used ProcessTerminationReason::RequestedByClient for all callers
+ of terminate(). Move the call to networkProcessDidTerminate() out to callers of
+ terminate() so they can pass the correct reasons.
+
+ Also use processTerminationReasonToString() in some more logs, and fix a log string
+ typo introduced in the previous commit.
+
+ * UIProcess/GPU/GPUProcessProxy.cpp:
+ (WebKit::GPUProcessProxy::gpuProcessExited):
+ * UIProcess/Network/NetworkProcessProxy.cpp:
+ (WebKit::NetworkProcessProxy::terminate):
+ (WebKit::NetworkProcessProxy::didBecomeUnresponsive):
+ (WebKit::NetworkProcessProxy::didReceiveInvalidMessage):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::resetStateAfterProcessTermination):
+ * UIProcess/WebProcessPool.cpp:
+ (WebKit::WebProcessPool::gpuProcessExited):
+ * UIProcess/WebProcessProxy.cpp:
+ (WebKit::WebProcessProxy::gpuProcessExited):
+ (WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):
+
2022-04-19 Zan Dobersek <[email protected]>
[GTK][WPE][GPUProcess] Add RemoteGraphicsContextGLGBM, RemoteGraphicsContextGLProxyGBM
Modified: trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp (293016 => 293017)
--- trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp 2022-04-19 15:45:08 UTC (rev 293016)
+++ trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp 2022-04-19 15:58:10 UTC (rev 293017)
@@ -426,7 +426,7 @@
case ProcessTerminationReason::IdleExit:
case ProcessTerminationReason::Unresponsive:
case ProcessTerminationReason::Crash:
- RELEASE_LOG_ERROR(Process, "%p - GPUProcessProxy::gpuProcessExited: reason=reason=%{public}s", this, processTerminationReasonToString(reason));
+ RELEASE_LOG_ERROR(Process, "%p - GPUProcessProxy::gpuProcessExited: reason=%{public}s", this, processTerminationReasonToString(reason));
break;
case ProcessTerminationReason::ExceededProcessCountLimit:
case ProcessTerminationReason::NavigationSwap:
Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (293016 => 293017)
--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2022-04-19 15:45:08 UTC (rev 293016)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2022-04-19 15:58:10 UTC (rev 293017)
@@ -150,6 +150,11 @@
AuxiliaryProcessProxy::terminate();
if (auto* connection = this->connection())
connection->invalidate();
+}
+
+void NetworkProcessProxy::requestTermination()
+{
+ terminate();
networkProcessDidTerminate(ProcessTerminationReason::RequestedByClient);
}
@@ -163,13 +168,17 @@
if (shouldTerminateNetworkProcessBySendingMessage()) {
sendMessage(makeUniqueRef<IPC::Encoder>(IPC::MessageName::Terminate, 0), { });
RunLoop::main().dispatchAfter(1_s, [weakThis = WeakPtr { *this }] () mutable {
- if (weakThis)
+ if (weakThis) {
weakThis->terminate();
+ weakThis->networkProcessDidTerminate(ProcessTerminationReason::Unresponsive);
+ }
+
});
return;
}
terminate();
+ networkProcessDidTerminate(ProcessTerminationReason::Unresponsive);
}
void NetworkProcessProxy::sendCreationParametersToNewProcess()
@@ -468,6 +477,7 @@
{
logInvalidMessage(connection, messageName);
terminate();
+ networkProcessDidTerminate(ProcessTerminationReason::Crash);
}
void NetworkProcessProxy::processAuthenticationChallenge(PAL::SessionID sessionID, Ref<AuthenticationChallengeProxy>&& authenticationChallenge)
Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h (293016 => 293017)
--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h 2022-04-19 15:45:08 UTC (rev 293016)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h 2022-04-19 15:58:10 UTC (rev 293017)
@@ -127,8 +127,6 @@
static Vector<Ref<NetworkProcessProxy>> allNetworkProcesses();
- void terminate() final;
-
void getNetworkProcessConnection(WebProcessProxy&, Messages::WebProcessProxy::GetNetworkProcessConnectionDelayedReply&&);
DownloadProxy& createDownloadProxy(WebsiteDataStore&, WebProcessPool&, const WebCore::ResourceRequest&, const FrameInfoData&, WebPageProxy* originatingPage);
@@ -226,6 +224,8 @@
void testProcessIncomingSyncMessagesWhenWaitingForSyncReply(WebPageProxyIdentifier, Messages::NetworkProcessProxy::TestProcessIncomingSyncMessagesWhenWaitingForSyncReplyDelayedReply&&);
void terminateUnresponsiveServiceWorkerProcesses(WebCore::ProcessIdentifier);
+ void requestTermination();
+
ProcessThrottler& throttler() final { return m_throttler; }
void updateProcessAssertion();
@@ -317,6 +317,7 @@
void getLaunchOptions(ProcessLauncher::LaunchOptions&) override;
void connectionWillOpen(IPC::Connection&) override;
void processWillShutDown(IPC::Connection&) override;
+ void terminate() final;
// IPC::Connection::Client
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override;
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (293016 => 293017)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2022-04-19 15:45:08 UTC (rev 293016)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2022-04-19 15:58:10 UTC (rev 293017)
@@ -7906,7 +7906,7 @@
void WebPageProxy::resetStateAfterProcessTermination(ProcessTerminationReason reason)
{
if (reason != ProcessTerminationReason::NavigationSwap)
- WEBPAGEPROXY_RELEASE_LOG_ERROR(Process, "processDidTerminate: (pid %d), reason %d", processIdentifier(), reason);
+ WEBPAGEPROXY_RELEASE_LOG_ERROR(Process, "processDidTerminate: (pid %d), reason=%{public}s", processIdentifier(), processTerminationReasonToString(reason));
ASSERT(m_hasRunningProcess);
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (293016 => 293017)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2022-04-19 15:45:08 UTC (rev 293016)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2022-04-19 15:58:10 UTC (rev 293017)
@@ -488,7 +488,7 @@
void WebProcessPool::gpuProcessExited(ProcessID identifier, ProcessTerminationReason reason)
{
- WEBPROCESSPOOL_RELEASE_LOG(Process, "gpuProcessDidExit: PID=%d, reason=reason=%{public}s", identifier, processTerminationReasonToString(reason));
+ WEBPROCESSPOOL_RELEASE_LOG(Process, "gpuProcessDidExit: PID=%d, reason=%{public}s", identifier, processTerminationReasonToString(reason));
m_gpuProcess = nullptr;
if (shouldReportAuxiliaryProcessCrash(reason))
Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (293016 => 293017)
--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp 2022-04-19 15:45:08 UTC (rev 293016)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp 2022-04-19 15:58:10 UTC (rev 293017)
@@ -832,10 +832,7 @@
void WebProcessProxy::gpuProcessExited(ProcessTerminationReason reason)
{
- if (reason == ProcessTerminationReason::IdleExit)
- WEBPROCESSPROXY_RELEASE_LOG(Process, "gpuProcessExited: reason=idle-exit");
- else
- WEBPROCESSPROXY_RELEASE_LOG_ERROR(Process, "gpuProcessExited: reason=%u", static_cast<unsigned>(reason));
+ WEBPROCESSPROXY_RELEASE_LOG_ERROR(Process, "gpuProcessExited: reason=%{public}s", processTerminationReasonToString(reason));
for (auto& page : copyToVectorOf<RefPtr<WebPageProxy>>(m_pageMap.values()))
page->gpuProcessExited(reason);
@@ -893,7 +890,7 @@
void WebProcessProxy::processDidTerminateOrFailedToLaunch(ProcessTerminationReason reason)
{
- WEBPROCESSPROXY_RELEASE_LOG_ERROR(Process, "processDidTerminateOrFailedToLaunch: reason=%u", static_cast<unsigned>(reason));
+ WEBPROCESSPROXY_RELEASE_LOG_ERROR(Process, "processDidTerminateOrFailedToLaunch: reason=%{public}s", processTerminationReasonToString(reason));
// Protect ourselves, as the call to shutDown() below may otherwise cause us
// to be deleted before we can finish our work.
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (293016 => 293017)
--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2022-04-19 15:45:08 UTC (rev 293016)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2022-04-19 15:58:10 UTC (rev 293017)
@@ -1581,7 +1581,7 @@
void WebsiteDataStore::terminateNetworkProcess()
{
if (auto networkProcess = std::exchange(m_networkProcess, nullptr))
- networkProcess->terminate();
+ networkProcess->requestTermination();
}
void WebsiteDataStore::sendNetworkProcessPrepareToSuspendForTesting(CompletionHandler<void()>&& completionHandler)