<?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>203046</bug_id>
          
          <creation_ts>2019-10-16 11:44:22 -0700</creation_ts>
          <short_desc>[iOS] &quot;Unexpectedly Resumed&quot; process assertion may cause us to get terminated</short_desc>
          <delta_ts>2019-10-22 09:53:01 -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>WebKit2</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=203254</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1580607</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-16 11:44:22 -0700</bug_when>
    <thetext>&quot;Unexpectedly Resumed&quot; process assertion may cause us to get terminated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580608</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-16 11:44:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/56179592&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580610</commentid>
    <comment_count>2</comment_count>
      <attachid>381091</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-16 11:47:37 -0700</bug_when>
    <thetext>Created attachment 381091
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580662</commentid>
    <comment_count>3</comment_count>
      <attachid>381091</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-10-16 13:49:42 -0700</bug_when>
    <thetext>Comment on attachment 381091
Patch

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

&gt; Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:331
&gt; +    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), releaseAssertion);

I don&apos;t think this approach is thread-safe. I guess the use of &apos;this&apos; is thread-safe because WebProocess is a global singleton. But I don&apos;t see anything that guarantees that loads and stores of m_unexpectedlyResumedUIAssertion will be coherent across threads.

I think you need a lock around uses of m_unexpectedlyResumedUIAssertion. Or maybe it would work to make m_unexpectedlyResumedUIAssertion std::atomic&lt;RetainPtr&lt;BKSProcessAssertion&gt;&gt;. (I&apos;ve never tried that before.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580680</commentid>
    <comment_count>4</comment_count>
      <attachid>381109</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-16 14:35:29 -0700</bug_when>
    <thetext>Created attachment 381109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581273</commentid>
    <comment_count>5</comment_count>
      <attachid>381109</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-17 20:19:19 -0700</bug_when>
    <thetext>Comment on attachment 381109
Patch

I updated the patch based on Geoff&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581534</commentid>
    <comment_count>6</comment_count>
      <attachid>381109</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-10-18 14:38:07 -0700</bug_when>
    <thetext>Comment on attachment 381109
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581573</commentid>
    <comment_count>7</comment_count>
      <attachid>381109</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-18 15:45:49 -0700</bug_when>
    <thetext>Comment on attachment 381109
Patch

Clearing flags on attachment: 381109

Committed r251304: &lt;https://trac.webkit.org/changeset/251304&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581574</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-18 15:45:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581877</commentid>
    <comment_count>9</comment_count>
      <attachid>381109</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-10-21 10:32:14 -0700</bug_when>
    <thetext>Comment on attachment 381109
Patch

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

&gt; Source/WebKit/WebProcess/WebProcess.h:540
&gt; +    Lock m_unexpectedlyResumedUIAssertionLock;
&gt; +    RetainPtr&lt;BKSProcessAssertion&gt; m_unexpectedlyResumedUIAssertion;

I think a better name for this condition would be &quot;resumedBeforeUIProcess&quot;. It&apos;s not really unexpected. It happens all the time. Sometimes it happens because we&apos;re playing media in the background, and in that case, only the WebContent process gets a resume message. Sometimes it happens because we&apos;re in the foreground, and the WebContent process wins the race to resumption vs the UI process. There&apos;s no way for us to know the difference between these two cases, so we always wake up the UI process (and network process by extension) when we wake up first.

&gt; Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:333
&gt; +    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), releaseAssertion);

I think this code is either a no-op or a bug.

In the case where the UI process responds right away, it sends us a resume message and we clear m_unexpectedlyResumedUIAssertion. So, it&apos;s a no-op.

In the case where the UI process takes longer than five seconds to respond, and the RunninBoard invalidation timeout is less than five seconds, RunningBoard sends us an invalidation message. So, it&apos;s a no-op.

In the case where the UI process takes longer than five seconds to respond, and the RunninBoard invalidation timeout is more than five seconds, we give up on resuming, even though we have. more time available. So, it&apos;s a bug. (Although a minor bug, which probably never happens in practice.)

