[webkit-changes] [WebKit/WebKit] ad1a65: Fix logic for terminating a child process spamming...
Chris Dumez
noreply at github.com
Wed Aug 7 16:59:07 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: ad1a65843e9e1fd4264ac34a4777729fa43f943f
https://github.com/WebKit/WebKit/commit/ad1a65843e9e1fd4264ac34a4777729fa43f943f
Author: Chris Dumez <cdumez at apple.com>
Date: 2024-08-07 (Wed, 07 Aug 2024)
Changed paths:
M Source/WebKit/Platform/IPC/Connection.cpp
M Source/WebKit/Platform/IPC/Connection.h
M Source/WebKit/Platform/IPC/cocoa/ConnectionCocoa.mm
Log Message:
-----------
Fix logic for terminating a child process spamming us with IPC
https://bugs.webkit.org/show_bug.cgi?id=277746
Reviewed by Per Arne Vollan.
Make the following fixes to the logic:
1. Once the message queue size reaches maxPendingIncomingMessagesKillingThreshold, only
call dispatchToClientWithIncomingMessagesLock() once to terminate the child process
on the main thread. We used to dispatch a task for each message over the threshold,
which was unnecessary.
2. After calling m_client->requestRemoteProcessTermination(), check if Connection::m_wasKilled
is true. If it's not, call Connection::kill(). This used to be guaranteed when using XPC
services since calling requestRemoteProcessTermination() would terminate the xpc connection.
However, when using ExtensionKit (on iOS currently), it no longer kills the XPC connection
since it is not required to terminate the child extension. This is useful because having
Connection::m_wasKilled set to true causes Connection::enqueueIncomingMessage() do early
return instead of doing work for every new incoming message while waiting for the child
process to exit.
* Source/WebKit/Platform/IPC/Connection.cpp:
(IPC::Connection::enqueueIncomingMessage):
Canonical link: https://commits.webkit.org/281969@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list