Title: [291664] branches/safari-613-branch/Source/WebKit
Revision
291664
Author
alanc...@apple.com
Date
2022-03-22 10:56:37 -0700 (Tue, 22 Mar 2022)

Log Message

Cherry-pick r291182. rdar://problem/88226412

    Delay responsiveness checks for the Network Process until it has finished initialization
    https://bugs.webkit.org/show_bug.cgi?id=237782
    <rdar://88226412>

    Reviewed by Geoffrey Garen.

    Delay responsiveness checks for the Network Process until it has finished initialization.
    Network process initialization can be slow but we have evidence that it is not truly
    hung since we see network process terminations right as the network process is initiating
    the WebProcess connection later on.

    * NetworkProcess/NetworkProcess.cpp:
    (WebKit::NetworkProcess::initializeNetworkProcess):
    * NetworkProcess/NetworkProcess.h:
    * NetworkProcess/NetworkProcess.messages.in:
    * UIProcess/AuxiliaryProcessProxy.cpp:
    (WebKit::AuxiliaryProcessProxy::didFinishLaunching):
    (WebKit::AuxiliaryProcessProxy::beginResponsivenessChecks):
    (WebKit::AuxiliaryProcessProxy::startResponsivenessTimer):
    * UIProcess/AuxiliaryProcessProxy.h:
    * UIProcess/GPU/GPUProcessProxy.cpp:
    (WebKit::GPUProcessProxy::didFinishLaunching):
    * UIProcess/Network/NetworkProcessProxy.cpp:
    (WebKit::NetworkProcessProxy::sendCreationParametersToNewProcess):
    * UIProcess/WebAuthentication/WebAuthnProcessProxy.cpp:
    (WebKit::WebAuthnProcessProxy::didFinishLaunching):
    * UIProcess/WebProcessProxy.cpp:
    (WebKit::WebProcessProxy::didFinishLaunching):

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@291182 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-613-branch/Source/WebKit/ChangeLog (291663 => 291664)


--- branches/safari-613-branch/Source/WebKit/ChangeLog	2022-03-22 17:56:32 UTC (rev 291663)
+++ branches/safari-613-branch/Source/WebKit/ChangeLog	2022-03-22 17:56:37 UTC (rev 291664)
@@ -1,5 +1,72 @@
 2022-03-21  Alan Coon  <alanc...@apple.com>
 
