Title: [248225] releases/WebKitGTK/webkit-2.24/Source/WebKit
Revision
248225
Author
[email protected]
Date
2019-08-03 20:22:52 -0700 (Sat, 03 Aug 2019)

Log Message

Merge r245298 - Crash under WebKit::WebProcessProxy::didBecomeUnresponsive()
https://bugs.webkit.org/show_bug.cgi?id=197883
<rdar://problem/50665984>

Reviewed by Alex Christensen.

Protect |this| in didBecomeUnresponsive() and didExceedCPULimit() since we call client
delegates and those may cause |this| to get destroyed.

* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didBecomeUnresponsive):
(WebKit::WebProcessProxy::didExceedCPULimit):

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.24/Source/WebKit/ChangeLog (248224 => 248225)


--- releases/WebKitGTK/webkit-2.24/Source/WebKit/ChangeLog	2019-08-04 03:22:50 UTC (rev 248224)
+++ releases/WebKitGTK/webkit-2.24/Source/WebKit/ChangeLog	2019-08-04 03:22:52 UTC (rev 248225)
@@ -1,3 +1,18 @@
+2019-05-14  Chris Dumez  <[email protected]>
+
+        Crash under WebKit::WebProcessProxy::didBecomeUnresponsive()
+        https://bugs.webkit.org/show_bug.cgi?id=197883
+        <rdar://problem/50665984>
+
+        Reviewed by Alex Christensen.
+
+        Protect |this| in didBecomeUnresponsive() and didExceedCPULimit() since we call client
+        delegates and those may cause |this| to get destroyed.
+
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::didBecomeUnresponsive):
+        (WebKit::WebProcessProxy::didExceedCPULimit):
+
 2019-03-20  Chris Dumez  <[email protected]>
 
         Unreviewed, drop invalid assertions landed in r243163.

Modified: releases/WebKitGTK/webkit-2.24/Source/WebKit/UIProcess/WebProcessProxy.cpp (248224 => 248225)


--- releases/WebKitGTK/webkit-2.24/Source/WebKit/UIProcess/WebProcessProxy.cpp	2019-08-04 03:22:50 UTC (rev 248224)
+++ releases/WebKitGTK/webkit-2.24/Source/WebKit/UIProcess/WebProcessProxy.cpp	2019-08-04 03:22:52 UTC (rev 248225)
@@ -626,6 +626,8 @@
 
 void WebProcessProxy::didBecomeUnresponsive()
 {
+    auto protectedThis = makeRef(*this);
+
     m_isResponsive = NoOrMaybe::No;
 
     auto isResponsiveCallbacks = WTFMove(m_isResponsiveCallbacks);
@@ -1200,6 +1202,8 @@
 
 void WebProcessProxy::didExceedCPULimit()
 {
+    auto protectedThis = makeRef(*this);
+
     for (auto& page : pages()) {
         if (page->isPlayingAudio()) {
             RELEASE_LOG(PerformanceLogging, "%p - WebProcessProxy::didExceedCPULimit() WebProcess with pid %d has exceeded the background CPU limit but we are not terminating it because there is audio playing", this, processIdentifier());
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to