<?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>185975</bug_id>
          
          <creation_ts>2018-05-25 00:11:11 -0700</creation_ts>
          <short_desc>Ensure that the Web Content process doesn&apos;t sleep during initialization</short_desc>
          <delta_ts>2018-05-25 14:53:28 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1427202</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-05-25 00:11:11 -0700</bug_when>
    <thetext>Ensure that the Web Content process doesn&apos;t sleep during initialization</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427203</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-25 00:11:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/40548159&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427204</commentid>
    <comment_count>2</comment_count>
      <attachid>341256</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-05-25 00:13:31 -0700</bug_when>
    <thetext>Created attachment 341256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427224</commentid>
    <comment_count>3</comment_count>
      <attachid>341256</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-05-25 02:16:51 -0700</bug_when>
    <thetext>Comment on attachment 341256
Patch

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

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1426
&gt; +    m_backgroundActivityTokenForInitialization = nullptr;

Need to check if we have to clear this if the process crashes in the meantime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427296</commentid>
    <comment_count>4</comment_count>
      <attachid>341256</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-25 08:39:10 -0700</bug_when>
    <thetext>Comment on attachment 341256
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1426
&gt;&gt; +    m_backgroundActivityTokenForInitialization = nullptr;
&gt; 
&gt; Need to check if we have to clear this if the process crashes in the meantime.

Yes, I believe we do need to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427324</commentid>
    <comment_count>5</comment_count>
      <attachid>341256</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-05-25 09:38:40 -0700</bug_when>
    <thetext>Comment on attachment 341256
Patch

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

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:983
&gt; +    // This must remain after the last message sent in this function,
&gt; +    // otherwise the Web Content process could be suspended before
&gt; +    // initialization is complete.
&gt; +    process.didSendAllProcessInitializationMessages();

Could you use a ScopeExit for this to ensure this always runs last? I&apos;m worried that maybe someone will add an early return in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427331</commentid>
    <comment_count>6</comment_count>
      <attachid>341256</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-05-25 09:53:48 -0700</bug_when>
    <thetext>Comment on attachment 341256
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:983
&gt;&gt; +    process.didSendAllProcessInitializationMessages();
&gt; 
&gt; Could you use a ScopeExit for this to ensure this always runs last? I&apos;m worried that maybe someone will add an early return in the future.

Why not just take the assertion inside WebProcessProxy::didFinishLaunching or some similar function in WebProcessProxy?

That would get you a tighter abstraction.

The background assertion can be an internal implementation detail of WebProcessProxy startup, and then we don&apos;t have to enforce order relative to commands issued by WebProcessPool.

The contract WebProcessProxy should expose to clients is &quot;If you launch me, I will always finish launching before sleeping. You don&apos;t have to do anything special to make this happen, and you also can&apos;t stop it from happening.&quot;

&gt;&gt;&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1426
&gt;&gt;&gt; +    m_backgroundActivityTokenForInitialization = nullptr;
&gt;&gt; 
&gt;&gt; Need to check if we have to clear this if the process crashes in the meantime.
&gt; 
&gt; Yes, I believe we do need to.

You can just clear the token unconditionally in the crash handler. Probably doesn&apos;t make a big difference, since a live background assertion for a crashed process probably does nothing. But still good hygiene.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427332</commentid>
    <comment_count>7</comment_count>
      <attachid>341256</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-05-25 09:53:50 -0700</bug_when>
    <thetext>Comment on attachment 341256
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:983
&gt;&gt; +    process.didSendAllProcessInitializationMessages();
&gt; 
&gt; Could you use a ScopeExit for this to ensure this always runs last? I&apos;m worried that maybe someone will add an early return in the future.