+        Cherry-pick r291182. rdar://problem/88226412
+
+    Delay responsiveness checks for the Network Process until it has finished initialization
+    https://bugs.webkit.org/show_bug.cgi?id=237782
+    <rdar://88226412>
+    
+    Reviewed by Geoffrey Garen.
+    
+    Delay responsiveness checks for the Network Process until it has finished initialization.
+    Network process initialization can be slow but we have evidence that it is not truly
+    hung since we see network process terminations right as the network process is initiating
+    the WebProcess connection later on.
+    
+    * NetworkProcess/NetworkProcess.cpp:
+    (WebKit::NetworkProcess::initializeNetworkProcess):
+    * NetworkProcess/NetworkProcess.h:
+    * NetworkProcess/NetworkProcess.messages.in:
+    * UIProcess/AuxiliaryProcessProxy.cpp:
+    (WebKit::AuxiliaryProcessProxy::didFinishLaunching):
+    (WebKit::AuxiliaryProcessProxy::beginResponsivenessChecks):
+    (WebKit::AuxiliaryProcessProxy::startResponsivenessTimer):
+    * UIProcess/AuxiliaryProcessProxy.h:
+    * UIProcess/GPU/GPUProcessProxy.cpp:
+    (WebKit::GPUProcessProxy::didFinishLaunching):
+    * UIProcess/Network/NetworkProcessProxy.cpp:
+    (WebKit::NetworkProcessProxy::sendCreationParametersToNewProcess):
+    * UIProcess/WebAuthentication/WebAuthnProcessProxy.cpp:
+    (WebKit::WebAuthnProcessProxy::didFinishLaunching):
+    * UIProcess/WebProcessProxy.cpp:
+    (WebKit::WebProcessProxy::didFinishLaunching):
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@291182 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2022-03-11  Chris Dumez  <cdu...@apple.com>
+
+            Delay responsiveness checks for the Network Process until it has finished initialization
+            https://bugs.webkit.org/show_bug.cgi?id=237782
+            <rdar://88226412>
+
+            Reviewed by Geoffrey Garen.
+
+            Delay responsiveness checks for the Network Process until it has finished initialization.
+            Network process initialization can be slow but we have evidence that it is not truly
+            hung since we see network process terminations right as the network process is initiating
+            the WebProcess connection later on.
+
+            * NetworkProcess/NetworkProcess.cpp:
+            (WebKit::NetworkProcess::initializeNetworkProcess):
+            * NetworkProcess/NetworkProcess.h:
+            * NetworkProcess/NetworkProcess.messages.in:
+            * UIProcess/AuxiliaryProcessProxy.cpp:
+            (WebKit::AuxiliaryProcessProxy::didFinishLaunching):
+            (WebKit::AuxiliaryProcessProxy::beginResponsivenessChecks):
+            (WebKit::AuxiliaryProcessProxy::startResponsivenessTimer):
+            * UIProcess/AuxiliaryProcessProxy.h:
+            * UIProcess/GPU/GPUProcessProxy.cpp:
+            (WebKit::GPUProcessProxy::didFinishLaunching):
+            * UIProcess/Network/NetworkProcessProxy.cpp:
+            (WebKit::NetworkProcessProxy::sendCreationParametersToNewProcess):
+            * UIProcess/WebAuthentication/WebAuthnProcessProxy.cpp:
+            (WebKit::WebAuthnProcessProxy::didFinishLaunching):
+            * UIProcess/WebProcessProxy.cpp:
+            (WebKit::WebProcessProxy::didFinishLaunching):
+
+2022-03-21  Alan Coon  <alanc...@apple.com>
+
         Cherry-pick r291006. rdar://problem/85361911
 
     The accessibility library should be soft linked optionally

Modified: branches/safari-613-branch/Source/WebKit/NetworkProcess/NetworkProcess.cpp (291663 => 291664)


--- branches/safari-613-branch/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2022-03-22 17:56:32 UTC (rev 291663)
+++ branches/safari-613-branch/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2022-03-22 17:56:37 UTC (rev 291664)
@@ -301,8 +301,10 @@
     });
 }
 
