<html>
    <head>
      <base href="https://bugs.webkit.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Follow-up (r213833): write a layout test for 169199"
   href="https://bugs.webkit.org/show_bug.cgi?id=169576#c3">Comment # 3</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Follow-up (r213833): write a layout test for 169199"
   href="https://bugs.webkit.org/show_bug.cgi?id=169576">bug 169576</a>
              from <span class="vcard"><a class="email" href="mailto:sabouhallawa&#64;apple.com" title="Said Abou-Hallawa &lt;sabouhallawa&#64;apple.com&gt;"> <span class="fn">Said Abou-Hallawa</span></a>
</span></b>
        <pre>(In reply to <a href="show_bug.cgi?id=169576#c2">comment #2</a>)
<span class="quote">&gt; I'm working on this.
&gt; 
&gt; I have the test that deletes the decoder and works fine. But without r213833
&gt; it doesn't necessarily cause a crash, as it's a race condition.
&gt; 
&gt; With the implementation of BitmapImage::clearDecoder() you suggest,
&gt; ImageSource::clear() calls setData() just after setting the ImageFrameCache
&gt; decoder to nullptr, and that setData() creates a new decoder that the
&gt; decoding thread will use without crashing.
&gt; 
&gt; The crash happens only when the decoding thread is using the decoder exactly
&gt; between its destruction and the creation of the new one, which is pretty
&gt; hard to reproduce. I could force it though, using an implementation of
&gt; BitmapImage::clearDecoder() that just deletes the decoder and doesn't cause
&gt; setData() to be called.
&gt; 
&gt; Should I do that? Or should I use the implementation you suggest, even if
&gt; the crash is not easily reproducible without r213833?</span >

I think you are right. You can instead add a setting flag which clears the decoder immediately  after requesting a new frame in BitmapImage::internalStartAnimation(). You can do something similar to Internals::setImageFrameDecodingDuration().

You can also try run-webkit-tests with --repeat-each=100 for example. This might cause the crash to happen with scenarios like this.</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>