<html>
    <head>
      <base href="https://bugs.webkit.org/">
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - [Threaded Compositor] SHOULD NEVER BE REACHED in WebKit::CompositingRunLoop::updateCompleted"
   href="https://bugs.webkit.org/show_bug.cgi?id=172167#c8">Comment # 8</a>
              on <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - [Threaded Compositor] SHOULD NEVER BE REACHED in WebKit::CompositingRunLoop::updateCompleted"
   href="https://bugs.webkit.org/show_bug.cgi?id=172167">bug 172167</a>
              from <span class="vcard"><a class="email" href="mailto:zan@falconsigh.net" title="Zan Dobersek <zan@falconsigh.net>"> <span class="fn">Zan Dobersek</span></a>
</span></b>
        <pre>Comment on <span class=""><a href="attachment.cgi?id=310260&action=diff" name="attach_310260" title="Patch">attachment 310260</a> <a href="attachment.cgi?id=310260&action=edit" title="Patch">[details]</a></span>
Patch

View in context: <a href="https://bugs.webkit.org/attachment.cgi?id=310260&action=review">https://bugs.webkit.org/attachment.cgi?id=310260&action=review</a>

<span class="quote">>>> Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:266
>>> +        sceneUpdateFinished();
>> 
>> How can this occur? renderLayerTree() returns early at the beginning if the scene is not active. If it is active, the function then executes serially, which should make it impossible for any task to be scheduled on this thread that would make the scene inactive.

> Because invalidate happens in the main thread.</span >

That's doing unsafe cross-thread modifications then.

<span class="quote">>>> Source/WebKit2/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:292
>>> +            return;
>> 
>> m_coordinateUpdateCompletion should be set here, but to false if m_inForceRepaint is false as well.

> That happens, because it doesn't return early.</span >

I'm saying it should be set regardless of the value of m_inForceRepaint. But if m_inForceRepaint is false, it should be set to false.

    bool coordinateUpdate = m_inForceRepaint && std::any_of(...</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>