Diff
Modified: trunk/Source/WebKit/ChangeLog (279353 => 279354)
--- trunk/Source/WebKit/ChangeLog 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/ChangeLog 2021-06-29 00:24:54 UTC (rev 279354)
@@ -1,3 +1,13 @@
+2021-06-28 Chris Dumez <[email protected]>
+
+ NetworkProcessProxy::networkProcessDidTerminate() should copy process pools before iterating over them
+ https://bugs.webkit.org/show_bug.cgi?id=227468
+
+ Reviewed by Alex Christensen.
+
+ * UIProcess/Network/NetworkProcessProxy.cpp:
+ (WebKit::NetworkProcessProxy::networkProcessDidTerminate):
+
2021-06-28 Sihui Liu <[email protected]>
Nullptr crash in ResourceLoadStatisticsDatabaseStore::allAttributedPrivateClickMeasurement
Modified: trunk/Source/WebKit/Shared/API/APIURLRequest.cpp (279353 => 279354)
--- trunk/Source/WebKit/Shared/API/APIURLRequest.cpp 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/Shared/API/APIURLRequest.cpp 2021-06-29 00:24:54 UTC (rev 279354)
@@ -48,7 +48,7 @@
{
ResourceRequest::setDefaultTimeoutInterval(timeoutInterval);
- for (auto* processPool : WebProcessPool::allProcessPools())
+ for (auto& processPool : WebProcessPool::allProcessPools())
processPool->setDefaultRequestTimeoutInterval(timeoutInterval);
}
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm (279353 => 279354)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm 2021-06-29 00:24:54 UTC (rev 279354)
@@ -176,7 +176,7 @@
+ (NSArray<WKProcessPool *> *)_allProcessPoolsForTesting
{
return createNSArray(WebKit::WebProcessPool::allProcessPools(), [] (auto& pool) {
- return wrapper(*pool);
+ return wrapper(pool.get());
}).autorelease();
}
Modified: trunk/Source/WebKit/UIProcess/Cocoa/PreferenceObserver.mm (279353 => 279354)
--- trunk/Source/WebKit/UIProcess/Cocoa/PreferenceObserver.mm 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/Cocoa/PreferenceObserver.mm 2021-06-29 00:24:54 UTC (rev 279354)
@@ -180,7 +180,7 @@
if (encodedValue)
encodedString = String(encodedValue.get());
- for (auto* processPool : WebKit::WebProcessPool::allProcessPools())
+ for (auto& processPool : WebKit::WebProcessPool::allProcessPools())
processPool->notifyPreferencesChanged(domain.get(), key.get(), encodedString);
});
#endif
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WKFullKeyboardAccessWatcher.mm (279353 => 279354)
--- trunk/Source/WebKit/UIProcess/Cocoa/WKFullKeyboardAccessWatcher.mm 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WKFullKeyboardAccessWatcher.mm 2021-06-29 00:24:54 UTC (rev 279354)
@@ -64,7 +64,7 @@
- (void)notifyAllProcessPools
{
- for (auto* processPool : WebKit::WebProcessPool::allProcessPools())
+ for (auto& processPool : WebKit::WebProcessPool::allProcessPools())
processPool->fullKeyboardAccessModeChanged(fullKeyboardAccessEnabled);
}
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebInspectorPreferenceObserver.mm (279353 => 279354)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebInspectorPreferenceObserver.mm 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebInspectorPreferenceObserver.mm 2021-06-29 00:24:54 UTC (rev 279354)
@@ -64,7 +64,7 @@
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey, id> *)change context:(void *)context
{
RunLoop::main().dispatch([] {
- for (auto* pool : WebKit::WebProcessPool::allProcessPools()) {
+ for (auto& pool : WebKit::WebProcessPool::allProcessPools()) {
for (size_t i = 0; i < pool->processes().size(); ++i) {
auto process = pool->processes()[i];
process->enableRemoteInspectorIfNeeded();
Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (279353 => 279354)
--- trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm 2021-06-29 00:24:54 UTC (rev 279354)
@@ -913,7 +913,7 @@
void WebProcessPool::notifyProcessPoolsApplicationIsAboutToSuspend()
{
- for (auto* processPool : allProcessPools())
+ for (auto& processPool : allProcessPools())
processPool->applicationIsAboutToSuspend();
}
#endif
Modified: trunk/Source/WebKit/UIProcess/LegacyGlobalSettings.cpp (279353 => 279354)
--- trunk/Source/WebKit/UIProcess/LegacyGlobalSettings.cpp 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/LegacyGlobalSettings.cpp 2021-06-29 00:24:54 UTC (rev 279354)
@@ -42,7 +42,7 @@
void LegacyGlobalSettings::setCacheModel(CacheModel cacheModel)
{
m_cacheModel = cacheModel;
- for (auto processPool : WebProcessPool::allProcessPools())
+ for (auto& processPool : WebProcessPool::allProcessPools())
processPool->setCacheModel(cacheModel);
}
Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (279353 => 279354)
--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp 2021-06-29 00:24:54 UTC (rev 279354)
@@ -172,7 +172,7 @@
static bool anyProcessPoolAlwaysRunsAtBackgroundPriority()
{
- for (auto* processPool : WebProcessPool::allProcessPools()) {
+ for (auto& processPool : WebProcessPool::allProcessPools()) {
if (processPool->alwaysRunsAtBackgroundPriority())
return true;
}
@@ -181,7 +181,7 @@
static bool anyProcessPoolShouldTakeUIBackgroundAssertion()
{
- for (auto* processPool : WebProcessPool::allProcessPools()) {
+ for (auto& processPool : WebProcessPool::allProcessPools()) {
if (processPool->shouldTakeUIBackgroundAssertion())
return true;
}
@@ -323,7 +323,7 @@
if (defaultNetworkProcess() == this)
defaultNetworkProcess() = nullptr;
- for (auto* processPool : WebProcessPool::allProcessPools())
+ for (auto& processPool : WebProcessPool::allProcessPools())
processPool->networkProcessDidTerminate(*this, reason);
for (auto& websiteDataStore : copyToVectorOf<Ref<WebsiteDataStore>>(m_websiteDataStores))
websiteDataStore->networkProcessDidTerminate(*this);
@@ -1218,7 +1218,7 @@
void NetworkProcessProxy::setDomainsWithUserInteraction(HashSet<WebCore::RegistrableDomain>&& domains)
{
- for (auto* processPool : WebProcessPool::allProcessPools())
+ for (auto& processPool : WebProcessPool::allProcessPools())
processPool->setDomainsWithUserInteraction(HashSet<WebCore::RegistrableDomain> { domains });
}
@@ -1226,7 +1226,7 @@
{
auto callbackAggregator = CallbackAggregator::create(WTFMove(completionHandler));
- for (auto* processPool : WebProcessPool::allProcessPools())
+ for (auto& processPool : WebProcessPool::allProcessPools())
processPool->setDomainsWithCrossPageStorageAccess(HashMap<TopFrameDomain, SubResourceDomain> { domains }, [callbackAggregator] { });
}
@@ -1511,7 +1511,7 @@
static bool anyProcessPoolHasForegroundWebProcesses()
{
- for (auto* processPool : WebProcessPool::allProcessPools()) {
+ for (auto& processPool : WebProcessPool::allProcessPools()) {
if (processPool->hasForegroundWebProcesses())
return true;
}
@@ -1520,7 +1520,7 @@
static bool anyProcessPoolHasBackgroundWebProcesses()
{
- for (auto* processPool : WebProcessPool::allProcessPools()) {
+ for (auto& processPool : WebProcessPool::allProcessPools()) {
if (processPool->hasBackgroundWebProcesses())
return true;
}
Modified: trunk/Source/WebKit/UIProcess/Plugins/PluginProcessProxy.cpp (279353 => 279354)
--- trunk/Source/WebKit/UIProcess/Plugins/PluginProcessProxy.cpp 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/Plugins/PluginProcessProxy.cpp 2021-06-29 00:24:54 UTC (rev 279354)
@@ -207,9 +207,8 @@
exitFullscreen();
#endif
- const Vector<WebProcessPool*>& processPools = WebProcessPool::allProcessPools();
- for (size_t i = 0; i < processPools.size(); ++i)
- processPools[i]->sendToAllProcesses(Messages::PluginProcessConnectionManager::PluginProcessCrashed(m_pluginProcessToken));
+ for (auto& processPool : WebProcessPool::allProcessPools())
+ processPool->sendToAllProcesses(Messages::PluginProcessConnectionManager::PluginProcessCrashed(m_pluginProcessToken));
// This will cause us to be deleted.
pluginProcessCrashedOrFailedToLaunch();
Modified: trunk/Source/WebKit/UIProcess/WebMemoryPressureHandler.cpp (279353 => 279354)
--- trunk/Source/WebKit/UIProcess/WebMemoryPressureHandler.cpp 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/WebMemoryPressureHandler.cpp 2021-06-29 00:24:54 UTC (rev 279354)
@@ -43,7 +43,7 @@
ViewSnapshotStore::singleton().discardSnapshotImages();
#endif
- for (auto* processPool : WebProcessPool::allProcessPools())
+ for (auto& processPool : WebProcessPool::allProcessPools())
processPool->handleMemoryPressureWarning(critical);
});
memoryPressureHandler.install();
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (279353 => 279354)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-06-29 00:24:54 UTC (rev 279354)
@@ -5444,11 +5444,7 @@
if (processPools.isEmpty())
return nullptr;
- auto processPool = processPools[0];
- if (!processPool)
- return nullptr;
-
- for (auto& webProcess : processPool->processes()) {
+ for (auto& webProcess : processPools[0]->processes()) {
for (auto& page : webProcess->pages()) {
if (page->sessionID().isEphemeral())
continue;
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (279353 => 279354)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2021-06-29 00:24:54 UTC (rev 279354)
@@ -174,9 +174,11 @@
return processPools;
}
-const Vector<WebProcessPool*>& WebProcessPool::allProcessPools()
+Vector<Ref<WebProcessPool>> WebProcessPool::allProcessPools()
{
- return processPools();
+ return WTF::map(processPools(), [] (auto&& v) -> Ref<WebProcessPool> {
+ return *v;
+ });
}
static HashSet<String, ASCIICaseInsensitiveHash>& globalURLSchemesWithCustomProtocolHandlers()
@@ -2041,11 +2043,8 @@
WEBPROCESSPOOL_RELEASE_LOG_STATIC(ServiceWorker, "setUseSeparateServiceWorkerProcess: (useSeparateServiceWorkerProcess=%d)", useSeparateServiceWorkerProcess);
s_useSeparateServiceWorkerProcess = useSeparateServiceWorkerProcess;
- auto processPools = WTF::map(WebProcessPool::allProcessPools(), [](auto* pool) { return makeWeakPtr(pool); });
- for (auto& processPool : processPools) {
- if (processPool)
- processPool->terminateServiceWorkers();
- }
+ for (auto& processPool : allProcessPools())
+ processPool->terminateServiceWorkers();
}
#if ENABLE(SERVICE_WORKER)
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (279353 => 279354)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.h 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h 2021-06-29 00:24:54 UTC (rev 279354)
@@ -138,7 +138,7 @@
API::ProcessPoolConfiguration& configuration() { return m_configuration.get(); }
- static const Vector<WebProcessPool*>& allProcessPools();
+ static Vector<Ref<WebProcessPool>> allProcessPools();
template <typename T>
T* supplement()
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (279353 => 279354)
--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2021-06-29 00:24:54 UTC (rev 279354)
@@ -1288,7 +1288,7 @@
});
});
- for (auto* processPool : WebProcessPool::allProcessPools())
+ for (auto& processPool : WebProcessPool::allProcessPools())
processPool->sendResourceLoadStatisticsDataImmediately([wtfCallbackAggregator] { });
}
@@ -1629,7 +1629,7 @@
if (processPools.isEmpty()) {
// Check if we're one of the legacy data stores.
for (auto& processPool : WebProcessPool::allProcessPools()) {
- processPools.add(processPool);
+ processPools.add(processPool.ptr());
if (processPools.size() == limit)
break;
}
@@ -1911,7 +1911,7 @@
void WebsiteDataStore::setCacheModelSynchronouslyForTesting(CacheModel cacheModel)
{
- for (auto processPool : WebProcessPool::allProcessPools())
+ for (auto& processPool : WebProcessPool::allProcessPools())
processPool->setCacheModelSynchronouslyForTesting(cacheModel);
}
Modified: trunk/Source/WebKit/UIProcess/gtk/WebTextChecker.cpp (279353 => 279354)
--- trunk/Source/WebKit/UIProcess/gtk/WebTextChecker.cpp 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/gtk/WebTextChecker.cpp 2021-06-29 00:24:54 UTC (rev 279354)
@@ -51,9 +51,8 @@
static void updateStateForAllContexts()
{
- const Vector<WebProcessPool*>& contexts = WebProcessPool::allProcessPools();
- for (size_t i = 0; i < contexts.size(); ++i)
- contexts[i]->textCheckerStateChanged();
+ for (auto& processPool : WebProcessPool::allProcessPools())
+ processPool->textCheckerStateChanged();
}
void WebTextChecker::continuousSpellCheckingEnabledStateChanged(bool enabled)
Modified: trunk/Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp (279353 => 279354)
--- trunk/Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/linux/MemoryPressureMonitor.cpp 2021-06-29 00:24:54 UTC (rev 279354)
@@ -380,7 +380,7 @@
if (usedPercentage >= s_memoryPresurePercentageThreshold) {
bool isCritical = (usedPercentage >= s_memoryPresurePercentageThresholdCritical);
RunLoop::main().dispatch([isCritical] {
- for (auto* processPool : WebProcessPool::allProcessPools())
+ for (auto& processPool : WebProcessPool::allProcessPools())
processPool->sendMemoryPressureEvent(isCritical);
});
}
Modified: trunk/Source/WebKit/UIProcess/mac/WindowServerConnection.mm (279353 => 279354)
--- trunk/Source/WebKit/UIProcess/mac/WindowServerConnection.mm 2021-06-29 00:21:51 UTC (rev 279353)
+++ trunk/Source/WebKit/UIProcess/mac/WindowServerConnection.mm 2021-06-29 00:24:54 UTC (rev 279354)
@@ -43,7 +43,7 @@
void WindowServerConnection::windowServerConnectionStateChanged()
{
- for (auto* processPool : WebProcessPool::allProcessPools())
+ for (auto& processPool : WebProcessPool::allProcessPools())
processPool->windowServerConnectionStateChanged();
}