<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&#64;lists.webkit.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>cgarcia&#64;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&amp;, 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&amp;, unsigned short, int&amp;) 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>