So, I think the code would be a little clearer if we removed this timeout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581884</commentid>
    <comment_count>10</comment_count>
      <attachid>381109</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-10-21 10:41:37 -0700</bug_when>
    <thetext>Comment on attachment 381109
Patch

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

&gt; Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:313
&gt;      if (!m_processIsSuspended)
&gt;          return;
&gt;  

If we just trust ProcessTaskStateObserver::TaskState, we can avoid the race in checking m_processIsSuspended, and unconditionally take an assertion and signal the UI process to wake up. (This what often happens in practice now anyway.)

Then, if the UI process responds with a message to indicate it received ProcessWasUnexpectedlyUnsuspended, we can clear our assertion in the implementation of that message. In theory, we always must hold our assertion until we receive this response; otherwise, we have not woken up yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582411</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-22 09:53:01 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #10)
&gt; Comment on attachment 381109 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=381109&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:313
&gt; &gt;      if (!m_processIsSuspended)
&gt; &gt;          return;
&gt; &gt;  
&gt; 
&gt; If we just trust ProcessTaskStateObserver::TaskState, we can avoid the race
&gt; in checking m_processIsSuspended, and unconditionally take an assertion and
&gt; signal the UI process to wake up. (This what often happens in practice now
&gt; anyway.)
&gt; 
&gt; Then, if the UI process responds with a message to indicate it received
&gt; ProcessWasUnexpectedlyUnsuspended, we can clear our assertion in the
&gt; implementation of that message. In theory, we always must hold our assertion
&gt; until we receive this response; otherwise, we have not woken up yet.

Implementing suggestions via:
https://bugs.webkit.org/show_bug.cgi?id=203254</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381091</attachid>
            <date>2019-10-16 11:47:37 -0700</date>
            <delta_ts>2019-10-16 14:35:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203046-20191016114736.patch</filename>
            <type>text/plain</type>
            <size>5503</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhZmI4ZWVmODQ0ZTE1NDg1