Now there’s a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427335</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-05-25 10:03:34 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #6)
&gt; Comment on attachment 341256 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=341256&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:983
&gt; &gt;&gt; +    process.didSendAllProcessInitializationMessages();
&gt; &gt; 
&gt; &gt; Could you use a ScopeExit for this to ensure this always runs last? I&apos;m worried that maybe someone will add an early return in the future.
&gt; 
&gt; Why not just take the assertion inside WebProcessProxy::didFinishLaunching
&gt; or some similar function in WebProcessProxy?
&gt; 
&gt; That would get you a tighter abstraction.
&gt; 
&gt; The background assertion can be an internal implementation detail of
&gt; WebProcessProxy startup, and then we don&apos;t have to enforce order relative to
&gt; commands issued by WebProcessPool.
&gt; 
&gt; The contract WebProcessProxy should expose to clients is &quot;If you launch me,
&gt; I will always finish launching before sleeping. You don&apos;t have to do
&gt; anything special to make this happen, and you also can&apos;t stop it from
&gt; happening.&quot;

Good point!

&gt; &gt;&gt;&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1426
&gt; &gt;&gt;&gt; +    m_backgroundActivityTokenForInitialization = nullptr;
&gt; &gt;&gt; 
&gt; &gt;&gt; Need to check if we have to clear this if the process crashes in the meantime.
&gt; &gt; 
&gt; &gt; Yes, I believe we do need to.
&gt; 
&gt; You can just clear the token unconditionally in the crash handler. Probably
&gt; doesn&apos;t make a big difference, since a live background assertion for a
&gt; crashed process probably does nothing. But still good hygiene.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427353</commentid>
    <comment_count>9</comment_count>
      <attachid>341256</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-05-25 10:52:11 -0700</bug_when>
    <thetext>Comment on attachment 341256
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:983
&gt;&gt;&gt;&gt;&gt; +    process.didSendAllProcessInitializationMessages();
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Could you use a ScopeExit for this to ensure this always runs last? I&apos;m worried that maybe someone will add an early return in the future.
&gt;&gt;&gt; 
&gt;&gt;&gt; Why not just take the assertion inside WebProcessProxy::didFinishLaunching or some similar function in WebProcessProxy?
&gt;&gt;&gt; 
&gt;&gt;&gt; That would get you a tighter abstraction.
&gt;&gt;&gt; 
&gt;&gt;&gt; The background assertion can be an internal implementation detail of WebProcessProxy startup, and then we don&apos;t have to enforce order relative to commands issued by WebProcessPool.
&gt;&gt;&gt; 
&gt;&gt;&gt; The contract WebProcessProxy should expose to clients is &quot;If you launch me, I will always finish launching before sleeping. You don&apos;t have to do anything special to make this happen, and you also can&apos;t stop it from happening.&quot;
&gt;&gt; 
&gt;&gt; Now there’s a good idea.
&gt; 
&gt; Good point!

Wait, no. I don’t think there *is* a place in WebProcessProxy that we know that other people (like WebProcessPool) are done sending initialization messages. This is all messy already (why does WebProcessPool::initializeNewWebProcess do so much work?!), but didFinishLaunching is waaaaay too early (as far as I can tell).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427371</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-05-25 11:31:48 -0700</bug_when>
    <thetext>&gt; Wait, no. I don’t think there *is* a place in WebProcessProxy that we know
&gt; that other people (like WebProcessPool) are done sending initialization
&gt; messages.

I see.

OK, here&apos;s a potential alternative to put at the end of initializeNewWebProcess:

// Make sure the WebProcess finishes initialization before going to sleep.
auto token = throttler().backgroundActivityToken();
process.isResponsive([token] { }); // We don&apos;t really care what the answer is; this is just a convenient way to verify that our previous messages have been processed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427377</commentid>
    <comment_count>11</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-05-25 11:39:00 -0700</bug_when>
    <thetext>&gt; auto token = throttler().backgroundActivityToken();
&gt; process.isResponsive([token] { }); // We don&apos;t really care what the answer
&gt; is; this is just a convenient way to verify that our previous messages have
&gt; been processed.

If we want to be extra pedantic, we can even take the assertion before the first message, to ensure that the web process starts receiving messages right away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427446</commentid>
    <comment_count>12</comment_count>
      <attachid>341325</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-05-25 14:08:04 -0700</bug_when>
    <thetext>Created attachment 341325
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427448</commentid>
    <comment_count>13</comment_count>
      <attachid>341325</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-05-25 14:11:43 -0700</bug_when>
    <thetext>Comment on attachment 341325
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427482</commentid>
    <comment_count>14</comment_count>
      <attachid>341325</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-25 14:53:27 -0700</bug_when>
    <thetext>Comment on attachment 341325
