Title: [274683] trunk/Source/WebKit
Revision
274683
Author
[email protected]
Date
2021-03-18 16:22:01 -0700 (Thu, 18 Mar 2021)

Log Message

Crash under WebsiteDataStore::terminateNetworkProcess()
https://bugs.webkit.org/show_bug.cgi?id=223482
<rdar://75326967>

Reviewed by Alex Christensen.

Calling WebProcessPool::terminateServiceWorkers() may destroy the WebProcessPool, which would
remove the WebProcessPool from the WebProcessPool::allProcessPools() vector we're iterating
on. To make this safe, I now copy the WebProcessPool into a separate vector and hold a RefPtr
to them. I now iterate over this new vector instead.

* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::terminateNetworkProcess):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (274682 => 274683)


--- trunk/Source/WebKit/ChangeLog	2021-03-18 23:11:05 UTC (rev 274682)
+++ trunk/Source/WebKit/ChangeLog	2021-03-18 23:22:01 UTC (rev 274683)
@@ -1,3 +1,19 @@
+2021-03-18  Chris Dumez  <[email protected]>
+
+        Crash under WebsiteDataStore::terminateNetworkProcess()
+        https://bugs.webkit.org/show_bug.cgi?id=223482
+        <rdar://75326967>
+
+        Reviewed by Alex Christensen.
+
+        Calling WebProcessPool::terminateServiceWorkers() may destroy the WebProcessPool, which would
+        remove the WebProcessPool from the WebProcessPool::allProcessPools() vector we're iterating
+        on. To make this safe, I now copy the WebProcessPool into a separate vector and hold a RefPtr
+        to them. I now iterate over this new vector instead.
+
+        * UIProcess/WebsiteData/WebsiteDataStore.cpp:
+        (WebKit::WebsiteDataStore::terminateNetworkProcess):
+
 2021-03-18  Michael Catanzaro  <[email protected]>
 
         [WPE][GTK] Remove plugin process leftover arg from ProcessLauncher

Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (274682 => 274683)


--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp	2021-03-18 23:11:05 UTC (rev 274682)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp	2021-03-18 23:22:01 UTC (rev 274683)
@@ -1734,7 +1734,8 @@
 
 void WebsiteDataStore::terminateNetworkProcess()
 {
-    for (auto* processPool : WebProcessPool::allProcessPools())
+    auto processPools = copyToVectorOf<RefPtr<WebProcessPool>>(WebProcessPool::allProcessPools());
+    for (auto& processPool : processPools)
         processPool->terminateServiceWorkers();
 
     if (!m_networkProcess)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to