NGZmZWIzY2EwZGRmZTVkMTJhMTZjMTIuLmFiODE1MTVmZjFmODc3NTgxMDhhNjdmMDAwMjAyMWM1
MGE0NDBhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTktMTAtMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSAiVW5leHBlY3RlZGx5IFJl
c3VtZWQiIHByb2Nlc3MgYXNzZXJ0aW9uIG1heSBjYXVzZSB1cyB0byBnZXQgdGVybWluYXRlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMDQ2Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjE3OTU5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGZvbGxv
d2luZyB0byBhdm9pZCBnZXR0aW5nIHRlcm1pbmF0ZWQ6CisgICAgICAgIDEuIFNjaGVkdWxlIHRo
ZSB0YXNrIHRvIHJlbGVhc2UgdGhlIGFzc2VydGlvbiBvbiBhIGJhY2tncm91bmQgdGhyZWFkIGlu
c3RlYWQgb2YKKyAgICAgICAgICAgdGhlIG1haW4gdGhyZWFkIHNvIHRoYXQgd2UgZW5kIHVwIHJl
bGVhc2luZyB0aGUgdGFzayBldmVuIGlmIHRoZSBtYWluIHRocmVhZAorICAgICAgICAgICBpcyBz
b21laG93IGh1bmcuCisgICAgICAgIDIuIEFkZCBhbiBpbnZhbGlkYXRpb24gaGFuZGxlciB0byB0
aGUgcHJvY2VzcyBhc3NlcnRpb24gd2hpY2ggcmVsZWFzZXMgdGhlIGFzc2VydGlvbgorICAgICAg
ICAgICB1cG9uIGV4cGlyYXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJv
Y2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwcm9jZXNzRGlkUmVz
dW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6cHJvY2Vzc1Rhc2tTdGF0ZURpZENoYW5nZSk6CisKIDIwMTktMTAtMTUgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0g
QWRkIHVzZXIgbWVzc2FnZXMgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IGJiNDkwZGY5ZjY2ZjMxYmU0MjA2
OWNiZGFjN2RhNDFjMmQ2MDkzZDEuLjg4YWExY2U1ZTljZGJjZGQxNTI4ZjQ4ODQ4Y2I3NjU1YTg4
OWI3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQcm94eUNvY29hLm1tCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnByb2Nlc3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCgpCiB7CiAgICAgaWYgKG1fdGhy
b3R0bGVyLnNob3VsZEJlUnVubmFibGUoKSkgewogICAgICAgICAvLyBUaGUgcHJvY2VzcyBiZWNv
bWluZyB1bnN1c3BlbmRlZCB3YXMgbm90IHVuZXhwZWN0ZWQ7IGl0IGxpa2VseSB3YXMgbm90aWZp
ZWQgb2YgaXRzIHJ1bm5pbmcgc3RhdGUKLSAgICAgICAgLy8gYmVmb3JlIHJlY2VpdmluZyBhIHBy
b2NzZXNzRGlkUmVzdW1lKCkgbWVzc2FnZSBmcm9tIHRoZSBVSVByb2Nlc3MuCisgICAgICAgIC8v
IGJlZm9yZSByZWNlaXZpbmcgYSBwcm9jZXNzRGlkUmVzdW1lKCkgbWVzc2FnZSBmcm9tIHRoZSBV
SVByb2Nlc3MuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAppbmRleCBjNjZjODA1ZDYxZTRjMjUxNmUyNjhhM2VmOTRhZmQ4OGRi
NjhlNzU4Li42ZGYzY2FiYjEyODQ5MmE1NTgzMWNiNGU4NDVkY2E5YjU1ZWRjZDRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNTQ3LDYgKzE1NDcsNyBAQCB2
b2lkIFdlYlByb2Nlc3M6OnByb2Nlc3NEaWRSZXN1bWUoKQogICAgIG1fd2ViU1FMaXRlRGF0YWJh
c2VUcmFja2VyLnNldElzU3VzcGVuZGVkKGZhbHNlKTsKICAgICBTUUxpdGVEYXRhYmFzZTo6c2V0
SXNEYXRhYmFzZU9wZW5pbmdGb3JiaWRkZW4oZmFsc2UpOwogICAgIGFjY2Vzc2liaWxpdHlQcm9j
ZXNzU3VzcGVuZGVkTm90aWZpY2F0aW9uKGZhbHNlKTsKKyAgICBtX3VuZXhwZWN0ZWRseVJlc3Vt
ZWRVSUFzc2VydGlvbiA9IG51bGxwdHI7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGRkNjBlOGQ4MWUyZmFlMTI2ZjA0
NTk1N2MxY2JjNmUyMzllZGE5OGIuLjYzODk1NmUwN2NhMTM0OGUxZTQxNGU1YWUxOTNlNjRiNjU4
YzUzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNjUsNiArNjUs
NyBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJQcm9jZXNzVGFza1N0
YXRlT2JzZXJ2ZXIuaCIKK09CSkNfQ0xBU1MgQktTUHJvY2Vzc0Fzc2VydGlvbjsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oV0FZTEFORCkgJiYgVVNFKFdQRV9SRU5ERVJFUikKQEAgLTUzNSw2ICs1
MzYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgV2ViU1FMaXRl
RGF0YWJhc2VUcmFja2VyIG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyOwogICAgIFJlZjxQcm9j
ZXNzVGFza1N0YXRlT2JzZXJ2ZXI+IG1fdGFza1N0YXRlT2JzZXJ2ZXI7CisgICAgUmV0YWluUHRy
PEJLU1Byb2Nlc3NBc3NlcnRpb24+IG1fdW5leHBlY3RlZGx5UmVzdW1lZFVJQXNzZXJ0aW9uOwog
I2VuZGlmCiAKICAgICBlbnVtIFBhZ2VNYXJraW5nTGF5ZXJzQXNWb2xhdGlsZUNvdW50ZXJUeXBl
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCmluZGV4IDIwYzAxNjQ4ZTI2YTBjODg4NDllOGIyOTg3ODk2MTQ4OGJkZjE3YTcuLjRk
ZTIxZThhOWM1NWIyODQ5M2Q1YzA0NzgwYWMwYTA4MDkyYjI5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMzExLDEyICsz
MTEsMjQgQEAgdm9pZCBXZWJQcm9jZXNzOjpwcm9jZXNzVGFza1N0YXRlRGlkQ2hhbmdlKFByb2Nl
c3NUYXNrU3RhdGVPYnNlcnZlcjo6VGFza1N0YXRlIHQKICAgICBpZiAoIW1fcHJvY2Vzc0lzU3Vz
cGVuZGVkKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV91bmV4cGVjdGVkbHlSZXN1bWVk
VUlBc3NlcnRpb24pCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIFdlIHdlcmUgYXdha2VuZWQg
ZnJvbSBzdXNwZW5zaW9uIHVuZXhwZWN0ZWRseS4gTm90aWZ5IHRoZSBXZWJQcm9jZXNzUHJveHks
IGJ1dCB0YWtlIGEgcHJvY2VzcyBhc3NlcnRpb24gb24gb3VyIHBhcmVudCBQSUQKICAgICAvLyB0
byBlbnN1cmUgdGhhdCBpdCB0b28gaXMgYXdha2VuZWQuCisgICAgbV91bmV4cGVjdGVkbHlSZXN1
bWVkVUlBc3NlcnRpb24gPSBhZG9wdE5TKFtbQktTUHJvY2Vzc0Fzc2VydGlvbiBhbGxvY10gaW5p
dFdpdGhQSUQ6cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3RlUHJvY2Vzc0lEKCkgZmxh
Z3M6QktTUHJvY2Vzc0Fzc2VydGlvblByZXZlbnRUYXNrU3VzcGVuZCByZWFzb246QktTUHJvY2Vz
c0Fzc2VydGlvblJlYXNvbkZpbmlzaFRhc2sgbmFtZTpAIlVuZXhwZWN0ZWRseSByZXN1bWVkIiB3
aXRoSGFuZGxlcjpuaWxdKTsKKworICAgIGF1dG8gcmVsZWFzZUFzc2VydGlvbiA9IFt0aGlzXSB7
CisgICAgICAgIGlmICghbV91bmV4cGVjdGVkbHlSZXN1bWVkVUlBc3NlcnRpb24pCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgW21fdW5leHBlY3RlZGx5UmVzdW1lZFVJQXNzZXJ0aW9u
IGludmFsaWRhdGVdOworICAgICAgICBtX3VuZXhwZWN0ZWRseVJlc3VtZWRVSUFzc2VydGlvbiA9
IG51bGxwdHI7CisgICAgfTsKIAotICAgIGF1dG8gdWlQcm9jZXNzQXNzZXJ0aW9uID0gYWRvcHRO
UyhbW0JLU1Byb2Nlc3NBc3NlcnRpb24gYWxsb2NdIGluaXRXaXRoUElEOnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpIGZsYWdzOkJLU1Byb2Nlc3NBc3NlcnRpb25Q
cmV2ZW50VGFza1N1c3BlbmQgcmVhc29uOkJLU1Byb2Nlc3NBc3NlcnRpb25SZWFzb25GaW5pc2hU
YXNrIG5hbWU6QCJVbmV4cGVjdGVkbHkgcmVzdW1lZCIgd2l0aEhhbmRsZXI6bmlsXSk7CisgICAg
bV91bmV4cGVjdGVkbHlSZXN1bWVkVUlBc3NlcnRpb24uZ2V0KCkuaW52YWxpZGF0aW9uSGFuZGxl
ciA9IHJlbGVhc2VBc3NlcnRpb247CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpQcm9jZXNzV2FzVW5leHBlY3RlZGx5VW5zdXNw
ZW5kZWQoKSwgMCk7Ci0gICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9U
SU1FX05PVywgKGludDY0X3QpKDUgKiBOU0VDX1BFUl9TRUMpKSwgZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgW2Fzc2VydGlvbiA9IFdURk1vdmUodWlQcm9jZXNzQXNzZXJ0aW9uKV0geyBbYXNz
ZXJ0aW9uIGludmFsaWRhdGVdOyB9KTsKKyAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1l
KERJU1BBVENIX1RJTUVfTk9XLCAoaW50NjRfdCkoNSAqIE5TRUNfUEVSX1NFQykpLCBkaXNwYXRj
aF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBy
ZWxlYXNlQXNzZXJ0aW9uKTsKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381109</attachid>
            <date>2019-10-16 14:35:29 -0700</date>
            <delta_ts>2019-10-18 15:45:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203046-20191016143528.patch</filename>
            <type>text/plain</type>
            <size>5812</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRmZmNlYmJlMjMyNzQzNzEy
