Title: [211791] releases/WebKitGTK/webkit-2.14/Source/WebKit2
Revision
211791
Author
carlo...@webkit.org
Date
2017-02-07 01:33:24 -0800 (Tue, 07 Feb 2017)

Log Message

Merge r211347 - [Threaded Compositor] Crash when deleting the compositor run loop
https://bugs.webkit.org/show_bug.cgi?id=167545

Reviewed by Michael Catanzaro.

The problem is that we are releasing the WorkQueue before the update timer that keeps a reference to the run
loop, destroyed by the WorkQueue. So, invalidate the WorkQueue in the next run loop iteration to ensure it
happens after the CompositingRunLoop destructor.

* Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
(WebKit::CompositingRunLoop::~CompositingRunLoop):

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.14/Source/WebKit2/ChangeLog (211790 => 211791)


--- releases/WebKitGTK/webkit-2.14/Source/WebKit2/ChangeLog	2017-02-07 09:33:19 UTC (rev 211790)
+++ releases/WebKitGTK/webkit-2.14/Source/WebKit2/ChangeLog	2017-02-07 09:33:24 UTC (rev 211791)
@@ -1,5 +1,19 @@
 2017-01-28  Carlos Garcia Campos  <cgar...@igalia.com>
 
+        [Threaded Compositor] Crash when deleting the compositor run loop
+        https://bugs.webkit.org/show_bug.cgi?id=167545
+
+        Reviewed by Michael Catanzaro.
+
+        The problem is that we are releasing the WorkQueue before the update timer that keeps a reference to the run
+        loop, destroyed by the WorkQueue. So, invalidate the WorkQueue in the next run loop iteration to ensure it
+        happens after the CompositingRunLoop destructor.
+
+        * Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:
+        (WebKit::CompositingRunLoop::~CompositingRunLoop):
+
+2017-01-28  Carlos Garcia Campos  <cgar...@igalia.com>
+
         [GTK] ASSERTION FAILED: !m_layerTreeHost in DrawingAreaImpl::display()
         https://bugs.webkit.org/show_bug.cgi?id=167548
 

Modified: releases/WebKitGTK/webkit-2.14/Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp (211790 => 211791)


--- releases/WebKitGTK/webkit-2.14/Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp	2017-02-07 09:33:19 UTC (rev 211790)
+++ releases/WebKitGTK/webkit-2.14/Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp	2017-02-07 09:33:24 UTC (rev 211791)
@@ -119,7 +119,11 @@
 
 CompositingRunLoop::~CompositingRunLoop()
 {
-    WorkQueuePool::singleton().invalidate(this);
+    ASSERT(isMainThread());
+    // Make sure the WorkQueue is deleted after the CompositingRunLoop, because m_updateTimer has a reference
+    // of the WorkQueue run loop. Passing this is not a problem because the pointer will only be used as a
+    // HashMap key by WorkQueuePool.
+    RunLoop::main().dispatch([context = this] { WorkQueuePool::singleton().invalidate(context); });
 }
 
 void CompositingRunLoop::performTask(Function<void ()>&& function)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to