Patch

Clearing flags on attachment: 341325

Committed r232209: &lt;https://trac.webkit.org/changeset/232209&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427483</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-25 14:53:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341256</attachid>
            <date>2018-05-25 00:13:31 -0700</date>
            <delta_ts>2018-05-25 14:08:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185975-20180525001330.patch</filename>
            <type>text/plain</type>
            <size>6904</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFlZTgzODI1YWEzMDljODVl
NzJlYjE0MmJjNjI5MTA1ODYwNjBkYjMuLjk0YmEzZDY2NTJhMGM2MjNhY2FlZTY4MGY5ZDNmNjc0
M2ExNWVkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTgtMDUtMjUgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRW5zdXJlIHRoYXQgdGhl
IFdlYiBDb250ZW50IHByb2Nlc3MgZG9lc24ndCBzbGVlcCBkdXJpbmcgaW5pdGlhbGl6YXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTk3NQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDA1NDgxNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViUHJvY2Vzc1Bvb2w6Ondhcm1Jbml0aWFsUHJv
Y2VzcyBpc24ndCB3b3J0aCBtdWNoIChvciBhdCBsZWFzdCwgYXMgbXVjaAorICAgICAgICBhcyBp
dCBjb3VsZCBiZSkgaWYgdGhlIFdlYiBDb250ZW50IHByb2Nlc3MgZ29lcyB0byBzbGVlcCBpbiB0
aGUgbWlkZGxlCisgICAgICAgIG9mIGluaXRpYWxpemVXZWJQcm9jZXNzLgorCisgICAgICAgIEtl
ZXAgdGhlIFdlYiBDb250ZW50IHByb2Nlc3MgYWxpdmUgdW50aWwgaXQgaGFzIGhhbmRsZWQgYWxs
IG1lc3NhZ2VzCisgICAgICAgIHNlbnQgZnJvbSBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5l
d1dlYlByb2Nlc3MuCisKKyAgICAgICAgVGhpcyBpcyBhIHNpZ25pZmljYW50IHNwZWVkdXAgb24g
c29tZSBiZW5jaG1hcmtzIEkndmUgYmVlbiBydW5uaW5nCisgICAgICAgIHRoYXQgaW52b2x2ZSBw
cmV3YXJtaW5nIGEgcHJvY2VzcyBsb25nIGJlZm9yZSBhbnkgY29udGVudCBpcyBsb2FkZWQuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmRpZFNlbmRBbGxQcm9jZXNzSW5pdGlhbGl6YXRpb25NZXNzYWdlcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoSW5pdGlhbGl6aW5nUHJvY2Vzcyk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkU2VuZEFsbFBy
b2Nlc3NJbml0aWFsaXphdGlvbk1lc3NhZ2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisK
IDIwMTgtMDUtMjQgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXggSXNzdWVzIHdpdGggTG91cGUgR2VzdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDEyYTZkZGZjMDg3NGVhZWM5N2UwMDJkYTYw
M2FkMzdlMjc0Mjk2NzYuLmJmNDdmMTJjYzJkN2NlM2IyNjY2OGZkYThlYzUxYjViZTY1MDYzNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTk3Niw2
ICs5NzYsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3Mo
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBXZWJzaXRlRGEKICAgICBhdXRvIHNjcmVlblByb3Bl
cnRpZXMgPSBXZWJDb3JlOjpnZXRTY3JlZW5Qcm9wZXJ0aWVzKCk7CiAgICAgcHJvY2Vzcy5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRTY3JlZW5Qcm9wZXJ0aWVzKHNjcmVlblByb3BlcnRp
ZXMuZmlyc3QsIHNjcmVlblByb3BlcnRpZXMuc2Vjb25kKSwgMCk7CiAjZW5kaWYKKworICAgIC8v
IFRoaXMgbXVzdCByZW1haW4gYWZ0ZXIgdGhlIGxhc3QgbWVzc2FnZSBzZW50IGluIHRoaXMgZnVu
Y3Rpb24sCisgICAgLy8gb3RoZXJ3aXNlIHRoZSBXZWIgQ29udGVudCBwcm9jZXNzIGNvdWxkIGJl
IHN1c3BlbmRlZCBiZWZvcmUKKyAgICAvLyBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZS4KKyAg
ICBwcm9jZXNzLmRpZFNlbmRBbGxQcm9jZXNzSW5pdGlhbGl6YXRpb25NZXNzYWdlcygpOwogfQog
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjp3YXJtSW5pdGlhbFByb2Nlc3MoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggNTBkZDQxZWQ1ZjkzMjA4ZmZh
MzBmNGY1YzRiMmU4OTk0YTJmOGJkYy4uMWI3MWJkNzIyZDRlNTE4Y2E0MTE5MDVhOTFjMzlkNGZl
YWY1MDJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CkBAIC0xNDEyLDQgKzE0MTIsMTggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbGVhc2VCYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbkZvckZ1bGxzY3JlZW5JbnB1dCgpCiAKICNlbmRpZgogCit2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZGlkU2VuZEFsbFByb2Nlc3NJbml0aWFsaXphdGlvbk1lc3NhZ2Vz
KCkKK3sKKyAgICBtX2JhY2tncm91bmRBY3Rpdml0eVRva2VuRm9ySW5pdGlhbGl6YXRpb24gPSB0
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpOworICAgIFJFTEVBU0VfTE9HKFBy
b2Nlc3NTdXNwZW5zaW9uLCAiVUlQcm9jZXNzIGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0
aW9uIGZvciBpbml0aWFsaXphdGlvbi4iKTsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OkRpZFNlbmRBbGxQcm9jZXNzSW5pdGlhbGl6YXRpb25NZXNzYWdlcygpLCAwKTsKK30KKwor
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaEluaXRpYWxpemluZ1Byb2Nlc3MoKQorewor
ICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVUlQcm9jZXNzIGlzIHJlbGVhc2lu
ZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgaW5pdGlhbGl6YXRpb24gaXMgY29tcGxl
dGUuIik7CisgICAgbV9iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbkZvckluaXRpYWxpemF0aW9uID0g
bnVsbHB0cjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGRjZmVjZWYyNWNlNGRjM2NjNzdiMmI1ZDU2ODUx
NGJkM2EzZWVkZDMuLjZiYmNiZTE4ZDFlMjgzNzlmNDhkY2M1NThhYzhiOTc0MmZlM2FhNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0yMjYsNiArMjI2
LDggQEAgcHVibGljOgogICAgIHZvaWQgY2FjaGVNZWRpYU1JTUVUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYpOwogI2VuZGlmCiAKKyAgICB2b2lkIGRpZFNlbmRBbGxQcm9jZXNzSW5pdGlhbGl6
YXRpb25NZXNzYWdlcygpOworCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVy
YXRlUGFnZUlEKCk7CiAgICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0
ZURhdGFTdG9yZSYsIElzSW5QcmV3YXJtZWRQb29sKTsKQEAgLTMxMyw2ICszMTUsOCBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZUZvclJlc291cmNlTGltaXRUZXJt
aW5hdGlvbihjb25zdCBTdHJpbmcmIGxpbWl0S2V5KTsKIAorICAgIHZvaWQgZGlkRmluaXNoSW5p
dGlhbGl6aW5nUHJvY2VzcygpOworCiAgICAgUmVzcG9uc2l2ZW5lc3NUaW1lciBtX3Jlc3BvbnNp
dmVuZXNzVGltZXI7CiAgICAgQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyIG1f
YmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXI7CiAgICAgCkBAIC0zNjQsNiArMzY4LDggQEAg
cHJpdmF0ZToKICNpZiBFTkFCTEUoRVhUUkFfWk9PTV9NT0RFKQogICAgIFByb2Nlc3NUaHJvdHRs
ZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fYmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JG
dWxsc2NyZWVuRm9ybUNvbnRyb2xzOwogI2VuZGlmCisKKyAgICBQcm9jZXNzVGhyb3R0bGVyOjpC
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX2JhY2tncm91bmRBY3Rpdml0eVRva2VuRm9ySW5pdGlh
bGl6YXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5ZTUzOWY1
OGJiYjg1ODI5OTI5ZGEzYTIzMmU4MzEzNDZmZDc3N2MyLi4yZTM3YmY2ZTExNzcyNTc0YWM2ZmU5
MjBjOTM3Mjk2YTJhYzJjZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC03MCw0ICs3MCw2IEBAIG1lc3NhZ2VzIC0+
IFdlYlByb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgQ2FjaGVNZWRpYU1JTUVUeXBlcyhWZWN0b3I8U3RyaW5nPiB0eXBlcykKICNlbmRpZgorCisg
ICAgRGlkRmluaXNoSW5pdGlhbGl6aW5nUHJvY2VzcygpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMGU4MzcwNDg1YWE5OWRhOGUzZTQxYjkxY2RmMjM2N2My
OTMzMjA0ZS4uZTc0MGE2NTc4YTUxNDhiOTRmNDVkNWM0YWI4ZjBjZWU0ZTBiYzU4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTMwOSw2ICsxMzA5LDExIEBA
IHZvaWQgV2ViUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgT3B0aW9uU2V0CiAgICAgfQogfQogCit2b2lkIFdlYlByb2Nlc3M6OmRp
ZFNlbmRBbGxQcm9jZXNzSW5pdGlhbGl6YXRpb25NZXNzYWdlcygpCit7CisgICAgcGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpEaWRGaW5p
c2hJbml0aWFsaXppbmdQcm9jZXNzKCksIDApOworfQorCiB2b2lkIFdlYlByb2Nlc3M6OnNldEhp
ZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdJbmNyZWFzZUxpbWl0KGludCBtaWxsaXNlY29uZHMp
CiB7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggNjczOGUyOWVjZmExZGMxYjBmOWM1NzhiYzdi
NjU2NmE4YWFkOTEwYy4uYzNhNWVlMzY2NTA2NzVhM2VmMWRhNDBlN2U2ODEyY2Q1YzJiNTcyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zODEsNiArMzgxLDggQEAg
cHJpdmF0ZToKICNlbmRpZgogI2VuZGlmCiAKKyAgICB2b2lkIGRpZFNlbmRBbGxQcm9jZXNzSW5p
dGlhbGl6YXRpb25NZXNzYWdlcygpOworCiAgICAgUmVmUHRyPFdlYkNvbm5lY3Rpb25Ub1VJUHJv
Y2Vzcz4gbV93ZWJDb25uZWN0aW9uOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdl
YlBhZ2U+PiBtX3BhZ2VNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IDQ5MzExNmYwZTJiMjdhYmRmYTY5MWU5YjM3ZTE3NzM4OWVm
ZDc2MTcuLjc0OTIxMjQwMmNkNmM4ODI5OWQ4ZDg2MDllODQ5N2JiYTQ2ZDUyNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMzks
NCArMTM5LDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgU2V0TWVkaWFNSU1FVHlwZXMoVmVjdG9yPFN0cmluZz4gdHlw
ZXMpCiAjZW5kaWYKKworICAgIERpZFNlbmRBbGxQcm9jZXNzSW5pdGlhbGl6YXRpb25NZXNzYWdl
cygpCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341325</attachid>
            <date>2018-05-25 14:08:04 -0700</date>
            <delta_ts>2018-05-25 14:53:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185975-20180525140759.patch</filename>
            <type>text/plain</type>
            <size>2438</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFlZTgzODI1YWEzMDljODVl