YzhjYjkzMmM5YjE3MDdmNWFhMjM2NGYuLmZkMDZmOTMzZWQ0M2Y3NmE1MzgyMDExZTc4ODMyMWU4
ODdjODc5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTktMTAtMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSAiVW5leHBlY3RlZGx5IFJl
c3VtZWQiIHByb2Nlc3MgYXNzZXJ0aW9uIG1heSBjYXVzZSB1cyB0byBnZXQgdGVybWluYXRlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMDQ2Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjE3OTU5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGZvbGxv
d2luZyB0byBhdm9pZCBnZXR0aW5nIHRlcm1pbmF0ZWQ6CisgICAgICAgIDEuIFNjaGVkdWxlIHRo
ZSB0YXNrIHRvIHJlbGVhc2UgdGhlIGFzc2VydGlvbiBvbiBhIGJhY2tncm91bmQgdGhyZWFkIGlu
c3RlYWQgb2YKKyAgICAgICAgICAgdGhlIG1haW4gdGhyZWFkIHNvIHRoYXQgd2UgZW5kIHVwIHJl
bGVhc2luZyB0aGUgdGFzayBldmVuIGlmIHRoZSBtYWluIHRocmVhZAorICAgICAgICAgICBpcyBz
b21laG93IGh1bmcuCisgICAgICAgIDIuIEFkZCBhbiBpbnZhbGlkYXRpb24gaGFuZGxlciB0byB0
aGUgcHJvY2VzcyBhc3NlcnRpb24gd2hpY2ggcmVsZWFzZXMgdGhlIGFzc2VydGlvbgorICAgICAg
ICAgICB1cG9uIGV4cGlyYXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJv
Y2Vzc1dhc1VuZXhwZWN0ZWRseVVuc3VzcGVuZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwcm9jZXNzRGlkUmVz
dW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6cHJvY2Vzc1Rhc2tTdGF0ZURpZENoYW5nZSk6CisKIDIwMTktMTAtMTYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBIYW5kbGUgYmFjay9mb3J3
YXJkIGNhY2hlIGVudHJ5IGV4cGlyYXRpb24gaW4gdGhlIFVJUHJvY2VzcyBpbnN0ZWFkIG9mIHRo
ZSBXZWJQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IGJiNDkwZGY5ZjY2ZjMxYmU0MjA2OWNiZGFjN2Rh
NDFjMmQ2MDkzZDEuLjg4YWExY2U1ZTljZGJjZGQxNTI4ZjQ4ODQ4Y2I3NjU1YTg4OWI3YjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94
eUNvY29hLm1tCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnByb2Nl
c3NXYXNVbmV4cGVjdGVkbHlVbnN1c3BlbmRlZCgpCiB7CiAgICAgaWYgKG1fdGhyb3R0bGVyLnNo
b3VsZEJlUnVubmFibGUoKSkgewogICAgICAgICAvLyBUaGUgcHJvY2VzcyBiZWNvbWluZyB1bnN1
c3BlbmRlZCB3YXMgbm90IHVuZXhwZWN0ZWQ7IGl0IGxpa2VseSB3YXMgbm90aWZpZWQgb2YgaXRz
IHJ1bm5pbmcgc3RhdGUKLSAgICAgICAgLy8gYmVmb3JlIHJlY2VpdmluZyBhIHByb2NzZXNzRGlk
UmVzdW1lKCkgbWVzc2FnZSBmcm9tIHRoZSBVSVByb2Nlc3MuCisgICAgICAgIC8vIGJlZm9yZSBy
ZWNlaXZpbmcgYSBwcm9jZXNzRGlkUmVzdW1lKCkgbWVzc2FnZSBmcm9tIHRoZSBVSVByb2Nlc3Mu
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCBjNjZjODA1ZDYxZTRjMjUxNmUyNjhhM2VmOTRhZmQ4OGRiNjhlNzU4Li4w
MzNiMGU1ZGYzNTAzMGUwMzg5ZDE5YWEyZGM4NDg4Y2I5NzM5NjBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNTQ3LDYgKzE1NDcsMTAgQEAgdm9pZCBXZWJQ
cm9jZXNzOjpwcm9jZXNzRGlkUmVzdW1lKCkKICAgICBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tl
ci5zZXRJc1N1c3BlbmRlZChmYWxzZSk7CiAgICAgU1FMaXRlRGF0YWJhc2U6OnNldElzRGF0YWJh
c2VPcGVuaW5nRm9yYmlkZGVuKGZhbHNlKTsKICAgICBhY2Nlc3NpYmlsaXR5UHJvY2Vzc1N1c3Bl
bmRlZE5vdGlmaWNhdGlvbihmYWxzZSk7CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGhvbGRl
cihtX3VuZXhwZWN0ZWRseVJlc3VtZWRVSUFzc2VydGlvbkxvY2spOworICAgICAgICBtX3VuZXhw
ZWN0ZWRseVJlc3VtZWRVSUFzc2VydGlvbiA9IG51bGxwdHI7CisgICAgfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBk
ZDYwZThkODFlMmZhZTEyNmYwNDU5NTdjMWNiYzZlMjM5ZWRhOThiLi5jNTNjOWNhMDc0N2NkZDMw
NjdmYmQ1MWZiZWRmZTcxZDljZmZkYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKQEAgLTY1LDYgKzY1LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW5j
bHVkZSAiUHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyLmgiCitPQkpDX0NMQVNTIEJLU1Byb2Nlc3NB
c3NlcnRpb247CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdBWUxBTkQpICYmIFVTRShXUEVfUkVO
REVSRVIpCkBAIC01MzUsNiArNTM2LDggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0ZURhdGFiYXNlVHJh
Y2tlcjsKICAgICBSZWY8UHJvY2Vzc1Rhc2tTdGF0ZU9ic2VydmVyPiBtX3Rhc2tTdGF0ZU9ic2Vy
dmVyOworICAgIExvY2sgbV91bmV4cGVjdGVkbHlSZXN1bWVkVUlBc3NlcnRpb25Mb2NrOworICAg
IFJldGFpblB0cjxCS1NQcm9jZXNzQXNzZXJ0aW9uPiBtX3VuZXhwZWN0ZWRseVJlc3VtZWRVSUFz
c2VydGlvbjsKICNlbmRpZgogCiAgICAgZW51bSBQYWdlTWFya2luZ0xheWVyc0FzVm9sYXRpbGVD
b3VudGVyVHlwZSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dl
YlByb2Nlc3NDb2NvYS5tbQppbmRleCAyMGMwMTY0OGUyNmEwYzg4ODQ5ZThiMjk4Nzg5NjE0ODhi
ZGYxN2E3Li41ZDFhMzAyM2VlMDFkMDQzYzliOWZlYzA2ZGU5OWE1YzMwMzE1MzQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAg
LTMxMSwxMiArMzExLDI2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cHJvY2Vzc1Rhc2tTdGF0ZURpZENo
YW5nZShQcm9jZXNzVGFza1N0YXRlT2JzZXJ2ZXI6OlRhc2tTdGF0ZSB0CiAgICAgaWYgKCFtX3By
b2Nlc3NJc1N1c3BlbmRlZCkKICAgICAgICAgcmV0dXJuOwogCisgICAgTG9ja0hvbGRlciBob2xk
ZXIobV91bmV4cGVjdGVkbHlSZXN1bWVkVUlBc3NlcnRpb25Mb2NrKTsKKyAgICBpZiAobV91bmV4
cGVjdGVkbHlSZXN1bWVkVUlBc3NlcnRpb24pCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIFdl
IHdlcmUgYXdha2VuZWQgZnJvbSBzdXNwZW5zaW9uIHVuZXhwZWN0ZWRseS4gTm90aWZ5IHRoZSBX
ZWJQcm9jZXNzUHJveHksIGJ1dCB0YWtlIGEgcHJvY2VzcyBhc3NlcnRpb24gb24gb3VyIHBhcmVu
dCBQSUQKICAgICAvLyB0byBlbnN1cmUgdGhhdCBpdCB0b28gaXMgYXdha2VuZWQuCisgICAgbV91
bmV4cGVjdGVkbHlSZXN1bWVkVUlBc3NlcnRpb24gPSBhZG9wdE5TKFtbQktTUHJvY2Vzc0Fzc2Vy
dGlvbiBhbGxvY10gaW5pdFdpdGhQSUQ6cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+cmVtb3Rl
UHJvY2Vzc0lEKCkgZmxhZ3M6QktTUHJvY2Vzc0Fzc2VydGlvblByZXZlbnRUYXNrU3VzcGVuZCBy
ZWFzb246QktTUHJvY2Vzc0Fzc2VydGlvblJlYXNvbkZpbmlzaFRhc2sgbmFtZTpAIlVuZXhwZWN0
ZWRseSByZXN1bWVkIiB3aXRoSGFuZGxlcjpuaWxdKTsKKworICAgIGF1dG8gcmVsZWFzZUFzc2Vy
dGlvbiA9IFt0aGlzXSB7CisgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fdW5leHBlY3RlZGx5
UmVzdW1lZFVJQXNzZXJ0aW9uTG9jayk7CisgICAgICAgIGlmICghbV91bmV4cGVjdGVkbHlSZXN1
bWVkVUlBc3NlcnRpb24pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW21fdW5leHBl
Y3RlZGx5UmVzdW1lZFVJQXNzZXJ0aW9uIGludmFsaWRhdGVdOworICAgICAgICBtX3VuZXhwZWN0
ZWRseVJlc3VtZWRVSUFzc2VydGlvbiA9IG51bGxwdHI7CisgICAgfTsKIAotICAgIGF1dG8gdWlQ
cm9jZXNzQXNzZXJ0aW9uID0gYWRvcHROUyhbW0JLU1Byb2Nlc3NBc3NlcnRpb24gYWxsb2NdIGlu
aXRXaXRoUElEOnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnJlbW90ZVByb2Nlc3NJRCgpIGZs
YWdzOkJLU1Byb2Nlc3NBc3NlcnRpb25QcmV2ZW50VGFza1N1c3BlbmQgcmVhc29uOkJLU1Byb2Nl
c3NBc3NlcnRpb25SZWFzb25GaW5pc2hUYXNrIG5hbWU6QCJVbmV4cGVjdGVkbHkgcmVzdW1lZCIg
d2l0aEhhbmRsZXI6bmlsXSk7CisgICAgbV91bmV4cGVjdGVkbHlSZXN1bWVkVUlBc3NlcnRpb24u
Z2V0KCkuaW52YWxpZGF0aW9uSGFuZGxlciA9IHJlbGVhc2VBc3NlcnRpb247CiAgICAgcGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpQcm9j
ZXNzV2FzVW5leHBlY3RlZGx5VW5zdXNwZW5kZWQoKSwgMCk7Ci0gICAgZGlzcGF0Y2hfYWZ0ZXIo
ZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgKGludDY0X3QpKDUgKiBOU0VDX1BFUl9T
RUMpKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2Fzc2VydGlvbiA9IFdURk1vdmUodWlQ
cm9jZXNzQXNzZXJ0aW9uKV0geyBbYXNzZXJ0aW9uIGludmFsaWRhdGVdOyB9KTsKKyAgICBkaXNw
YXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCAoaW50NjRfdCkoNSAq
IE5TRUNfUEVSX1NFQykpLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVF
X1BSSU9SSVRZX0RFRkFVTFQsIDApLCByZWxlYXNlQXNzZXJ0aW9uKTsKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>