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