<html>
<head>
<base href="https://bugs.webkit.org/" />
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - [Coordinated Graphics] ASSERTION FAILED: !m_flushingLayers in fast/repaint/animation-after-layer-scroll.html"
href="https://bugs.webkit.org/show_bug.cgi?id=160142">160142</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>[Coordinated Graphics] ASSERTION FAILED: !m_flushingLayers in fast/repaint/animation-after-layer-scroll.html
</td>
</tr>
<tr>
<th>Classification</th>
<td>Unclassified
</td>
</tr>
<tr>
<th>Product</th>
<td>WebKit
</td>
</tr>
<tr>
<th>Version</th>
<td>WebKit Local Build
</td>
</tr>
<tr>
<th>Hardware</th>
<td>Unspecified
</td>
</tr>
<tr>
<th>OS</th>
<td>Unspecified
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Keywords</th>
<td>Gtk, LayoutTestFailure
</td>
</tr>
<tr>
<th>Severity</th>
<td>Normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>P2
</td>
</tr>
<tr>
<th>Component</th>
<td>WebKit2
</td>
</tr>
<tr>
<th>Assignee</th>
<td>webkit-unassigned@lists.webkit.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>cgarcia@igalia.com
</td>
</tr>
<tr>
<th>Blocks</th>
<td>154066
</td>
</tr></table>
<p>
<div>
<pre>This only happens in layout tests, because it happens when RenderLayerCompositor::layerTreeAsText() is called. The thing is that CoordinatedGraphicsLayer::flushCompositingState() calls notifyFlushRequired() that checks if the coordinator is flusing layers and if not it calls RenderLayerCompositor::notifyFlushRequired() and returns early. This normally works because the coodinator is the one starting the layer flush, so that when RenderLayerCompositor::flushPendingLayerChanges() is called the coordinator is always flusing layers. But RenderLayerCompositor::layerTreeAsText() calls RenderLayerCompositor::flushPendingLayerChanges() directly, so at that moment the coordinator is not flusing layers, what causes that CoordinatedGraphicsLayer::flushCompositingState() ends up calling RenderLayerCompositor::notifyFlushRequired() that schedules a new flush while flusing layers causing the assertion. CoordinatedGraphicsLayer::flushCompositingState() is always called from Compositing
STDERR: ASSERTION FAILED: !m_flushingLayers
STDERR: ../../Source/WebCore/rendering/RenderLayerCompositor.cpp(409) : void WebCore::RenderLayerCompositor::scheduleLayerFlush(bool)
STDERR: 1 0x7fd2de764aef /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(WTFCrash+0x1e) [0x7fd2de764aef]
STDERR: 2 0x7fd2e64c4b16 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderLayerCompositor::scheduleLayerFlush(bool)+0x44) [0x7fd2e64c4b16]
STDERR: 3 0x7fd2e64c4a7a /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderLayerCompositor::notifyFlushRequired(WebCore::GraphicsLayer const*)+0x3a) [0x7fd2e64c4a7a]
STDERR: 4 0x7fd2e697d948 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::CoordinatedGraphicsLayer::notifyFlushRequired()+0x8a) [0x7fd2e697d948]
STDERR: 5 0x7fd2e697f3b7 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::CoordinatedGraphicsLayer::flushCompositingState(WebCore::FloatRect const&, bool)+0x21) [0x7fd2e697f3b7]
STDERR: 6 0x7fd2e64c5019 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderLayerCompositor::flushPendingLayerChanges(bool)+0x339) [0x7fd2e64c5019]
STDERR: 7 0x7fd2e64c9f95 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderLayerCompositor::layerTreeAsText(unsigned int)+0x63) [0x7fd2e64c9f95]
STDERR: 8 0x7fd2e6050fbe /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::Frame::layerTreeAsText(unsigned int) const+0x74) [0x7fd2e6050fbe]
STDERR: 9 0x7fd28c2ab073 /home/slave/webkitgtk/gtk-linux-64-debug-tests/build/WebKitBuild/Debug/lib/libTestRunnerInjectedBundle.so(WebCore::Internals::layerTreeAsText(WebCore::Document&, unsigned short, int&) const+0xbf) [0x7fd28c2ab073]
STDERR: 10 0x7fd28c274b9e /home/slave/webkitgtk/gtk-linux-64-debug-tests/build/WebKitBuild/Debug/lib/libTestRunnerInjectedBundle.so(WebCore::jsInternalsPrototypeFunctionLayerTreeAsText(JSC::ExecState*)+0x27d) [0x7fd28c274b9e]
STDERR: 11 0x7fd28d7fe028 [0x7fd28d7fe028]</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>