Title: [293017] trunk/Source/WebKit
Revision
293017
Author
[email protected]
Date
2022-04-19 08:58:10 -0700 (Tue, 19 Apr 2022)

Log Message

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):

Modified Paths

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)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to