<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>206068</bug_id>
          
          <creation_ts>2020-01-10 08:45:32 -0800</creation_ts>
          <short_desc>REGRESSION (r254291): [ Catalina wk2 Debug ] Flaky ASSERT on fast/images/animated-image-loop-count.html</short_desc>
          <delta_ts>2020-01-16 13:02:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=205850</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=200734</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=206326</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Truitt Savell">tsavell</reporter>
          <assigned_to name="Chris Lord">clord</assigned_to>
          <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>clord</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1605118</commentid>
    <comment_count>0</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2020-01-10 08:45:32 -0800</bug_when>
    <thetext>fast/images/animated-image-loop-count.html

Description:
This test seems to have begun crashing around r254298 only on Catalina wk2 Debug. this is not reproducing locally for m right now

History:
https://results.webkit.org/?suite=layout-tests&amp;test=fast%2Fimages%2Fanimated-image-loop-count.html

Crash Log:

No crash log found for com.apple.WebKit.WebContent.Development:3398.

stdout:

stderr:
2   0x61b6f22eb WTFCrashWithInfo(int, char const*, char const*, int)
3   0x61efbfb66 WebCore::ImageSource::~ImageSource()
4   0x61efbfcf5 WebCore::ImageSource::~ImageSource()
5   0x61ef213ea WTF::ThreadSafeRefCounted&lt;WebCore::ImageSource, (WTF::DestructionThread)0&gt;::deref() const::&apos;lambda&apos;()::operator()() const
6   0x61ef213ad WTF::ThreadSafeRefCounted&lt;WebCore::ImageSource, (WTF::DestructionThread)0&gt;::deref() const
7   0x61ef2135f WTF::Ref&lt;WebCore::ImageSource, WTF::DumbPtrTraits&lt;WebCore::ImageSource&gt; &gt;::~Ref()
8   0x61eef23f5 WTF::Ref&lt;WebCore::ImageSource, WTF::DumbPtrTraits&lt;WebCore::ImageSource&gt; &gt;::~Ref()
9   0x61efc99ec WebCore::ImageSource::startAsyncDecodingQueue()::$_1::~$_1()
10  0x61efc1d85 WebCore::ImageSource::startAsyncDecodingQueue()::$_1::~$_1()
11  0x61efcfe31 WTF::Detail::CallableWrapper&lt;WebCore::ImageSource::startAsyncDecodingQueue()::$_1, void&gt;::~CallableWrapper()
12  0x61efcf915 WTF::Detail::CallableWrapper&lt;WebCore::ImageSource::startAsyncDecodingQueue()::$_1, void&gt;::~CallableWrapper()
13  0x61efcf939 WTF::Detail::CallableWrapper&lt;WebCore::ImageSource::startAsyncDecodingQueue()::$_1, void&gt;::~CallableWrapper()
14  0x635b2e03f std::__1::default_delete&lt;WTF::Detail::CallableWrapperBase&lt;void&gt; &gt;::operator()(WTF::Detail::CallableWrapperBase&lt;void&gt;*) const
15  0x635b2dfbf std::__1::unique_ptr&lt;WTF::Detail::CallableWrapperBase&lt;void&gt;, std::__1::default_delete&lt;WTF::Detail::CallableWrapperBase&lt;void&gt; &gt; &gt;::reset(WTF::Detail::CallableWrapperBase&lt;void&gt;*)
16  0x635b2df59 std::__1::unique_ptr&lt;WTF::Detail::CallableWrapperBase&lt;void&gt;, std::__1::default_delete&lt;WTF::Detail::CallableWrapperBase&lt;void&gt; &gt; &gt;::~unique_ptr()
17  0x635b2df35 std::__1::unique_ptr&lt;WTF::Detail::CallableWrapperBase&lt;void&gt;, std::__1::default_delete&lt;WTF::Detail::CallableWrapperBase&lt;void&gt; &gt; &gt;::~unique_ptr()
18  0x635b2df15 WTF::Function&lt;void ()&gt;::~Function()
19  0x635b2d215 WTF::Function&lt;void ()&gt;::~Function()
20  0x635c46de3 WTF::WorkQueue::dispatch(WTF::Function&lt;void ()&gt;&amp;&amp;)::$_0::~$_0()
21  0x635c46125 WTF::WorkQueue::dispatch(WTF::Function&lt;void ()&gt;&amp;&amp;)::$_0::~$_0()
22  0x635c467f0 WTF::BlockPtr&lt;void ()&gt; WTF::BlockPtr&lt;void ()&gt;::fromCallable&lt;WTF::WorkQueue::dispatch(WTF::Function&lt;void ()&gt;&amp;&amp;)::$_0&gt;(WTF::WorkQueue::dispatch(WTF::Function&lt;void ()&gt;&amp;&amp;)::$_0)::&apos;lambda&apos;(void const*)::operator()(void const*) const
23  0x635c46775 WTF::BlockPtr&lt;void ()&gt; WTF::BlockPtr&lt;void ()&gt;::fromCallable&lt;WTF::WorkQueue::dispatch(WTF::Function&lt;void ()&gt;&amp;&amp;)::$_0&gt;(WTF::WorkQueue::dispatch(WTF::Function&lt;void ()&gt;&amp;&amp;)::$_0)::&apos;lambda&apos;(void const*)::__invoke(void const*)
24  0x7fff709a0bed _Block_release
25  0x7fff708f94de _dispatch_client_callout
26  0x7fff708fea9e _dispatch_lane_serial_drain
27  0x7fff708ff422 _dispatch_lane_invoke
28  0x7fff70908aa1 _dispatch_workloop_worker_thread
29  0x7fff70b52763 _pthread_wqthread
30  0x7fff70b525c3 start_wqthread
LEAK: 1 WebPageProxy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605119</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-10 08:45:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/58480028&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605595</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-01-11 18:05:14 -0800</bug_when>
    <thetext>Seems almost certain to be https://trac.webkit.org/r254291</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605768</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-01-13 01:46:01 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #2)
