Title: [247375] trunk/Source/WebKit
Revision
247375
Author
cdu...@apple.com
Date
2019-07-11 16:58:35 -0700 (Thu, 11 Jul 2019)

Log Message

ASSERTION FAILED: RunLoop::isMain() under IPC::Connection::sendWithAsyncReply()
https://bugs.webkit.org/show_bug.cgi?id=199734
<rdar://problem/52977439>

Reviewed by Geoffrey Garen.

It appears WKProcessTaskStateObserverDelegate's taskStateDidChange handler can get called
on a background thread so we need to make sure we go back to the main thread before we
go into WebKit and do IPC.

* Shared/Cocoa/ProcessTaskStateObserver.mm:
(-[WKProcessTaskStateObserverDelegate process:taskStateDidChange:]):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (247374 => 247375)


--- trunk/Source/WebKit/ChangeLog	2019-07-11 23:47:06 UTC (rev 247374)
+++ trunk/Source/WebKit/ChangeLog	2019-07-11 23:58:35 UTC (rev 247375)
@@ -1,3 +1,18 @@
+2019-07-11  Chris Dumez  <cdu...@apple.com>
+
+        ASSERTION FAILED: RunLoop::isMain() under IPC::Connection::sendWithAsyncReply()
+        https://bugs.webkit.org/show_bug.cgi?id=199734
+        <rdar://problem/52977439>
+
+        Reviewed by Geoffrey Garen.
+
+        It appears WKProcessTaskStateObserverDelegate's taskStateDidChange handler can get called
+        on a background thread so we need to make sure we go back to the main thread before we
+        go into WebKit and do IPC.
+
+        * Shared/Cocoa/ProcessTaskStateObserver.mm:
+        (-[WKProcessTaskStateObserverDelegate process:taskStateDidChange:]):
+
 2019-07-11  Sihui Liu  <sihui_...@apple.com>
 
         StorageArea should not be destructed on the main thread

Modified: trunk/Source/WebKit/Shared/Cocoa/ProcessTaskStateObserver.mm (247374 => 247375)


--- trunk/Source/WebKit/Shared/Cocoa/ProcessTaskStateObserver.mm	2019-07-11 23:47:06 UTC (rev 247374)
+++ trunk/Source/WebKit/Shared/Cocoa/ProcessTaskStateObserver.mm	2019-07-11 23:58:35 UTC (rev 247375)
@@ -47,8 +47,10 @@
 {
     RELEASE_LOG(ProcessSuspension, "%p -[WKProcessTaskStateObserverDelegate process:taskStateDidChange:], process(%p), newState(%d)", self, process, (int)newState);
 
-    if (self.taskStateChangedCallback)
-        self.taskStateChangedCallback(newState);
+    dispatch_async(dispatch_get_main_queue(), ^{
+        if (self.taskStateChangedCallback)
+            self.taskStateChangedCallback(newState);
+    });
 }
 @end
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to