-void NetworkProcess::initializeNetworkProcess(NetworkProcessCreationParameters&& parameters)
+void NetworkProcess::initializeNetworkProcess(NetworkProcessCreationParameters&& parameters, CompletionHandler<void()>&& completionHandler)
 {
+    CompletionHandlerCallingScope callCompletionHandler(WTFMove(completionHandler));
+
     applyProcessCreationParameters(parameters.auxiliaryProcessParameters);
 #if HAVE(SEC_KEY_PROXY)
     WTF::setProcessPrivileges({ ProcessPrivilege::CanAccessRawCookies });

Modified: branches/safari-613-branch/Source/WebKit/NetworkProcess/NetworkProcess.h (291663 => 291664)


--- branches/safari-613-branch/Source/WebKit/NetworkProcess/NetworkProcess.h	2022-03-22 17:56:32 UTC (rev 291663)
+++ branches/safari-613-branch/Source/WebKit/NetworkProcess/NetworkProcess.h	2022-03-22 17:56:37 UTC (rev 291664)
@@ -413,7 +413,7 @@
 
     // Message Handlers
     bool didReceiveSyncNetworkProcessMessage(IPC::Connection&, IPC::Decoder&, UniqueRef<IPC::Encoder>&);
-    void initializeNetworkProcess(NetworkProcessCreationParameters&&);
+    void initializeNetworkProcess(NetworkProcessCreationParameters&&, CompletionHandler<void()>&&);
     void createNetworkConnectionToWebProcess(WebCore::ProcessIdentifier, PAL::SessionID, CompletionHandler<void(std::optional<IPC::Attachment>&&, WebCore::HTTPCookieAcceptPolicy)>&&);
 
     void fetchWebsiteData(PAL::SessionID, OptionSet<WebsiteDataType>, OptionSet<WebsiteDataFetchOption>, CompletionHandler<void(WebsiteData&&)>&&);

Modified: branches/safari-613-branch/Source/WebKit/NetworkProcess/NetworkProcess.messages.in (291663 => 291664)


--- branches/safari-613-branch/Source/WebKit/NetworkProcess/NetworkProcess.messages.in	2022-03-22 17:56:32 UTC (rev 291663)
+++ branches/safari-613-branch/Source/WebKit/NetworkProcess/NetworkProcess.messages.in	2022-03-22 17:56:37 UTC (rev 291664)
@@ -21,7 +21,7 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 messages -> NetworkProcess LegacyReceiver {
-    InitializeNetworkProcess(struct WebKit::NetworkProcessCreationParameters processCreationParameters)
+    InitializeNetworkProcess(struct WebKit::NetworkProcessCreationParameters processCreationParameters) -> ()
 
     CreateNetworkConnectionToWebProcess(WebCore::ProcessIdentifier processIdentifier, PAL::SessionID sessionID) -> (std::optional<IPC::Attachment> connectionIdentifier, enum:uint8_t WebCore::HTTPCookieAcceptPolicy cookieAcceptPolicy) Async
 

Modified: branches/safari-613-branch/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp (291663 => 291664)


--- branches/safari-613-branch/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp	2022-03-22 17:56:32 UTC (rev 291663)
+++ branches/safari-613-branch/Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp	2022-03-22 17:56:37 UTC (rev 291664)
@@ -272,11 +272,6 @@
             IPC::addAsyncReplyHandler(*connection(), pendingMessage.asyncReplyInfo->second, WTFMove(pendingMessage.asyncReplyInfo->first));
         m_connection->sendMessage(WTFMove(pendingMessage.encoder), pendingMessage.sendOptions);
     }
-
-    if (m_shouldStartResponsivenessTimerWhenLaunched) {
-        auto useLazyStop = *std::exchange(m_shouldStartResponsivenessTimerWhenLaunched, std::nullopt);
-        startResponsivenessTimer(useLazyStop);
-    }
 }
 
 void AuxiliaryProcessProxy::replyToPendingMessages()
@@ -365,10 +360,18 @@
     responsivenessTimer().stop();
 }
 