&gt; Seems almost certain to be https://trac.webkit.org/r254291

Almost certainly, looking into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605770</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-01-13 02:09:04 -0800</bug_when>
    <thetext>So I&apos;m pretty certain this is caused by the async decoding queue causing destruction to happen off the creation thread (and then hitting the assert in the destructor) - this worked before because ImageSource was constructed with the main thread set as the destruction thread.

I&apos;m just testing a patch that moves the references back to the creation thread when exiting the async decoding queue task. I don&apos;t know if there&apos;s a more elegant way of fixing this(?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605784</commentid>
    <comment_count>5</comment_count>
      <attachid>387509</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-01-13 02:52:10 -0800</bug_when>
    <thetext>Created attachment 387509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606051</commentid>
    <comment_count>6</comment_count>
      <attachid>387509</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-13 14:19:32 -0800</bug_when>
    <thetext>Comment on attachment 387509
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=387509&amp;action=review

I think this would work fine but I have a couple of nits.

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:349
&gt; +    decodingQueue().dispatch([protectedThis = makeRef(*this), protectedDecodingQueue = makeRef(decodingQueue()), protectedFrameRequestQueue = makeRef(frameRequestQueue()), protectedDecoder = makeRef(*m_decoder), sourceURL = sourceURL().string().isolatedCopy()] () mutable {

I do not understand why we&apos;re capturing the protectedDecodingQueue here, is does not appear to be needed. WorkQueue::dispatch() already takes care of ref&apos;ing the WorkQueue object internally.

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:385
&gt; +        // Ensure destruction happens on creation thread

Missing period at the end of the comment (per coding style).

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:386
&gt; +        protectedThis-&gt;m_runLoop.dispatch([protectedThis = WTFMove(protectedThis), protectedQueue = WTFMove(protectedDecodingQueue), protectedDecoder = WTFMove(protectedDecoder)] () mutable { });

I see no good reason to dispatch the protectedQueue here, I don&apos;t think it should even have been captured in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606085</commentid>
    <comment_count>7</comment_count>
      <attachid>387509</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-01-13 15:25:41 -0800</bug_when>
    <thetext>Comment on attachment 387509
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=387509&amp;action=review

&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:386
&gt;&gt; +        protectedThis-&gt;m_runLoop.dispatch([protectedThis = WTFMove(protectedThis), protectedQueue = WTFMove(protectedDecodingQueue), protectedDecoder = WTFMove(protectedDecoder)] () mutable { });
&gt; 
&gt; I see no good reason to dispatch the protectedQueue here, I don&apos;t think it should even have been captured in the first place.

Why did we even change this function in r254291? The async image decoding is disabled for 2D canvas and I believe it has to be disabled for off-screen canvas. So I think this function should be retuned it its state before r254291. Maybe we can assert at its beginning ASSERT(isMainThread()) since the async decoding is only enabled for HTMLImageElement and CSS background images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606306</commentid>
    <comment_count>8</comment_count>
      <attachid>387633</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-01-14 01:37:55 -0800</bug_when>
    <thetext>Created attachment 387633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606308</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-01-14 01:42:25 -0800</bug_when>
    <thetext>Addressing the comments, I&apos;ve changed both dispatches back to callOnMainThread, added a main-thread assert in the method and corrected the comment&apos;s missing full stop.

I didn&apos;t change the protectedQueue ref - at some point a reference is required to the queue being used to make sure it&apos;s the same one when updating cached frames and that seems a fine way to do it.

This function should now be the same as it was pre r254291 now, but with an added assert and explicitly moving the references back to the main thread when exiting the queue (as the object no longer has the main thread set as the destruction thread).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606532</commentid>
    <comment_count>10</comment_count>
      <attachid>387633</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-01-14 12:33:40 -0800</bug_when>
    <thetext>Comment on attachment 387633
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=387633&amp;action=review

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:389
&gt; +
&gt; +        // Ensure destruction happens on creation thread.
&gt; +        callOnMainThread([protectedThis = WTFMove(protectedThis), protectedQueue = WTFMove(protectedDecodingQueue), protectedDecoder = WTFMove(protectedDecoder)] () mutable { });

Is this part still needed? I think r248703 ensures the destruction happens on the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606671</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-01-14 16:19:32 -0800</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #10)
&gt; Comment on attachment 387633 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387633&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ImageSource.cpp:389
&gt; &gt; +
&gt; &gt; +        // Ensure destruction happens on creation thread.
&gt; &gt; +        callOnMainThread([protectedThis = WTFMove(protectedThis), protectedQueue = WTFMove(protectedDecodingQueue), protectedDecoder = WTFMove(protectedDecoder)] () mutable { });
&gt; 
&gt; Is this part still needed? I think r248703 ensures the destruction happens
&gt; on the main thread.

This is needed because r254291 essentially rolls back that change so that ImageSource is usable in workers (needed for ImageBitmap).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607005</commentid>
    <comment_count>12</comment_count>
      <attachid>387633</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-15 10:54:06 -0800</bug_when>
    <thetext>Comment on attachment 387633
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=387633&amp;action=review

&gt; Source/WebCore/platform/graphics/ImageSource.cpp:377
&gt; +            callOnMainThread([protectedThis = protectedThis.copyRef(), protectedQueue = protectedDecodingQueue.copyRef(), protectedDecoder = protectedDecoder.copyRef(), sourceURL = sourceURL.isolatedCopy(), nativeImage = WTFMove(nativeImage), frameRequest] () mutable {

Please use WTFMove() here instead of copyRef()...

&gt;&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:389
&gt;&gt;&gt; +        callOnMainThread([protectedThis = WTFMove(protectedThis), protectedQueue = WTFMove(protectedDecodingQueue), protectedDecoder = WTFMove(protectedDecoder)] () mutable { });
&gt;&gt; 
&gt;&gt; Is this part still needed? I think r248703 ensures the destruction happens on the main thread.
&gt; 
&gt; This is needed because r254291 essentially rolls back that change so that ImageSource is usable in workers (needed for ImageBitmap).

...and then you no longer need this callOnMainThread().

Make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607376</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2020-01-16 00:53:54 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #12)
&gt; Comment on attachment 387633 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387633&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/ImageSource.cpp:377
&gt; &gt; +            callOnMainThread([protectedThis = protectedThis.copyRef(), protectedQueue = protectedDecodingQueue.copyRef(), protectedDecoder = protectedDecoder.copyRef(), sourceURL = sourceURL.isolatedCopy(), nativeImage = WTFMove(nativeImage), frameRequest] () mutable {
&gt; 
&gt; Please use WTFMove() here instead of copyRef()...

This call is in a loop that uses those objects, if we used WTFMove here, surely we&apos;d just crash when the next frame is requested? (note, using copyRef here is not something I introduced, it was always like this)

&gt; &gt;&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:389
&gt; &gt;&gt;&gt; +        callOnMainThread([protectedThis = WTFMove(protectedThis), protectedQueue = WTFMove(protectedDecodingQueue), protectedDecoder = WTFMove(protectedDecoder)] () mutable { });
&gt; &gt;&gt; 
&gt; &gt;&gt; Is this part still needed? I think r248703 ensures the destruction happens on the main thread.
&gt; &gt; 
&gt; &gt; This is needed because r254291 essentially rolls back that change so that ImageSource is usable in workers (needed for ImageBitmap).
&gt; 
&gt; ...and then you no longer need this callOnMainThread().
&gt; 
&gt; Make sense?

I don&apos;t think this makes sense, if I&apos;ve missed something please elaborate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607522</commentid>
    <comment_count>14</comment_count>
      <attachid>387633</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-16 10:10:47 -0800</bug_when>
    <thetext>Comment on attachment 387633
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=387633&amp;action=review

&gt;&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/ImageSource.cpp:389
&gt;&gt;&gt;&gt;&gt; +        callOnMainThread([protectedThis = WTFMove(protectedThis), protectedQueue = WTFMove(protectedDecodingQueue), protectedDecoder = WTFMove(protectedDecoder)] () mutable { });
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Is this part still needed? I think r248703 ensures the destruction happens on the main thread.
&gt;&gt;&gt; 
&gt;&gt;&gt; This is needed because r254291 essentially rolls back that change so that ImageSource is usable in workers (needed for ImageBitmap).
&gt;&gt; 
&gt;&gt; ...and then you no longer need this callOnMainThread().
&gt;&gt; 
&gt;&gt; Make sense?
&gt; 
&gt; I don&apos;t think this makes sense, if I&apos;ve missed something please elaborate.

Now that I expand the diff, I see that you are in a while loop and therefore cannot use WTFMove(above), I thought we were in the same scope as your callOnMainThread() here. Never mind my comment then, I do agree that this new callOnMainThread is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607532</commentid>
    <comment_count>15</comment_count>
      <attachid>387633</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-16 10:30:20 -0800</bug_when>
    <thetext>Comment on attachment 387633
Patch

Clearing flags on attachment: 387633

Committed r254692: &lt;https://trac.webkit.org/changeset/254692&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607533</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-16 10:30:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607612</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-01-16 13:02:50 -0800</bug_when>
    <thetext>*** Bug 206326 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387509</attachid>
            <date>2020-01-13 02:52:10 -0800</date>
            <delta_ts>2020-01-14 01:37:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206068-20200113105209.patch</filename>
            <type>text/plain</type>
            <size>2579</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRhNjVjNjY5MWY0ZmQw
ZDAzOGE0MzYzMDU3NzMxMjllZDdmNGFlNC4uNjc2M2E5NTgyNGZlNzJmYWUxMGZkN2ZmYjZiYmNm
ZmU1OTM2MzczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAxLTEzICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjU0Mjkx
KTogWyBDYXRhbGluYSB3azIgRGVidWcgXSBGbGFreSBBU1NFUlQgb24gZmFzdC9pbWFnZXMvYW5p
bWF0ZWQtaW1hZ2UtbG9vcC1jb3VudC5odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDgw
MDI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSk6CisKIDIwMjAtMDEtMTIgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0LWluZGVudCB3aXRoIHBlcmNlbnRh
Z2UgdmFsdWUgc2hvdWxkIHJlc29sdmUgYWdhaW5zdCB0aGUgYXZhaWxhYmxlIHdpZHRoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXgg
NWVhYTczMmZlZmY4ZmFlYjA5MTllY2VmMWY3M2FiMDJiMDU0YWU5MC4uNTE4MzY5ZWE4Zjc0OTI5
N2Y5NWVkM2RkNzIzOGQ3NWQyMGQ4Yjg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgSW1h
Z2VTb3VyY2U6OnN0YXJ0QXN5bmNEZWNvZGluZ1F1ZXVlKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gV2UgbmVlZCB0byBwcm90ZWN0IHRoaXMsIG1fZGVjb2RpbmdRdWV1ZSBhbmQgbV9kZWNv
ZGVyIGZyb20gYmVpbmcgZGVsZXRlZCB3aGlsZSB3ZSBhcmUgaW4gdGhlIGRlY29kaW5nIGxvb3Au
Ci0gICAgZGVjb2RpbmdRdWV1ZSgpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHByb3RlY3RlZERlY29kaW5nUXVldWUgPSBtYWtlUmVmKGRlY29kaW5nUXVldWUoKSks
IHByb3RlY3RlZEZyYW1lUmVxdWVzdFF1ZXVlID0gbWFrZVJlZihmcmFtZVJlcXVlc3RRdWV1ZSgp
KSwgcHJvdGVjdGVkRGVjb2RlciA9IG1ha2VSZWYoKm1fZGVjb2RlciksIHNvdXJjZVVSTCA9IHNv
dXJjZVVSTCgpLnN0cmluZygpLmlzb2xhdGVkQ29weSgpXSB7CisgICAgZGVjb2RpbmdRdWV1ZSgp
LmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb3RlY3RlZERlY29k
aW5nUXVldWUgPSBtYWtlUmVmKGRlY29kaW5nUXVldWUoKSksIHByb3RlY3RlZEZyYW1lUmVxdWVz
dFF1ZXVlID0gbWFrZVJlZihmcmFtZVJlcXVlc3RRdWV1ZSgpKSwgcHJvdGVjdGVkRGVjb2RlciA9
IG1ha2VSZWYoKm1fZGVjb2RlciksIHNvdXJjZVVSTCA9IHNvdXJjZVVSTCgpLnN0cmluZygpLmlz
b2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgSW1hZ2VGcmFtZVJlcXVlc3QgZnJh
bWVSZXF1ZXN0OwogICAgICAgICBTZWNvbmRzIG1pbkRlY29kaW5nRHVyYXRpb24gPSBwcm90ZWN0
ZWRUaGlzLT5mcmFtZURlY29kaW5nRHVyYXRpb25Gb3JUZXN0aW5nKCk7CiAKQEAgLTM4MSw2ICsz
ODEsOSBAQCB2b2lkIEltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAg
ICAgICAgICAgICAgICAgIExPRyhJbWFnZXMsICJJbWFnZVNvdXJjZTo6JXMgLSAlcCAtIHVybDog
JXMgW2ZyYW1lICVsZCB3aWxsIG5vdCBjYWNoZWRdIiwgX19GVU5DVElPTl9fLCBwcm90ZWN0ZWRU
aGlzLnB0cigpLCBzb3VyY2VVUkwudXRmOCgpLmRhdGEoKSwgZnJhbWVSZXF1ZXN0LmluZGV4KTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9CisKKyAgICAgICAgLy8gRW5zdXJlIGRlc3RydWN0
aW9uIGhhcHBlbnMgb24gY3JlYXRpb24gdGhyZWFkCisgICAgICAgIHByb3RlY3RlZFRoaXMtPm1f
cnVuTG9vcC5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IHByb3RlY3RlZFF1ZXVlID0gV1RGTW92ZShwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlKSwgcHJvdGVj
dGVkRGVjb2RlciA9IFdURk1vdmUocHJvdGVjdGVkRGVjb2RlcildICgpIG11dGFibGUgeyB9KTsK
ICAgICB9KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387633</attachid>
            <date>2020-01-14 01:37:55 -0800</date>
            <delta_ts>2020-01-16 10:30:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206068-20200114093754.patch</filename>
            <type>text/plain</type>
            <size>3919</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRhNjVjNjY5MWY0ZmQw
ZDAzOGE0MzYzMDU3NzMxMjllZDdmNGFlNC4uMmE5MTM5ZmJkMDVjMjlmYzc2OGJlOGUwZmIyN2Y2
ZmFlNzRmY2JjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAxLTEzICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjU0Mjkx
KTogWyBDYXRhbGluYSB3azIgRGVidWcgXSBGbGFreSBBU1NFUlQgb24gZmFzdC9pbWFnZXMvYW5p
bWF0ZWQtaW1hZ2UtbG9vcC1jb3VudC5odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDgw
MDI4PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNl
OjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSk6CisKIDIwMjAtMDEtMTIgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0LWluZGVudCB3aXRoIHBlcmNlbnRhZ2Ug
dmFsdWUgc2hvdWxkIHJlc29sdmUgYWdhaW5zdCB0aGUgYXZhaWxhYmxlIHdpZHRoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggNWVh
YTczMmZlZmY4ZmFlYjA5MTllY2VmMWY3M2FiMDJiMDU0YWU5MC4uMjcyNGQ3MzhlNzVmM2FkOGE3
NWEyYmU0MTU1MTA1YzUwY2JmODZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMzQ1LDggKzM0NSwxMSBAQCB2b2lkIEltYWdl
U291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgaWYgKGhhc0FzeW5jRGVjb2Rp
bmdRdWV1ZSgpIHx8ICFpc0RlY29kZXJBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgLy8gQXN5bmMgZGVjb2RpbmcgaXMgb25seSBlbmFibGVkIGZvciBIVE1MSW1hZ2VFbGVtZW50
IGFuZCBDU1MgYmFja2dyb3VuZCBpbWFnZXMuCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KwogICAgIC8vIFdlIG5lZWQgdG8gcHJvdGVjdCB0aGlzLCBtX2RlY29kaW5nUXVldWUgYW5kIG1f
ZGVjb2RlciBmcm9tIGJlaW5nIGRlbGV0ZWQgd2hpbGUgd2UgYXJlIGluIHRoZSBkZWNvZGluZyBs
b29wLgotICAgIGRlY29kaW5nUXVldWUoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBwcm90ZWN0ZWREZWNvZGluZ1F1ZXVlID0gbWFrZVJlZihkZWNvZGluZ1F1ZXVl
KCkpLCBwcm90ZWN0ZWRGcmFtZVJlcXVlc3RRdWV1ZSA9IG1ha2VSZWYoZnJhbWVSZXF1ZXN0UXVl
dWUoKSksIHByb3RlY3RlZERlY29kZXIgPSBtYWtlUmVmKCptX2RlY29kZXIpLCBzb3VyY2VVUkwg
PSBzb3VyY2VVUkwoKS5zdHJpbmcoKS5pc29sYXRlZENvcHkoKV0geworICAgIGRlY29kaW5nUXVl
dWUoKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm90ZWN0ZWRE
ZWNvZGluZ1F1ZXVlID0gbWFrZVJlZihkZWNvZGluZ1F1ZXVlKCkpLCBwcm90ZWN0ZWRGcmFtZVJl
cXVlc3RRdWV1ZSA9IG1ha2VSZWYoZnJhbWVSZXF1ZXN0UXVldWUoKSksIHByb3RlY3RlZERlY29k
ZXIgPSBtYWtlUmVmKCptX2RlY29kZXIpLCBzb3VyY2VVUkwgPSBzb3VyY2VVUkwoKS5zdHJpbmco
KS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIEltYWdlRnJhbWVSZXF1ZXN0
IGZyYW1lUmVxdWVzdDsKICAgICAgICAgU2Vjb25kcyBtaW5EZWNvZGluZ0R1cmF0aW9uID0gcHJv
dGVjdGVkVGhpcy0+ZnJhbWVEZWNvZGluZ0R1cmF0aW9uRm9yVGVzdGluZygpOwogCkBAIC0zNzEs
NyArMzc0LDcgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c3RhcnRBc3luY0RlY29kaW5nUXVldWUoKQog
ICAgICAgICAgICAgICAgIHNsZWVwKG1pbkRlY29kaW5nRHVyYXRpb24gLSAoTW9ub3RvbmljVGlt
ZTo6bm93KCkgLSBzdGFydGluZ1RpbWUpKTsKIAogICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBj
YWNoZWQgZnJhbWVzIG9uIHRoZSBjcmVhdGlvbiB0aHJlYWQgdG8gYXZvaWQgdXBkYXRpbmcgdGhl
IE1lbW9yeUNhY2hlIGZyb20gYSBkaWZmZXJlbnQgdGhyZWFkLgotICAgICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9ydW5Mb29wLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gcHJvdGVjdGVkVGhp
cy5jb3B5UmVmKCksIHByb3RlY3RlZFF1ZXVlID0gcHJvdGVjdGVkRGVjb2RpbmdRdWV1ZS5jb3B5
UmVmKCksIHByb3RlY3RlZERlY29kZXIgPSBwcm90ZWN0ZWREZWNvZGVyLmNvcHlSZWYoKSwgc291
cmNlVVJMID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpLCBuYXRpdmVJbWFnZSA9IFdURk1vdmUo
bmF0aXZlSW1hZ2UpLCBmcmFtZVJlcXVlc3RdICgpIG11dGFibGUgeworICAgICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpLCBw
cm90ZWN0ZWRRdWV1ZSA9IHByb3RlY3RlZERlY29kaW5nUXVldWUuY29weVJlZigpLCBwcm90ZWN0
ZWREZWNvZGVyID0gcHJvdGVjdGVkRGVjb2Rlci5jb3B5UmVmKCksIHNvdXJjZVVSTCA9IHNvdXJj
ZVVSTC5pc29sYXRlZENvcHkoKSwgbmF0aXZlSW1hZ2UgPSBXVEZNb3ZlKG5hdGl2ZUltYWdlKSwg
ZnJhbWVSZXF1ZXN0XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgcXVldWUg
bWF5IGhhdmUgYmVlbiBjbG9zZWQgaWYgYWZ0ZXIgd2UgZ290IHRoZSBmcmFtZSBOYXRpdmVJbWFn
ZSwgc3RvcEFzeW5jRGVjb2RpbmdRdWV1ZSgpIHdhcyBjYWxsZWQuCiAgICAgICAgICAgICAgICAg
aWYgKHByb3RlY3RlZFF1ZXVlLnB0cigpID09IHByb3RlY3RlZFRoaXMtPm1fZGVjb2RpbmdRdWV1
ZSAmJiBwcm90ZWN0ZWREZWNvZGVyLnB0cigpID09IHByb3RlY3RlZFRoaXMtPm1fZGVjb2Rlcikg
ewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQocHJvdGVjdGVkVGhpcy0+bV9mcmFtZUNvbW1p
dFF1ZXVlLmZpcnN0KCkgPT0gZnJhbWVSZXF1ZXN0KTsKQEAgLTM4MSw2ICszODQsOSBAQCB2b2lk
IEltYWdlU291cmNlOjpzdGFydEFzeW5jRGVjb2RpbmdRdWV1ZSgpCiAgICAgICAgICAgICAgICAg
ICAgIExPRyhJbWFnZXMsICJJbWFnZVNvdXJjZTo6JXMgLSAlcCAtIHVybDogJXMgW2ZyYW1lICVs
ZCB3aWxsIG5vdCBjYWNoZWRdIiwgX19GVU5DVElPTl9fLCBwcm90ZWN0ZWRUaGlzLnB0cigpLCBz
b3VyY2VVUkwudXRmOCgpLmRhdGEoKSwgZnJhbWVSZXF1ZXN0LmluZGV4KTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICB9CisKKyAgICAgICAgLy8gRW5zdXJlIGRlc3RydWN0aW9uIGhhcHBlbnMg
b24gY3JlYXRpb24gdGhyZWFkLgorICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcHJvdGVjdGVkUXVldWUgPSBXVEZNb3ZlKHBy
b3RlY3RlZERlY29kaW5nUXVldWUpLCBwcm90ZWN0ZWREZWNvZGVyID0gV1RGTW92ZShwcm90ZWN0
ZWREZWNvZGVyKV0gKCkgbXV0YWJsZSB7IH0pOwogICAgIH0pOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>