<?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>189335</bug_id>
          
          <creation_ts>2018-09-06 00:05:14 -0700</creation_ts>
          <short_desc>[RunLoopGeneric] OneShotTimer should not remain &quot;isActive&quot; after fired</short_desc>
          <delta_ts>2021-04-08 13:45:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>
          <dependson>189421</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>stephan.szabo</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yoshiaki.jitsukawa</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1457000</commentid>
    <comment_count>0</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2018-09-06 00:05:14 -0700</bug_when>
    <thetext>Unlike the other implementations, RunLoopGeneric&apos;s one-shot timer remains active when being fired(). 

It seems that this assertion expects the one-shot timer to be deactivated there.
https://github.com/WebKit/webkit/blob/master/Source/WebKit/UIProcess/BackgroundProcessResponsivenessTimer.cpp#L150

I think RunLoopGeneric should follow the other RunLoop implementations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457001</commentid>
    <comment_count>1</comment_count>
      <attachid>349004</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2018-09-06 00:14:27 -0700</bug_when>
    <thetext>Created attachment 349004
Adding EXPECT to the TestWTF RunLoop tests in order to check the timer status</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457415</commentid>
    <comment_count>2</comment_count>
      <attachid>349114</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2018-09-06 22:38:04 -0700</bug_when>
    <thetext>Created attachment 349114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457494</commentid>
    <comment_count>3</comment_count>
      <attachid>349114</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-07 09:00:14 -0700</bug_when>
    <thetext>Comment on attachment 349114
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457507</commentid>
    <comment_count>4</comment_count>
      <attachid>349114</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-07 09:27:32 -0700</bug_when>
    <thetext>Comment on attachment 349114
Patch

Clearing flags on attachment: 349114

Committed r235784: &lt;https://trac.webkit.org/changeset/235784&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457508</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-07 09:27:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457509</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-07 09:28:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/44226604&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457562</commentid>
    <comment_count>7</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2018-09-07 11:04:34 -0700</bug_when>
    <thetext>After this change https://trac.webkit.org/changeset/235784/webkit

we are seeing:

Failed

    TestWTF.WTF_RunLoop.ChainingOneShotTimer
        
        /Volumes/Data/slave/highsierra-release/build/Tools/TestWebKitAPI/Tests/WTF/RunLoop.cpp:120
        Value of: isActive()
          Actual: true
        Expected: false
        
        
        /Volumes/Data/slave/highsierra-release/build/Tools/TestWebKitAPI/Tests/WTF/RunLoop.cpp:120
        Value of: isActive()
          Actual: true
        Expected: false
        

    TestWTF.WTF_RunLoop.OneShotTimer
        
        /Volumes/Data/slave/highsierra-release/build/Tools/TestWebKitAPI/Tests/WTF/RunLoop.cpp:88
        Value of: isActive()
          Actual: true
        Expected: false


This is occurring on Mac wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457565</commentid>
    <comment_count>8</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2018-09-07 11:05:30 -0700</bug_when>
    <thetext>Failure Result:
https://build.webkit.org/builders/Apple%20Sierra%20Release%20WK1%20(Tests)/builds/12640

stdio:
https://build.webkit.org/builders/Apple%20Sierra%20Release%20WK1%20(Tests)/builds/12640/steps/run-api-tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457572</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-07 11:13:20 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 189421</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457578</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-07 11:17:06 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #9)
&gt; Re-opened since this is blocked by bug 189421

It seems that RunLoopCF does not agree to the fix in this patch.
Yoshiaki, can you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458058</commentid>
    <comment_count>11</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2018-09-09 17:13:00 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #10)