+void AuxiliaryProcessProxy::beginResponsivenessChecks()
+{
+    m_didBeginResponsivenessChecks = true;
+    if (m_delayedResponsivenessCheck)
+        startResponsivenessTimer(*std::exchange(m_delayedResponsivenessCheck, std::nullopt));
+}
+
 void AuxiliaryProcessProxy::startResponsivenessTimer(UseLazyStop useLazyStop)
 {
-    if (isLaunching()) {
-        m_shouldStartResponsivenessTimerWhenLaunched = useLazyStop;
+    if (!m_didBeginResponsivenessChecks) {
+        if (!m_delayedResponsivenessCheck)
+            m_delayedResponsivenessCheck = useLazyStop;
         return;
     }
 

Modified: branches/safari-613-branch/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h (291663 => 291664)


--- branches/safari-613-branch/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h	2022-03-22 17:56:32 UTC (rev 291663)
+++ branches/safari-613-branch/Source/WebKit/UIProcess/AuxiliaryProcessProxy.h	2022-03-22 17:56:37 UTC (rev 291664)
@@ -165,6 +165,8 @@
 
     virtual bool shouldSendPendingMessage(const PendingMessage&) { return true; }
 
+    void beginResponsivenessChecks();
+
     // ResponsivenessTimer::Client.
     void didBecomeUnresponsive() override;
     void didBecomeResponsive() override { }
@@ -182,8 +184,9 @@
     RefPtr<IPC::Connection> m_connection;
     IPC::MessageReceiverMap m_messageReceiverMap;
     bool m_alwaysRunsAtBackgroundPriority { false };
+    bool m_didBeginResponsivenessChecks { false };
     WebCore::ProcessIdentifier m_processIdentifier { WebCore::ProcessIdentifier::generate() };
-    std::optional<UseLazyStop> m_shouldStartResponsivenessTimerWhenLaunched;
+    std::optional<UseLazyStop> m_delayedResponsivenessCheck;
 };
 
 template<typename T>

Modified: branches/safari-613-branch/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp (291663 => 291664)


--- branches/safari-613-branch/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp	2022-03-22 17:56:32 UTC (rev 291663)
+++ branches/safari-613-branch/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp	2022-03-22 17:56:37 UTC (rev 291664)
@@ -444,6 +444,8 @@
     if (auto networkProcess = NetworkProcessProxy::defaultNetworkProcess())
         networkProcess->sendXPCEndpointToProcess(*this);
 #endif
+
+    beginResponsivenessChecks();
 }
 
 void GPUProcessProxy::updateProcessAssertion()

Modified: branches/safari-613-branch/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (291663 => 291664)


--- branches/safari-613-branch/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp	2022-03-22 17:56:32 UTC (rev 291663)
+++ branches/safari-613-branch/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp	2022-03-22 17:56:37 UTC (rev 291664)
@@ -216,7 +216,10 @@
 #endif
 
     WebProcessPool::platformInitializeNetworkProcess(parameters);
-    send(Messages::NetworkProcess::InitializeNetworkProcess(parameters), 0);
+    sendWithAsyncReply(Messages::NetworkProcess::InitializeNetworkProcess(parameters), [weakThis = WeakPtr { *this }] {
+        if (weakThis)
+            weakThis->beginResponsivenessChecks();
+    });
 }
 
 static bool anyProcessPoolAlwaysRunsAtBackgroundPriority()

Modified: branches/safari-613-branch/Source/WebKit/UIProcess/WebAuthentication/WebAuthnProcessProxy.cpp (291663 => 291664)


--- branches/safari-613-branch/Source/WebKit/UIProcess/WebAuthentication/WebAuthnProcessProxy.cpp	2022-03-22 17:56:32 UTC (rev 291663)
+++ branches/safari-613-branch/Source/WebKit/UIProcess/WebAuthentication/WebAuthnProcessProxy.cpp	2022-03-22 17:56:37 UTC (rev 291664)
@@ -162,6 +162,8 @@
     if (xpc_connection_t connection = this->connection()->xpcConnection())
         m_throttler.didConnectToProcess(xpc_connection_get_pid(connection));
 #endif
+
+    beginResponsivenessChecks();
 }
 
 void WebAuthnProcessProxy::updateProcessAssertion()

Modified: branches/safari-613-branch/Source/WebKit/UIProcess/WebProcessProxy.cpp (291663 => 291664)


--- branches/safari-613-branch/Source/WebKit/UIProcess/WebProcessProxy.cpp	2022-03-22 17:56:32 UTC (rev 291663)
+++ branches/safari-613-branch/Source/WebKit/UIProcess/WebProcessProxy.cpp	2022-03-22 17:56:37 UTC (rev 291664)
@@ -1076,6 +1076,8 @@
     enableRemoteInspectorIfNeeded();
 #endif
 #endif
+
+    beginResponsivenessChecks();
 }
 
 WebFrameProxy* WebProcessProxy::webFrame(FrameIdentifier frameID) const
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to