NzJlYjE0MmJjNjI5MTA1ODYwNjBkYjMuLjkxNjcyMWE4NjI0MGNjY2U5ZDM0MzQ3MmY1YmFkODg0
ZjAyM2RlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTgtMDUtMjUgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRW5zdXJlIHRoYXQgdGhl
IFdlYiBDb250ZW50IHByb2Nlc3MgZG9lc24ndCBzbGVlcCBkdXJpbmcgaW5pdGlhbGl6YXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTk3NQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDA1NDgxNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViUHJvY2Vzc1Bvb2w6Ondhcm1Jbml0aWFsUHJv
Y2VzcyBpc24ndCB3b3J0aCBtdWNoIChvciBhdCBsZWFzdCwgYXMgbXVjaAorICAgICAgICBhcyBp
dCBjb3VsZCBiZSkgaWYgdGhlIFdlYiBDb250ZW50IHByb2Nlc3MgZ29lcyB0byBzbGVlcCBpbiB0
aGUgbWlkZGxlCisgICAgICAgIG9mIGluaXRpYWxpemVXZWJQcm9jZXNzLgorCisgICAgICAgIEtl
ZXAgdGhlIFdlYiBDb250ZW50IHByb2Nlc3MgYWxpdmUgdW50aWwgaXQgaGFzIGhhbmRsZWQgYWxs
IG1lc3NhZ2VzCisgICAgICAgIHNlbnQgZnJvbSBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5l
d1dlYlByb2Nlc3MuCisKKyAgICAgICAgVGhpcyBpcyBhIHNpZ25pZmljYW50IHNwZWVkdXAgb24g
c29tZSBiZW5jaG1hcmtzIEkndmUgYmVlbiBydW5uaW5nCisgICAgICAgIHRoYXQgaW52b2x2ZSBw
cmV3YXJtaW5nIGEgcHJvY2VzcyBsb25nIGJlZm9yZSBhbnkgY29udGVudCBpcyBsb2FkZWQuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MpOgorCiAyMDE4LTA1LTI0
ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IElzc3VlcyB3aXRoIExvdXBlIEdlc3R1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAppbmRleCAxMmE2ZGRmYzA4NzRlYWVjOTdlMDAyZGE2MDNhZDM3ZTI3NDI5
Njc2Li5iNzA4YjhiMTUwMzY1ZTI0YmY3MmE0YjViMGM3MmE3MDk4OGRhYTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC05Miw2ICs5Miw3IEBACiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2
aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5o
PgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIApAQCAtODIwLDYgKzgyMSwxNCBAQCBzdGF0aWMgdm9pZCByZWdpc3RlckRpc3Bs
YXlDb25maWd1cmF0aW9uQ2FsbGJhY2soKQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjppbml0aWFs
aXplTmV3V2ViUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFdlYnNpdGVEYXRhU3Rv
cmUmIHdlYnNpdGVEYXRhU3RvcmUpCiB7CisgICAgYXV0byBpbml0aWFsaXphdGlvbkFjdGl2aXR5
VG9rZW4gPSBwcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7Cisg
ICAgYXV0byBzY29wZUV4aXQgPSBtYWtlU2NvcGVFeGl0KFsmcHJvY2VzcywgaW5pdGlhbGl6YXRp
b25BY3Rpdml0eVRva2VuXSB7CisgICAgICAgIC8vIFJvdW5kLXRyaXAgdG8gdGhlIFdlYiBDb250
ZW50IHByb2Nlc3MgYmVmb3JlIHJlbGVhc2luZyB0aGUKKyAgICAgICAgLy8gaW5pdGlhbGl6YXRp
b24gYWN0aXZpdHkgdG9rZW4sIHNvIHRoYXQgd2UncmUgc3VyZSB0aGF0IGFsbAorICAgICAgICAv
LyBtZXNzYWdlcyBzZW50IGZyb20gdGhpcyBmdW5jdGlvbiBoYXZlIGJlZW4gaGFuZGxlZC4KKyAg
ICAgICAgcHJvY2Vzcy5pc1Jlc3BvbnNpdmUoW2luaXRpYWxpemF0aW9uQWN0aXZpdHlUb2tlbl0g
KGJvb2wpIHsgfSk7CisgICAgfSk7CisKICAgICBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwogCiAg
ICAgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>