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