Title: [229833] trunk/Source/WebKit
Revision
229833
Author
[email protected]
Date
2018-03-21 16:11:38 -0700 (Wed, 21 Mar 2018)

Log Message

WebKitTestRunner crashed in com.apple.WebKit: WebKit::WebProcessPool::terminateServiceWorkerProcesses
https://bugs.webkit.org/show_bug.cgi?id=183875

Reviewed by Brent Fulgham.

Protect |this| while we're iterating over m_serviceWorkerProcesses and terminating
each service worker process. It is possible for the WebProcess pool to get destroyed
as a result of terminating a service worker process.

This change is covered by layout tests that are currently crashing on the ASAN bots.

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::terminateServiceWorkerProcesses):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (229832 => 229833)


--- trunk/Source/WebKit/ChangeLog	2018-03-21 22:37:37 UTC (rev 229832)
+++ trunk/Source/WebKit/ChangeLog	2018-03-21 23:11:38 UTC (rev 229833)
@@ -1,3 +1,19 @@
+2018-03-21  Chris Dumez  <[email protected]>
+
+        WebKitTestRunner crashed in com.apple.WebKit: WebKit::WebProcessPool::terminateServiceWorkerProcesses
+        https://bugs.webkit.org/show_bug.cgi?id=183875
+
+        Reviewed by Brent Fulgham.
+
+        Protect |this| while we're iterating over m_serviceWorkerProcesses and terminating
+        each service worker process. It is possible for the WebProcess pool to get destroyed
+        as a result of terminating a service worker process.
+
+        This change is covered by layout tests that are currently crashing on the ASAN bots.
+
+        * UIProcess/WebProcessPool.cpp:
+        (WebKit::WebProcessPool::terminateServiceWorkerProcesses):
+
 2018-03-21  Eric Carlson  <[email protected]>
 
         Fix typo in inactive media stream timeout default value

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (229832 => 229833)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2018-03-21 22:37:37 UTC (rev 229832)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp	2018-03-21 23:11:38 UTC (rev 229833)
@@ -1505,9 +1505,7 @@
 void WebProcessPool::terminateServiceWorkerProcesses()
 {
 #if ENABLE(SERVICE_WORKER)
-    if (m_serviceWorkerProcesses.isEmpty())
-        return;
-
+    auto protectedThis = makeRef(*this);
     while (!m_serviceWorkerProcesses.isEmpty())
         m_serviceWorkerProcesses.begin()->value->requestTermination(ProcessTerminationReason::RequestedByClient);
 #endif
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to