&gt; (In reply to WebKit Commit Bot from comment #9)
&gt; &gt; Re-opened since this is blocked by bug 189421
&gt; 
&gt; It seems that RunLoopCF does not agree to the fix in this patch.
&gt; Yoshiaki, can you take a look?

Sorry, my assumption was wrong.

https://developer.apple.com/documentation/corefoundation/1543110-cfrunlooptimerisvalid
says &quot;A non-repeating timer is automatically invalidated after it fires.&quot;

Let me fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458059</commentid>
    <comment_count>12</comment_count>
      <attachid>349292</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2018-09-09 18:45:39 -0700</bug_when>
    <thetext>Created attachment 349292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1458113</commentid>
    <comment_count>13</comment_count>
      <attachid>349292</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-09-10 02:59:46 -0700</bug_when>
    <thetext>Comment on attachment 349292
Patch

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

&gt; Source/WTF/wtf/generic/RunLoopGeneric.cpp:54
&gt;          if (!m_isRepeating)
&gt; -            return false;
&gt; +            deactivate();

Why do we deactivate the timer before `m_function()` is called?
Cocoa RunLoop says &quot;A non-repeating timer is automatically invalidated after it fires.&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738201</commentid>
    <comment_count>14</comment_count>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2021-03-10 13:25:45 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #13)
&gt; Comment on attachment 349292 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=349292&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/generic/RunLoopGeneric.cpp:54
&gt; &gt;          if (!m_isRepeating)
&gt; &gt; -            return false;
&gt; &gt; +            deactivate();
&gt; 
&gt; Why do we deactivate the timer before `m_function()` is called?
&gt; Cocoa RunLoop says &quot;A non-repeating timer is automatically invalidated after
&gt; it fires.&quot;.

I&apos;d just started looking at finishing up this patch, and was playing with the positioning based on this comment. However, I noticed that WTF_RunLoop.OneShotTimer failed if we move the deactivation until after the function is called as it appears to expect isActive() to be false at the time DerivedOneShotTimer&apos;s fired function is called.

Looking at some other cases, RunLoopCF seems to call CFRunLoopTimerInvalidate for the timer before calling the fired function as well if CFRunLoopTimerDoesRepeat is false which makes isActive() return false:

    m_timer = createTimer(interval, repeat, [] (CFRunLoopTimerRef cfTimer, void* context) {
        AutodrainedPool pool;

        auto timer = static_cast&lt;TimerBase*&gt;(context);
        if (!CFRunLoopTimerDoesRepeat(cfTimer))
            CFRunLoopTimerInvalidate(cfTimer);

        timer-&gt;fired();
    }, this);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745649</commentid>
    <comment_count>15</comment_count>
      <attachid>349292</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-03-31 09:27:34 -0700</bug_when>
    <thetext>Comment on attachment 349292
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/generic/RunLoopGeneric.cpp:54
&gt;&gt;&gt; +            deactivate();
&gt;&gt; 
&gt;&gt; Why do we deactivate the timer before `m_function()` is called?
&gt;&gt; Cocoa RunLoop says &quot;A non-repeating timer is automatically invalidated after it fires.&quot;.
&gt; 
&gt; I&apos;d just started looking at finishing up this patch, and was playing with the positioning based on this comment. However, I noticed that WTF_RunLoop.OneShotTimer failed if we move the deactivation until after the function is called as it appears to expect isActive() to be false at the time DerivedOneShotTimer&apos;s fired function is called.
&gt; 
&gt; Looking at some other cases, RunLoopCF seems to call CFRunLoopTimerInvalidate for the timer before calling the fired function as well if CFRunLoopTimerDoesRepeat is false which makes isActive() return false:
&gt; 
&gt;     m_timer = createTimer(interval, repeat, [] (CFRunLoopTimerRef cfTimer, void* context) {
&gt;         AutodrainedPool pool;
&gt; 
&gt;         auto timer = static_cast&lt;TimerBase*&gt;(context);
&gt;         if (!CFRunLoopTimerDoesRepeat(cfTimer))
&gt;             CFRunLoopTimerInvalidate(cfTimer);
&gt; 
&gt;         timer-&gt;fired();
&gt;     }, this);

My memory of this issue is that a lot of WebKit authors like to write code of the form &quot;if (!timer.isActive()) { scheduleTimer(); }&quot;. For code like that, it is essential for isActive() to become false before we invoke the timer fired callback. That way, if something happens inside the timer fired callback that triggers scheduling the timer again, we do it right, instead of believing, incorrectly, that the timer is already scheduled.

I think that&apos;s why I added the explicit call to CFRunLoopTimerInvalidate() for non-repeating timers. Apparently I missed the RunLoopGeneric case.

&gt; Source/WTF/wtf/generic/RunLoopGeneric.cpp:59
&gt; +        if (isActive())
&gt; +            updateReadyTime();

Why did the ready time update also move? For a non-repeating timer, it seems irrelevant. For a repeating timer, wouldn&apos;t I want to know the *next* scheduled repeat time, rather than the one that just happened?

&gt; Tools/TestWebKitAPI/Tests/WTF/RunLoop.cpp:88
&gt; +            RunLoop::current().dispatch([this] {

Delaying the action of this test until the next runloop iteration seems to skip testing the interesting case. The interesting case is whether isActive() is true or false *inside the timer callback function*, not at some later time.

Can you elaborate on why this test changed to compute its result on the next runloop iteration?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745691</commentid>
    <comment_count>16</comment_count>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2021-03-31 11:07:10 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #15)
&gt; Comment on attachment 349292 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=349292&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/generic/RunLoopGeneric.cpp:59
&gt; &gt; +        if (isActive())
&gt; &gt; +            updateReadyTime();
&gt; 
&gt; Why did the ready time update also move? For a non-repeating timer, it seems
&gt; irrelevant. For a repeating timer, wouldn&apos;t I want to know the *next*
&gt; scheduled repeat time, rather than the one that just happened?

Yes, that&apos;s true, and I&apos;m guessing that the time the function takes shouldn&apos;t be effectively added to the repeat time, so that should move back.

&gt; &gt; Tools/TestWebKitAPI/Tests/WTF/RunLoop.cpp:88
&gt; &gt; +            RunLoop::current().dispatch([this] {
&gt; 
&gt; Delaying the action of this test until the next runloop iteration seems to
&gt; skip testing the interesting case. The interesting case is whether
&gt; isActive() is true or false *inside the timer callback function*, not at
&gt; some later time.
&gt; 
&gt; Can you elaborate on why this test changed to compute its result on the next
&gt; runloop iteration?

I&apos;m not sure why it was done originally, but it does seem strange. I&apos;ll recheck since that test file has also seemingly changed since the original patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747029</commentid>
    <comment_count>17</comment_count>
      <attachid>425179</attachid>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2021-04-05 11:32:18 -0700</bug_when>
    <thetext>Created attachment 425179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747459</commentid>
    <comment_count>18</comment_count>
      <attachid>425286</attachid>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2021-04-06 09:21:48 -0700</bug_when>
    <thetext>Created attachment 425286
patch for recheck</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748453</commentid>
    <comment_count>19</comment_count>
      <attachid>425286</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-04-08 13:34:10 -0700</bug_when>
    <thetext>Comment on attachment 425286
patch for recheck

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748456</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-08 13:45:23 -0700</bug_when>
    <thetext>Committed r275674 (236310@main): &lt;https://commits.webkit.org/236310@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425286.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349004</attachid>
            <date>2018-09-06 00:14:27 -0700</date>
            <delta_ts>2018-09-06 22:38:00 -0700</delta_ts>
            <desc>Adding EXPECT to the TestWTF RunLoop tests in order to check the timer status</desc>
            <filename>add_test.diff</filename>
            <type>text/plain</type>
            <size>653</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAKaW5kZXggOTNiM2Q4YzI4
ZjMuLmQxZmMyYjY5ZGM4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9SdW5Mb29wLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29w
LmNwcApAQCAtODUsNiArODUsNyBAQCBURVNUKFdURl9SdW5Mb29wLCBPbmVTaG90VGltZXIpCiAK
ICAgICAgICAgdm9pZCBmaXJlZCgpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxT
RShpc0FjdGl2ZSgpKTsKICAgICAgICAgICAgIG1fdGVzdEZpbmlzaGVkID0gdHJ1ZTsKICAgICAg
ICAgICAgIHN0b3AoKTsKICAgICAgICAgfQpAQCAtMTE2LDYgKzExNyw3IEBAIFRFU1QoV1RGX1J1
bkxvb3AsIFJlcGVhdGluZ1RpbWVyKQogCiAgICAgICAgIHZvaWQgZmlyZWQoKQogICAgICAgICB7
CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShpc0FjdGl2ZSgpKTsKICAgICAgICAgICAgIGlmICgr
K21fY291bnQgPT0gMTApIHsKICAgICAgICAgICAgICAgICBtX3Rlc3RGaW5pc2hlZCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgc3RvcCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349114</attachid>
            <date>2018-09-06 22:38:04 -0700</date>
            <delta_ts>2018-09-09 18:45:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189335-20180907143728.patch</filename>
            <type>text/plain</type>
            <size>4290</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Nzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI0OTgzYWIzMWEwN2I4OTk3MzhhYzcx
ZjM1NWRkZjE0OTg2YTAwMTguLmQ0YjYxODZiMDA5MWVjYWRhYWZmYzk5Y2NjMzRmOTA0ZDU0ZDQ3
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMDktMDYgIFlvc2hpYWtpIEppdHN1a2F3YSAg
PHlvc2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBbUnVuTG9vcEdlbmVyaWNd
IE9uZVNob3RUaW1lciBzaG91bGQgYmUgaW5hY3RpdmUgd2hlbiBmaXJlZC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTMzNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL2dlbmVyaWMvUnVuTG9v
cEdlbmVyaWMuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxl
ZFRhc2s6OmZpcmVkKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2
ZSBjb25zdCk6CisKKyAgICAgICAgRGVhY3RpdmF0ZSBvbmUtc2hvdCB0aW1lciBiZWZvcmUgaW52
b2tpbmcgaXRzIGNhbGxiYWNrLiAKKwogMjAxOC0wOS0wNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGUgd2lkdGggb2YgYW4gZW1wdHkgb3IgbnVsbHB0
ciBUZXh0UnVuIHNob3VsZCBiZSB6ZXJvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nZW5l
cmljL1J1bkxvb3BHZW5lcmljLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdl
bmVyaWMuY3BwCmluZGV4IDc4NjkxOTk3OThjNTVkODIxNDYzZDVlZmMxODA2NTFkMWExMGQxNDYu
LmI0NWIxYjk1YmRmM2E5NTVmNDk1ZTEyMGI0MWEwZjgyNTZiMWZlN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCkBAIC01MCwxMiArNTAsMTMgQEAgcHVibGlj
OgogICAgICAgICBpZiAoIWlzQWN0aXZlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgbV9mdW5jdGlvbigpOwotCiAgICAgICAgIGlmICghbV9pc1JlcGVhdGluZykKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGRlYWN0aXZhdGUoKTsKIAotICAg
ICAgICB1cGRhdGVSZWFkeVRpbWUoKTsKKyAgICAgICAgbV9mdW5jdGlvbigpOworCisgICAgICAg
IGlmIChpc0FjdGl2ZSgpKQorICAgICAgICAgICAgdXBkYXRlUmVhZHlUaW1lKCk7CiAgICAgICAg
IHJldHVybiBpc0FjdGl2ZSgpOwogICAgIH0KIApAQCAtMjkwLDcgKzI5MSw3IEBAIGJvb2wgUnVu
TG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0CiAKIGJvb2wgUnVuTG9vcDo6VGltZXJC
YXNlOjppc0FjdGl2ZShjb25zdCBBYnN0cmFjdExvY2tlciYpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fc2NoZWR1bGVkVGFzazsKKyAgICByZXR1cm4gbV9zY2hlZHVsZWRUYXNrICYmIG1fc2NoZWR1
bGVkVGFzay0+aXNBY3RpdmUoKTsKIH0KIAogU2Vjb25kcyBSdW5Mb29wOjpUaW1lckJhc2U6OnNl
Y29uZHNVbnRpbEZpcmUoKSBjb25zdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDA1MWE0MDJkMDgwNzE2ZTZiOWRlM2FhZGRkZjVjYzRmODNkMTI0
MjYuLjc4OTgxMzRjNDIyNjM5YzEwMjdmZGY5YzQxZjAzMTc2MGQ5YWM2NTggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAxOC0wOS0wNiAgWW9zaGlha2kgSml0c3VrYXdhICA8eW9zaGlha2kuaml0c3VrYXdhQHNvbnku
Y29tPgorCisgICAgICAgIFtSdW5Mb29wR2VuZXJpY10gT25lU2hvdFRpbWVyIHNob3VsZCBiZSBp
bmFjdGl2ZSB3aGVuIGZpcmVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg5MzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCisgICAgICAgIEFkZCB0ZXN0IGV4cGVjdGF0aW9u
cyBhYm91dCB0aW1lcidzIGFjdGl2ZSBzdGF0ZS4KKworICAgICAgICBBZGQgYSBuZXcgdGVzdCB0
byByZXN0YXJ0IGEgb25lLXNob3QgdGltZXIgd2l0aGluCisgICAgICAgIGl0cyBmaXJlZCBjYWxs
YmFjay4KKwogMjAxOC0wOS0wNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtMRkNdIEFkZCBzdXBwb3J0IGZvciBtaW4vbWF4LWhlaWdodCBwZXJjZW50YWdlIHZh
bHVlcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3Au
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAKaW5kZXggOTNi
M2Q4YzI4ZjMyMDgxNzZjZDNiYzUyYjdmOWUzZDYxNGEwNzkxNy4uMzNjNjlmZmFlYTI2YjUzNmY2
OGI2ZTk2NWIzOWUzYjE0MzRiMWU3YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUnVuTG9vcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
UnVuTG9vcC5jcHAKQEAgLTg1LDYgKzg1LDcgQEAgVEVTVChXVEZfUnVuTG9vcCwgT25lU2hvdFRp
bWVyKQogCiAgICAgICAgIHZvaWQgZmlyZWQoKQogICAgICAgICB7CisgICAgICAgICAgICBFWFBF
Q1RfRkFMU0UoaXNBY3RpdmUoKSk7CiAgICAgICAgICAgICBtX3Rlc3RGaW5pc2hlZCA9IHRydWU7
CiAgICAgICAgICAgICBzdG9wKCk7CiAgICAgICAgIH0KQEAgLTEwMCw2ICsxMDEsNDQgQEAgVEVT
VChXVEZfUnVuTG9vcCwgT25lU2hvdFRpbWVyKQogICAgIH0KIH0KIAorVEVTVChXVEZfUnVuTG9v
cCwgQ2hhaW5pbmdPbmVTaG90VGltZXIpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5S
dW5Mb29wKCk7CisKKyAgICBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOworCisgICAgY2xhc3Mg
RGVyaXZlZFRpbWVyIDogcHVibGljIFJ1bkxvb3A6OlRpbWVyPERlcml2ZWRUaW1lcj4geworICAg
IHB1YmxpYzoKKyAgICAgICAgRGVyaXZlZFRpbWVyKGJvb2wmIHRlc3RGaW5pc2hlZCkKKyAgICAg
ICAgICAgIDogUnVuTG9vcDo6VGltZXI8RGVyaXZlZFRpbWVyPihSdW5Mb29wOjpjdXJyZW50KCks
IHRoaXMsICZEZXJpdmVkVGltZXI6OmZpcmVkKQorICAgICAgICAgICAgLCBtX3Rlc3RGaW5pc2hl
ZCh0ZXN0RmluaXNoZWQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZmly
ZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaXNBY3RpdmUoKSk7Cisg
ICAgICAgICAgICBpZiAoKyttX2NvdW50ICE9IDIpIHsKKyAgICAgICAgICAgICAgICBzdGFydE9u
ZVNob3QoMTAwX21zKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShpc0FjdGl2ZSgpKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV90ZXN0RmluaXNoZWQgPSB0
cnVlOworICAgICAgICAgICAgICAgIHN0b3AoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgdW5zaWduZWQgbV9jb3VudCB7IDAgfTsKKyAgICAgICAg
Ym9vbCYgbV90ZXN0RmluaXNoZWQ7CisgICAgfTsKKworICAgIHsKKyAgICAgICAgRGVyaXZlZFRp
bWVyIHRpbWVyKHRlc3RGaW5pc2hlZCk7CisgICAgICAgIHRpbWVyLnN0YXJ0T25lU2hvdCgxMDBf
bXMpOworICAgICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAgfQorfQorCiBURVNU
KFdURl9SdW5Mb29wLCBSZXBlYXRpbmdUaW1lcikKIHsKICAgICBSdW5Mb29wOjppbml0aWFsaXpl
TWFpblJ1bkxvb3AoKTsKQEAgLTExNiw2ICsxNTUsNyBAQCBURVNUKFdURl9SdW5Mb29wLCBSZXBl
YXRpbmdUaW1lcikKIAogICAgICAgICB2b2lkIGZpcmVkKCkKICAgICAgICAgeworICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoaXNBY3RpdmUoKSk7CiAgICAgICAgICAgICBpZiAoKyttX2NvdW50ID09
IDEwKSB7CiAgICAgICAgICAgICAgICAgbV90ZXN0RmluaXNoZWQgPSB0cnVlOwogICAgICAgICAg
ICAgICAgIHN0b3AoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349292</attachid>
            <date>2018-09-09 18:45:39 -0700</date>
            <delta_ts>2021-04-05 11:32:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189335-20180910104537.patch</filename>
            <type>text/plain</type>
            <size>3184</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Nzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI0OTgzYWIzMWEwN2I4OTk3MzhhYzcx
ZjM1NWRkZjE0OTg2YTAwMTguLjM2MGE5MTk0ZDdjMjJiYTNkNTI3YjVkMjc4Zjg2MzRmZmQzM2Fh
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMDktMDkgIFlvc2hpYWtpIEppdHN1a2F3YSAg
PHlvc2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBbUnVuTG9vcEdlbmVyaWNd
IE9uZVNob3RUaW1lciBzaG91bGQgbm90IHJlbWFpbiAiaXNBY3RpdmUiIGFmdGVyIGZpcmVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkzMzUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0MjI2NjA0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3Bw
OgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmZpcmVk
KToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSBjb25zdCk6CisK
KyAgICAgICAgRGVhY3RpdmF0ZSBvbmUtc2hvdCB0aW1lciBiZWZvcmUgaW52b2tpbmcgaXRzIGNh
bGxiYWNrLgorCiAyMDE4LTA5LTA1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFRoZSB3aWR0aCBvZiBhbiBlbXB0eSBvciBudWxscHRyIFRleHRSdW4gc2hv
dWxkIGJlIHplcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdl
bmVyaWMuY3BwIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAKaW5k
ZXggNzg2OTE5OTc5OGM1NWQ4MjE0NjNkNWVmYzE4MDY1MWQxYTEwZDE0Ni4uYjQ1YjFiOTViZGYz
YTk1NWY0OTVlMTIwYjQxYTBmODI1NmIxZmU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Z2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9S
dW5Mb29wR2VuZXJpYy5jcHAKQEAgLTUwLDEyICs1MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGlm
ICghaXNBY3RpdmUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBtX2Z1
bmN0aW9uKCk7Ci0KICAgICAgICAgaWYgKCFtX2lzUmVwZWF0aW5nKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgZGVhY3RpdmF0ZSgpOwogCi0gICAgICAgIHVwZGF0ZVJl
YWR5VGltZSgpOworICAgICAgICBtX2Z1bmN0aW9uKCk7CisKKyAgICAgICAgaWYgKGlzQWN0aXZl
KCkpCisgICAgICAgICAgICB1cGRhdGVSZWFkeVRpbWUoKTsKICAgICAgICAgcmV0dXJuIGlzQWN0
aXZlKCk7CiAgICAgfQogCkBAIC0yOTAsNyArMjkxLDcgQEAgYm9vbCBSdW5Mb29wOjpUaW1lckJh
c2U6OmlzQWN0aXZlKCkgY29uc3QKIAogYm9vbCBSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZl
KGNvbnN0IEFic3RyYWN0TG9ja2VyJikgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zY2hlZHVsZWRU
YXNrOworICAgIHJldHVybiBtX3NjaGVkdWxlZFRhc2sgJiYgbV9zY2hlZHVsZWRUYXNrLT5pc0Fj
dGl2ZSgpOwogfQogCiBTZWNvbmRzIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c2Vjb25kc1VudGlsRmly
ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggMDUxYTQwMmQwODA3MTZlNmI5ZGUzYWFkZGRmNWNjNGY4M2QxMjQyNi4uMDczYzNlMjQz
YjA0MGU1N2FiNGNhYzZlOTU2MGM1YmZiN2FmOWIyZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTA5LTA5ICBZ
b3NoaWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRzdWthd2FAc29ueS5jb20+CisKKyAgICAg
ICAgW1J1bkxvb3BHZW5lcmljXSBPbmVTaG90VGltZXIgc2hvdWxkIG5vdCByZW1haW4gImlzQWN0
aXZlIiBhZnRlciBmaXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg5MzM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDIyNjYwND4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgIEFkZCBhbiBleHBlY3RhdGlvbiB0byB2ZXJpZnkgdGhhdCBvbmUtc2hvdCB0aW1l
ciBiZWNvbWVzIGluYWN0aXZlIGFmdGVyIGl0IGdldHMgZmlyZWQuCisKIDIwMTgtMDktMDYgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBBZGQgc3VwcG9y
dCBmb3IgbWluL21heC1oZWlnaHQgcGVyY2VudGFnZSB2YWx1ZXMuCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwCmluZGV4IDkzYjNkOGMyOGYzMjA4MTc2Y2QzYmM1MmI3
ZjllM2Q2MTRhMDc5MTcuLjFlNjQyZWNmMzg5OWFjYzUxMjIwMjk3MWNhOTU1MGY3ZmJhYTI3NTQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwCkBAIC04NSw4ICs4
NSwxMSBAQCBURVNUKFdURl9SdW5Mb29wLCBPbmVTaG90VGltZXIpCiAKICAgICAgICAgdm9pZCBm
aXJlZCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fdGVzdEZpbmlzaGVkID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHN0b3AoKTsKKyAgICAgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChbdGhpc10geworICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShpc0FjdGl2ZSgpKTsKKyAg
ICAgICAgICAgICAgICBzdG9wKCk7CisgICAgICAgICAgICAgICAgbV90ZXN0RmluaXNoZWQgPSB0
cnVlOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425179</attachid>
            <date>2021-04-05 11:32:18 -0700</date>
            <delta_ts>2021-04-06 09:21:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>189335-2.diff</filename>
            <type>text/plain</type>
            <size>1532</size>
            <attacher name="Stephan Szabo">stephan.szabo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggN2FlNjM2OThkODViLi43N2E3ZjhhOTg4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMDQtMDUgIFN0ZXBoYW4gU3phYm8gIDxzdGVwaGFuLnN6YWJvQHNvbnkuY29tPgorCisgICAg
ICAgIFtSdW5Mb29wR2VuZXJpY10gT25lU2hvdFRpbWVyIHNob3VsZCBub3QgcmVtYWluICJpc0Fj
dGl2ZSIgYWZ0ZXIgZmlyZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4OTMzNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDQyMjY2MDQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvZ2VuZXJp
Yy9SdW5Mb29wR2VuZXJpYy5jcHA6CisKKyAgICAgICAgRGVhY3RpdmF0ZSBvbmUtc2hvdCB0aW1l
ciBiZWZvcmUgaW52b2tpbmcgaXRzIGNhbGxiYWNrLgorCiAyMDIxLTAzLTMxICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBFYXNlIGV4cGVyaW1lbnRhdGlvbiBieSBl
bmFibGluZyA8bW9kZWw+IGlmIFNFUEFSQVRFRF9NT0RFTCBpcyBiZWluZyB1c2VkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCmluZGV4IDljNDY3NDIwNWQ0Yy4uMTJj
OGE5ZDMxZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5l
cmljLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcApA
QCAtNTAsMTIgKzUwLDE0IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFpc0FjdGl2ZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1fZnVuY3Rpb24oKTsKLQogICAgICAg
ICBpZiAoIW1faXNSZXBlYXRpbmcpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBkZWFjdGl2YXRlKCk7CisKKyAgICAgICAgaWYgKGlzQWN0aXZlKCkpCisgICAgICAgICAg
ICB1cGRhdGVSZWFkeVRpbWUoKTsKKworICAgICAgICBtX2Z1bmN0aW9uKCk7CiAKLSAgICAgICAg
dXBkYXRlUmVhZHlUaW1lKCk7CiAgICAgICAgIHJldHVybiBpc0FjdGl2ZSgpOwogICAgIH0KIApA
QCAtMjk2LDcgKzI5OCw3IEBAIGJvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSgpIGNv
bnN0CiAKIGJvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZShjb25zdCBBYnN0cmFjdExv
Y2tlciYpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2NoZWR1bGVkVGFzazsKKyAgICByZXR1cm4g
bV9zY2hlZHVsZWRUYXNrICYmIG1fc2NoZWR1bGVkVGFzay0+aXNBY3RpdmUoKTsKIH0KIAogU2Vj
b25kcyBSdW5Mb29wOjpUaW1lckJhc2U6OnNlY29uZHNVbnRpbEZpcmUoKSBjb25zdAo=
</data>
<flag name="commit-queue"
          id="445128"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425286</attachid>
            <date>2021-04-06 09:21:48 -0700</date>
            <delta_ts>2021-04-08 13:45:25 -0700</delta_ts>
            <desc>patch for recheck</desc>
            <filename>189335-2.diff</filename>
            <type>text/plain</type>
            <size>1532</size>
            <attacher name="Stephan Szabo">stephan.szabo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggN2FlNjM2OThkODViLi43N2E3ZjhhOTg4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMDQtMDUgIFN0ZXBoYW4gU3phYm8gIDxzdGVwaGFuLnN6YWJvQHNvbnkuY29tPgorCisgICAg
ICAgIFtSdW5Mb29wR2VuZXJpY10gT25lU2hvdFRpbWVyIHNob3VsZCBub3QgcmVtYWluICJpc0Fj
dGl2ZSIgYWZ0ZXIgZmlyZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4OTMzNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDQyMjY2MDQ+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvZ2VuZXJp
Yy9SdW5Mb29wR2VuZXJpYy5jcHA6CisKKyAgICAgICAgRGVhY3RpdmF0ZSBvbmUtc2hvdCB0aW1l
ciBiZWZvcmUgaW52b2tpbmcgaXRzIGNhbGxiYWNrLgorCiAyMDIxLTAzLTMxICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBFYXNlIGV4cGVyaW1lbnRhdGlvbiBieSBl
bmFibGluZyA8bW9kZWw+IGlmIFNFUEFSQVRFRF9NT0RFTCBpcyBiZWluZyB1c2VkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCmluZGV4IDljNDY3NDIwNWQ0Yy4uMTJj
OGE5ZDMxZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5l
cmljLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcApA
QCAtNTAsMTIgKzUwLDE0IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFpc0FjdGl2ZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG1fZnVuY3Rpb24oKTsKLQogICAgICAg
ICBpZiAoIW1faXNSZXBlYXRpbmcpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBkZWFjdGl2YXRlKCk7CisKKyAgICAgICAgaWYgKGlzQWN0aXZlKCkpCisgICAgICAgICAg
ICB1cGRhdGVSZWFkeVRpbWUoKTsKKworICAgICAgICBtX2Z1bmN0aW9uKCk7CiAKLSAgICAgICAg
dXBkYXRlUmVhZHlUaW1lKCk7CiAgICAgICAgIHJldHVybiBpc0FjdGl2ZSgpOwogICAgIH0KIApA
QCAtMjk2LDcgKzI5OCw3IEBAIGJvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSgpIGNv
bnN0CiAKIGJvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZShjb25zdCBBYnN0cmFjdExv
Y2tlciYpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2NoZWR1bGVkVGFzazsKKyAgICByZXR1cm4g
bV9zY2hlZHVsZWRUYXNrICYmIG1fc2NoZWR1bGVkVGFzay0+aXNBY3RpdmUoKTsKIH0KIAogU2Vj
b25kcyBSdW5Mb29wOjpUaW1lckJhc2U6OnNlY29uZHNVbnRpbEZpcmUoKSBjb25zdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>