<?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>173840</bug_id>
          
          <creation_ts>2017-06-26 10:47:15 -0700</creation_ts>
          <short_desc>Web Inspector: AsyncStackTrace nodes can be corrupted when truncating</short_desc>
          <delta_ts>2017-06-30 19:56:09 -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 Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Baker">mattbaker</reporter>
          <assigned_to name="Matt Baker">mattbaker</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1322886</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-06-26 10:47:15 -0700</bug_when>
    <thetext>Summary:
AsyncStackTrace nodes can be corrupted when truncating. This only occur when nodes in the path being truncated are shared by multiple traces.

Steps to Reproduce:
1. Goto arstechnica.com
2. Open Inspector
3. Quickly scroll the page
  =&gt; Crash

ASSERTION FAILED: m_parent-&gt;m_childCount
/Volumes/Data/Projects/WebKit/OpenSource/Source/JavaScriptCore/inspector/AsyncStackTrace.cpp(189) : void Inspector::AsyncStackTrace::remove()
1   0x12261bc5d WTFCrash
2   0x1214a74b8 Inspector::AsyncStackTrace::remove()
3   0x1214a73c6 Inspector::AsyncStackTrace::~AsyncStackTrace()
4   0x1214a7555 Inspector::AsyncStackTrace::~AsyncStackTrace()
5   0x1214ab567 WTF::RefCounted&lt;Inspector::AsyncStackTrace&gt;::deref() const
6   0x1214ab511 void WTF::derefIfNotNull&lt;Inspector::AsyncStackTrace&gt;(Inspector::AsyncStackTrace*)
7   0x1214a815b WTF::RefPtr&lt;Inspector::AsyncStackTrace&gt;::operator=(std::nullptr_t)
8   0x1214a74ea Inspector::AsyncStackTrace::remove()
9   0x1214a7903 Inspector::AsyncStackTrace::didDispatchAsyncCall()
10  0x121e8f67f Inspector::InspectorDebuggerAgent::didDispatchAsyncCall()
11  0x115f4bf35 WebCore::InspectorInstrumentation::didFireTimerImpl(WebCore::InspectorInstrumentationCookie const&amp;)
12  0x1156fff28 WebCore::InspectorInstrumentation::didFireTimer(WebCore::InspectorInstrumentationCookie const&amp;)
13  0x1156ffba5 WebCore::DOMTimer::fired()
14  0x1179986c4 WebCore::ThreadTimers::sharedTimerFiredInternal()
15  0x117998e31 WebCore::ThreadTimers::setSharedTimer(WebCore::SharedTimer*)::$_0::operator()() const
16  0x117998de9 WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WebCore::ThreadTimers::setSharedTimer(WebCore::SharedTimer*)::$_0&gt;::call()
17  0x114efbbde WTF::Function&lt;void ()&gt;::operator()() const
18  0x116c7a415 WebCore::MainThreadSharedTimer::fired()
19  0x116c7a7a9 WebCore::timerFired(__CFRunLoopTimer*, void*)
20  0x10ac0d074 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322887</commentid>
    <comment_count>1</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-06-26 10:47:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/30840820&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322924</commentid>
    <comment_count>2</comment_count>
      <attachid>313856</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-06-26 11:49:09 -0700</bug_when>
    <thetext>Created attachment 313856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323226</commentid>
    <comment_count>3</comment_count>
      <attachid>313856</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-06-27 14:02:46 -0700</bug_when>
    <thetext>Comment on attachment 313856
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        node counts to be incorrectly incremented and parent pointers to shared

typo: /pointers to shared/pointers to be shared/.

&gt; Source/JavaScriptCore/inspector/AsyncStackTrace.cpp:-177
&gt; -    currentNode-&gt;remove();

Hmmm, this part is different.  Previously, you invoke remove() on the oldest parent (because currentNode is updated to be currentNode-&gt;m_parent.get() in the loop).  Now, you remove the lastUnlockedAncestor before traversing up the parent chain.  Is this intentional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323331</commentid>
    <comment_count>4</comment_count>
      <attachid>313856</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-06-27 17:07:10 -0700</bug_when>
    <thetext>Comment on attachment 313856
Patch

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

&gt;&gt; Source/JavaScriptCore/inspector/AsyncStackTrace.cpp:-177
&gt;&gt; -    currentNode-&gt;remove();
&gt; 
&gt; Hmmm, this part is different.  Previously, you invoke remove() on the oldest parent (because currentNode is updated to be currentNode-&gt;m_parent.get() in the loop).  Now, you remove the lastUnlockedAncestor before traversing up the parent chain.  Is this intentional?

This is intentional. The subtree at `lastUnlockedAncestor` needs to be removed from its parent, and the rest of the tree (from the first locked ancestor to the root) should be left alone. The locked portion will be cloned and become the root of a new tree, to which `lastLockedAncestor` will be appended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323345</commentid>
    <comment_count>5</comment_count>
      <attachid>313965</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-06-27 17:41:06 -0700</bug_when>
    <thetext>Created attachment 313965
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323346</commentid>
    <comment_count>6</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-06-27 17:41:45 -0700</bug_when>
    <thetext>Updated change log to better explain the problem being solved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324520</commentid>
    <comment_count>7</comment_count>
      <attachid>313965</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-06-30 14:05:16 -0700</bug_when>
    <thetext>Comment on attachment 313965
Patch

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

&gt; LayoutTests/inspector/debugger/truncate-async-stack-trace.html:5
&gt; +&lt;script src=&quot;resources/log-active-stack-trace.js&quot;&gt;&lt;/script&gt;

Is this script needed? Should the test be calling window.logActiveStackTrace to verify something? Right now it just confirms it can pause, which I assume is verifying that we aren&apos;t ASSERTing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324646</commentid>
    <comment_count>8</comment_count>
      <attachid>313965</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-06-30 16:54:21 -0700</bug_when>
    <thetext>Comment on attachment 313965
Patch

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

&gt;&gt; LayoutTests/inspector/debugger/truncate-async-stack-trace.html:5
&gt;&gt; +&lt;script src=&quot;resources/log-active-stack-trace.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; Is this script needed? Should the test be calling window.logActiveStackTrace to verify something? Right now it just confirms it can pause, which I assume is verifying that we aren&apos;t ASSERTing.

Debugging leftovers. Will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324649</commentid>
    <comment_count>9</comment_count>
      <attachid>314326</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-06-30 16:57:13 -0700</bug_when>
    <thetext>Created attachment 314326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324675</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-30 17:46:01 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 314326:

fast/workers/worker-exception-during-navigation.html bug 174058
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324731</commentid>
    <comment_count>11</comment_count>
      <attachid>314326</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-30 19:56:08 -0700</bug_when>
    <thetext>Comment on attachment 314326
Patch

Clearing flags on attachment: 314326

Committed r219035: &lt;http://trac.webkit.org/changeset/219035&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1324732</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-30 19:56:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313856</attachid>
            <date>2017-06-26 11:49:09 -0700</date>
            <delta_ts>2017-06-27 17:41:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173840-20170626114909.patch</filename>
            <type>text/plain</type>
            <size>6241</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4Nzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzVmNjRiMzAwMTgzM2JiNDkzMzM4Mzc5ZjQyOTE0NDNlYzk4NTljLi45Nzk0MDI5ZjAxY2MyNmE2
OGRkNDI3NTUwZmI2MDMwYTExYjNkNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNy0wNi0yNiAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQXN5bmNTdGFja1RyYWNlIG5vZGVzIGNhbiBiZSBj
b3JydXB0ZWQgd2hlbiB0cnVuY2F0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzM4NDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwODQwODIw
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRydW5j
YXRpbmcgYW4gYXN5bmNocm9ub3VzIHN0YWNrIHRyYWNlIGNvbnRhaW5pbmcgYnJhbmNoZXMgY2F1
c2VkIGNoaWxkCisgICAgICAgIG5vZGUgY291bnRzIHRvIGJlIGluY29ycmVjdGx5IGluY3JlbWVu
dGVkIGFuZCBwYXJlbnQgcG9pbnRlcnMgdG8gc2hhcmVkCisgICAgICAgIGJldHdlZW4gdGhlIG9y
aWdpbmFsIGFuZCBjbG9uZWQgdHJhY2VzLiBUaGlzIG9jY3VycmVkIGJlY2F1c2UgY2xvbmVkCisg
ICAgICAgIG5vZGVzIHdlcmUgYmVpbmcgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgb3JpZ2luYWwgbm9k
ZSdzIHBhcmVudCBwb2ludGVyLgorCisgICAgICAgICogaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFj
ZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkFzeW5jU3RhY2tUcmFjZTo6dHJ1bmNhdGUpOgor
CiAyMDE3LTA2LTI0ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIFJlZmxlY3QuZW51bWVyYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHAKaW5kZXggNDAwMjk2NGFjZjA0MjRk
MDU1OGIwMzJmNWE0NTAzNmJkOTVhODk0Yi4uYjc2NDA5NjM3N2QzMThlNzgzZTIzYzg0NWExMzU3
ZmJkYzkwZjFiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9B
c3luY1N0YWNrVHJhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
QXN5bmNTdGFja1RyYWNlLmNwcApAQCAtMTYzLDIyICsxNjMsMjUgQEAgdm9pZCBBc3luY1N0YWNr
VHJhY2U6OnRydW5jYXRlKHNpemVfdCBtYXhEZXB0aCkKICAgICAvLyBjbG9uaW5nIHRoZSBsb2Nr
ZWQgcG9ydGlvbiBvZiB0aGUgdHJhY2UgKHRoZSBwYXRoIGZyb20gdGhlIGxvY2tlZCBub2RlCiAg
ICAgLy8gdG8gdGhlIG5ldyByb290KS4gVGhlIHN1YnRyZWUgcm9vdGVkIGF0IHRoZSBsYXN0IHVu
bG9ja2VkIGFuY2VzdG9yIGlzCiAgICAgLy8gdGhlbiBhcHBlbmRlZCB0byB0aGUgbmV3IHRyZWUu
Ci0gICAgYXV0byogY3VycmVudE5vZGUgPSBsYXN0VW5sb2NrZWRBbmNlc3RvcjsKLSAgICB3aGls
ZSAoY3VycmVudE5vZGUtPm1fcGFyZW50KSB7Ci0gICAgICAgIGF1dG8mIHBhcmVudE5vZGUgPSBj
dXJyZW50Tm9kZS0+bV9wYXJlbnQ7Ci0gICAgICAgIGN1cnJlbnROb2RlLT5tX3BhcmVudCA9IEFz
eW5jU3RhY2tUcmFjZTo6Y3JlYXRlKHBhcmVudE5vZGUtPm1fY2FsbFN0YWNrLmNvcHlSZWYoKSwg
dHJ1ZSwgcGFyZW50Tm9kZS0+bV9wYXJlbnQpOwotICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJl
bnROb2RlLT5tX3BhcmVudC5nZXQoKTsKKyAgICBhdXRvKiBwcmV2aW91c05vZGUgPSBsYXN0VW5s
b2NrZWRBbmNlc3RvcjsKIAotICAgICAgICBpZiAocGFyZW50Tm9kZS5nZXQoKSA9PSBuZXdTdGFj
a1RyYWNlUm9vdCkKKyAgICAvLyBUaGUgc3VidHJlZSBiZWluZyB0cnVuY2F0ZWQgbXVzdCBiZSBy
ZW1vdmVkIGZyb20gaXQncyBwYXJlbnQgYmVmb3JlCisgICAgLy8gdXBkYXRpbmcgaXRzIHBhcmVu
dCBwb2ludGVyIGNoYWluLgorICAgIGF1dG8qIHNvdXJjZU5vZGUgPSBsYXN0VW5sb2NrZWRBbmNl
c3Rvci0+bV9wYXJlbnQuZ2V0KCk7CisgICAgbGFzdFVubG9ja2VkQW5jZXN0b3ItPnJlbW92ZSgp
OworCisgICAgd2hpbGUgKHNvdXJjZU5vZGUpIHsKKyAgICAgICAgcHJldmlvdXNOb2RlLT5tX3Bh
cmVudCA9IEFzeW5jU3RhY2tUcmFjZTo6Y3JlYXRlKHNvdXJjZU5vZGUtPm1fY2FsbFN0YWNrLmNv
cHlSZWYoKSwgdHJ1ZSwgbnVsbHB0cik7CisgICAgICAgIHByZXZpb3VzTm9kZS0+bV9wYXJlbnQt
Pm1fY2hpbGRDb3VudCA9IDE7CisgICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTm9kZS0+
bV9wYXJlbnQuZ2V0KCk7CisKKyAgICAgICAgaWYgKHNvdXJjZU5vZGUgPT0gbmV3U3RhY2tUcmFj
ZVJvb3QpCiAgICAgICAgICAgICBicmVhazsKLSAgICB9CiAKLSAgICBjdXJyZW50Tm9kZS0+bV90
cnVuY2F0ZWQgPSB0cnVlOwotICAgIGN1cnJlbnROb2RlLT5yZW1vdmUoKTsKKyAgICAgICAgc291
cmNlTm9kZSA9IHNvdXJjZU5vZGUtPm1fcGFyZW50LmdldCgpOworICAgIH0KIAotICAgIC8vIERl
Y3JlbWVudCB0aGUgY2hpbGQgY291bnQgb2YgdGhlIGZpcnN0IGxvY2tlZCBhbmNlc3RvciBhZnRl
ciByZW1vdmluZyBpdHMgc3VidHJlZS4KLSAgICBhdXRvJiBmaXJzdExvY2tlZEFuY2VzdG9yID0g
bGFzdFVubG9ja2VkQW5jZXN0b3ItPm1fcGFyZW50OwotICAgIGZpcnN0TG9ja2VkQW5jZXN0b3It
Pm1fY2hpbGRDb3VudC0tOworICAgIHByZXZpb3VzTm9kZS0+bV90cnVuY2F0ZWQgPSB0cnVlOwog
fQogCiB2b2lkIEFzeW5jU3RhY2tUcmFjZTo6cmVtb3ZlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiN2FmN2JlY2Q0ZDg0
MzllYmU3ZmY1YjI3MDZmYjM4ZjM0YzI3ZTVkLi5iOGJjOTc5OTViMzljNmJhZjk5ZTE0MDFlMDZi
ZGNkN2MwNGY5OGU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDYtMjYgIE1hdHQgQmFr
ZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFzeW5j
U3RhY2tUcmFjZSBub2RlcyBjYW4gYmUgY29ycnVwdGVkIHdoZW4gdHJ1bmNhdGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczODQwCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zMDg0MDgyMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBmb3IgdHJ1bmNhdGluZyBhIGJyYW5jaGluZyBh
c3luY2hyb25vdXMgc3RhY2sgdHJhY2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIv
dHJ1bmNhdGUtYXN5bmMtc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3IvZGVidWdnZXIvdHJ1bmNhdGUtYXN5bmMtc3RhY2stdHJhY2UuaHRtbDogQWRk
ZWQuCisKIDIwMTctMDYtMjQgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgUmVmbGVjdC5lbnVtZXJhdGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90cnVuY2F0ZS1hc3luYy1zdGFjay10cmFjZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdHJ1bmNhdGUtYXN5bmMtc3Rh
Y2stdHJhY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3MjlkNTBlMGEwYmYwY2EyOTBjZDVj
ZmZkOTk5MmYyYjUwNjU4NDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvdHJ1bmNhdGUtYXN5bmMtc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNyBAQAorVGVzdHMgZm9yIHRydW5jYXRlZCBhc3luYyBzdGFjayB0cmFjZXMuCisKKwor
PT0gUnVubmluZyB0ZXN0IHN1aXRlOiBBc3luY1N0YWNrVHJhY2UudHJ1bmNhdGUKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBUcnVuY2F0ZUJyYW5jaGluZ1N0YWNrVHJhY2UKK1BBU1M6IFBhdXNlZCBp
biBicmFuY2hpbmcgc3RhY2sgdHJhY2UuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci90cnVuY2F0ZS1hc3luYy1zdGFjay10cmFjZS5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RydW5jYXRlLWFzeW5jLXN0YWNrLXRyYWNlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2Y0YmMyNTNjNGIwZGZkODYwNWYyZWJjYzMyY2YxNWJhNjk1MjRlZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90cnVuY2F0ZS1hc3lu
Yy1zdGFjay10cmFjZS5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNv
dXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9sb2ctYWN0aXZlLXN0YWNrLXRyYWNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlv
biB0ZXN0QnJhbmNoaW5nVHJ1bmNhdGUocmVwZWF0Q291bnQpIHsKKyAgICBsZXQgY291bnQgPSAw
OworICAgIGZ1bmN0aW9uIHJlcGVhdCgpIHsKKyAgICAgICAgaWYgKGNvdW50KysgPT09IHJlcGVh
dENvdW50KSB7CisgICAgICAgICAgICBkZWJ1Z2dlcjsKKyAgICAgICAgICAgIFRlc3RQYWdlLmRp
c3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJBZnRlclRlc3RGdW5jdGlvbiIpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge30sIDEwMDAp
OworICAgICAgICBzZXRUaW1lb3V0KHJlcGVhdCwgMCk7CisgICAgfQorICAgIHNldFRpbWVvdXQo
cmVwZWF0LCAwKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5z
cGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJBc3luY1N0YWNrVHJhY2UudHJ1bmNhdGUiKTsK
KworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlRydW5jYXRlQnJhbmNo
aW5nU3RhY2tUcmFjZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBicmFuY2hp
bmcgc3RhY2sgdHJhY2VzIGNhbiBiZSB0cnVuY2F0ZWQuIiwKKyAgICAgICAgdGVzdChyZXNvbHZl
LCByZWplY3QpIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYXdh
aXRFdmVudChXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCkKKyAgICAg
ICAgICAgIC50aGVuKChldmVudCkgPT4geworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
cGFzcygiUGF1c2VkIGluIGJyYW5jaGluZyBzdGFjayB0cmFjZS4iKTsKKyAgICAgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiQWZ0ZXJUZXN0RnVuY3Rp
b24iKS50aGVuKHJlc29sdmUsIHJlamVjdCk7CisKKyAgICAgICAgICAgIGxldCByZXBlYXRDb3Vu
dCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYXN5bmNTdGFja1RyYWNlRGVwdGg7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0ZXN0QnJhbmNoaW5nVHJ1
bmNhdGUoJHtyZXBlYXRDb3VudH0pYCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRl
LnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0cyBmb3IgdHJ1bmNhdGVkIGFzeW5jIHN0YWNrIHRy
YWNlcy48L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313965</attachid>
            <date>2017-06-27 17:41:06 -0700</date>
            <delta_ts>2017-06-30 16:57:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173840-20170627174106.patch</filename>
            <type>text/plain</type>
            <size>6657</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZDVhNGI3Yzg1NDdjYWQwZDg5MjIyZDllYzcyMmNkMzU0YzIxZWMzLi4yZGFiOTNiZmQ4ZDFjOTUx
NDE5ODc2MWU1MjViYTQ2ZTY4MTBmYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxNy0wNi0yNyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQXN5bmNTdGFja1RyYWNlIG5vZGVzIGNhbiBiZSBj
b3JydXB0ZWQgd2hlbiB0cnVuY2F0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzM4NDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwODQwODIw
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
dHJ1bmNhdGluZyBhbiBhc3luY2hyb25vdXMgc3RhY2sgdHJhY2UsIHRoZSBwYXJlbnQgY2hhaW4g
aXMgdHJhdmVyc2VkCisgICAgICAgIHVudGlsIGEgbG9ja2VkIG5vZGUgaXMgZm91bmQuIFRoZSBw
YXRoIGZyb20gdGhpcyBub2RlIHRvIHRoZSByb290IGlzIHNoYXJlZAorICAgICAgICBieSBtb3Jl
IHRoYW4gb25lIHN0YWNrIHRyYWNlLCBhbmQgY2Fubm90IGJlIHNhZmVseSBtb2RpZmllZC4gU3Rh
cnRpbmcgYXQKKyAgICAgICAgdGhlIGZpcnN0IGxvY2tlZCBub2RlLCB0aGUgcGF0aCBpcyBjbG9u
ZWQgYW5kIGJlY29tZXMgYSBuZXcgc3RhY2sgdHJhY2UgdHJlZS4KKworICAgICAgICBIb3dldmVy
LCB0aGUgY2xvbmUgb3BlcmF0aW9uIGluaXRpYWxpemVkIGVhY2ggbmV3IEFzeW5jU3RhY2tUcmFj
ZSBub2RlIHdpdGgKKyAgICAgICAgdGhlIG9yaWdpbmFsIG5vZGUncyBwYXJlbnQuIFRoaXMgd291
bGQgaW5jcmVtZW50IHRoZSBjaGlsZCBjb3VudCBvZiB0aGUgb3JpZ2luYWwKKyAgICAgICAgbm9k
ZS4gV2hlbiBjbG9uaW5nIG5vZGVzLCBuZXcgbm9kZXMgc2hvdWxkIG5vdCBoYXZlIHRoZWlyIHBh
cmVudCBzZXQgdW50aWwgdGhlCisgICAgICAgIG5leHQgbm9kZSB1cCB0aGUgcGFyZW50IGNoYWlu
IGlzIGNsb25lZC4KKworICAgICAgICAqIGluc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpBc3luY1N0YWNrVHJhY2U6OnRydW5jYXRlKToKKwogMjAxNy0w
Ni0yNyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IENyYXNoIGdlbmVyYXRpbmcgb2JqZWN0IHByZXZpZXcgZm9yIEFycmF5SXRl
cmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5bmNT
dGFja1RyYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQXN5bmNTdGFj
a1RyYWNlLmNwcAppbmRleCA0MDAyOTY0YWNmMDQyNGQwNTU4YjAzMmY1YTQ1MDM2YmQ5NWE4OTRi
Li5iNzY0MDk2Mzc3ZDMxOGU3ODNlMjNjODQ1YTEzNTdmYmRjOTBmMWJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuY3BwCkBAIC0x
NjMsMjIgKzE2MywyNSBAQCB2b2lkIEFzeW5jU3RhY2tUcmFjZTo6dHJ1bmNhdGUoc2l6ZV90IG1h
eERlcHRoKQogICAgIC8vIGNsb25pbmcgdGhlIGxvY2tlZCBwb3J0aW9uIG9mIHRoZSB0cmFjZSAo
dGhlIHBhdGggZnJvbSB0aGUgbG9ja2VkIG5vZGUKICAgICAvLyB0byB0aGUgbmV3IHJvb3QpLiBU
aGUgc3VidHJlZSByb290ZWQgYXQgdGhlIGxhc3QgdW5sb2NrZWQgYW5jZXN0b3IgaXMKICAgICAv
LyB0aGVuIGFwcGVuZGVkIHRvIHRoZSBuZXcgdHJlZS4KLSAgICBhdXRvKiBjdXJyZW50Tm9kZSA9
IGxhc3RVbmxvY2tlZEFuY2VzdG9yOwotICAgIHdoaWxlIChjdXJyZW50Tm9kZS0+bV9wYXJlbnQp
IHsKLSAgICAgICAgYXV0byYgcGFyZW50Tm9kZSA9IGN1cnJlbnROb2RlLT5tX3BhcmVudDsKLSAg
ICAgICAgY3VycmVudE5vZGUtPm1fcGFyZW50ID0gQXN5bmNTdGFja1RyYWNlOjpjcmVhdGUocGFy
ZW50Tm9kZS0+bV9jYWxsU3RhY2suY29weVJlZigpLCB0cnVlLCBwYXJlbnROb2RlLT5tX3BhcmVu
dCk7Ci0gICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPm1fcGFyZW50LmdldCgpOwor
ICAgIGF1dG8qIHByZXZpb3VzTm9kZSA9IGxhc3RVbmxvY2tlZEFuY2VzdG9yOwogCi0gICAgICAg
IGlmIChwYXJlbnROb2RlLmdldCgpID09IG5ld1N0YWNrVHJhY2VSb290KQorICAgIC8vIFRoZSBz
dWJ0cmVlIGJlaW5nIHRydW5jYXRlZCBtdXN0IGJlIHJlbW92ZWQgZnJvbSBpdCdzIHBhcmVudCBi
ZWZvcmUKKyAgICAvLyB1cGRhdGluZyBpdHMgcGFyZW50IHBvaW50ZXIgY2hhaW4uCisgICAgYXV0
byogc291cmNlTm9kZSA9IGxhc3RVbmxvY2tlZEFuY2VzdG9yLT5tX3BhcmVudC5nZXQoKTsKKyAg
ICBsYXN0VW5sb2NrZWRBbmNlc3Rvci0+cmVtb3ZlKCk7CisKKyAgICB3aGlsZSAoc291cmNlTm9k
ZSkgeworICAgICAgICBwcmV2aW91c05vZGUtPm1fcGFyZW50ID0gQXN5bmNTdGFja1RyYWNlOjpj
cmVhdGUoc291cmNlTm9kZS0+bV9jYWxsU3RhY2suY29weVJlZigpLCB0cnVlLCBudWxscHRyKTsK
KyAgICAgICAgcHJldmlvdXNOb2RlLT5tX3BhcmVudC0+bV9jaGlsZENvdW50ID0gMTsKKyAgICAg
ICAgcHJldmlvdXNOb2RlID0gcHJldmlvdXNOb2RlLT5tX3BhcmVudC5nZXQoKTsKKworICAgICAg
ICBpZiAoc291cmNlTm9kZSA9PSBuZXdTdGFja1RyYWNlUm9vdCkKICAgICAgICAgICAgIGJyZWFr
OwotICAgIH0KIAotICAgIGN1cnJlbnROb2RlLT5tX3RydW5jYXRlZCA9IHRydWU7Ci0gICAgY3Vy
cmVudE5vZGUtPnJlbW92ZSgpOworICAgICAgICBzb3VyY2VOb2RlID0gc291cmNlTm9kZS0+bV9w
YXJlbnQuZ2V0KCk7CisgICAgfQogCi0gICAgLy8gRGVjcmVtZW50IHRoZSBjaGlsZCBjb3VudCBv
ZiB0aGUgZmlyc3QgbG9ja2VkIGFuY2VzdG9yIGFmdGVyIHJlbW92aW5nIGl0cyBzdWJ0cmVlLgot
ICAgIGF1dG8mIGZpcnN0TG9ja2VkQW5jZXN0b3IgPSBsYXN0VW5sb2NrZWRBbmNlc3Rvci0+bV9w
YXJlbnQ7Ci0gICAgZmlyc3RMb2NrZWRBbmNlc3Rvci0+bV9jaGlsZENvdW50LS07CisgICAgcHJl
dmlvdXNOb2RlLT5tX3RydW5jYXRlZCA9IHRydWU7CiB9CiAKIHZvaWQgQXN5bmNTdGFja1RyYWNl
OjpyZW1vdmUoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGE2NWZlMzY0Njk1YWY1OTEzNDQyODBmZmIwYmE2Njc2MmM5OTc2
NjMuLjRmMzJkNmMyMTQ4MTkzZWYyNDAyZjY5NjBiNDU3ZjcyZWU1NjkyMDAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNy0wNi0yNyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQXN5bmNTdGFja1RyYWNlIG5vZGVzIGNhbiBiZSBj
b3JydXB0ZWQgd2hlbiB0cnVuY2F0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzM4NDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwODQwODIw
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBh
IHRlc3QgZm9yIHRydW5jYXRpbmcgYSBicmFuY2hpbmcgYXN5bmNocm9ub3VzIHN0YWNrIHRyYWNl
LgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3RydW5jYXRlLWFzeW5jLXN0YWNrLXRy
YWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Ry
dW5jYXRlLWFzeW5jLXN0YWNrLXRyYWNlLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA2LTI3ICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogQ3Jhc2ggZ2VuZXJhdGluZyBvYmplY3QgcHJldmlldyBmb3IgQXJyYXlJdGVyYXRvcgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RydW5jYXRlLWFzeW5jLXN0
YWNrLXRyYWNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90
cnVuY2F0ZS1hc3luYy1zdGFjay10cmFjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjcyOWQ1
MGUwYTBiZjBjYTI5MGNkNWNmZmQ5OTkyZjJiNTA2NTg0NQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90cnVuY2F0ZS1hc3luYy1zdGFjay10cmFjZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitUZXN0cyBmb3IgdHJ1bmNhdGVkIGFzeW5jIHN0
YWNrIHRyYWNlcy4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IEFzeW5jU3RhY2tUcmFjZS50
cnVuY2F0ZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IFRydW5jYXRlQnJhbmNoaW5nU3RhY2tUcmFj
ZQorUEFTUzogUGF1c2VkIGluIGJyYW5jaGluZyBzdGFjayB0cmFjZS4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RydW5jYXRlLWFzeW5jLXN0YWNrLXRyYWNl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdHJ1bmNhdGUtYXN5bmMtc3Rh
Y2stdHJhY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjRiYzI1M2M0YjBkZmQ4NjA1ZjJlYmNjMzJjZjE1
YmE2OTUyNGVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3RydW5jYXRlLWFzeW5jLXN0YWNrLXRyYWNlLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFk
b2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2xvZy1hY3RpdmUtc3RhY2stdHJhY2UuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3RCcmFuY2hpbmdUcnVuY2F0ZShyZXBlYXRDb3VudCkgewor
ICAgIGxldCBjb3VudCA9IDA7CisgICAgZnVuY3Rpb24gcmVwZWF0KCkgeworICAgICAgICBpZiAo
Y291bnQrKyA9PT0gcmVwZWF0Q291bnQpIHsKKyAgICAgICAgICAgIGRlYnVnZ2VyOworICAgICAg
ICAgICAgVGVzdFBhZ2UuZGlzcGF0Y2hFdmVudFRvRnJvbnRlbmQoIkFmdGVyVGVzdEZ1bmN0aW9u
Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzZXRJbnRlcnZh
bCgoKSA9PiB7fSwgMTAwMCk7CisgICAgICAgIHNldFRpbWVvdXQocmVwZWF0LCAwKTsKKyAgICB9
CisgICAgc2V0VGltZW91dChyZXBlYXQsIDApOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkFzeW5jU3RhY2tU
cmFjZS50cnVuY2F0ZSIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiVHJ1bmNhdGVCcmFuY2hpbmdTdGFja1RyYWNlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJD
aGVjayB0aGF0IGJyYW5jaGluZyBzdGFjayB0cmFjZXMgY2FuIGJlIHRydW5jYXRlZC4iLAorICAg
ICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyTWFuYWdlci5hd2FpdEV2ZW50KFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZl
bnQuUGF1c2VkKQorICAgICAgICAgICAgLnRoZW4oKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJQYXVzZWQgaW4gYnJhbmNoaW5nIHN0YWNrIHRyYWNlLiIp
OworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50
KCJBZnRlclRlc3RGdW5jdGlvbiIpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKworICAgICAgICAg
ICAgbGV0IHJlcGVhdENvdW50ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hc3luY1N0
YWNrVHJhY2VEZXB0aDsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
YHRlc3RCcmFuY2hpbmdUcnVuY2F0ZSgke3JlcGVhdENvdW50fSlgKTsKKyAgICAgICAgfQorICAg
IH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3RzIGZvciB0cnVuY2F0
ZWQgYXN5bmMgc3RhY2sgdHJhY2VzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314326</attachid>
            <date>2017-06-30 16:57:13 -0700</date>
            <delta_ts>2017-06-30 19:56:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173840-20170630165713.patch</filename>
            <type>text/plain</type>
            <size>6603</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MGY4ZTcyZWVkZTY0M2U1OTdjZWZhYWJmZmYzNDEyNThmOTNlMmQ0Li4yNGRhY2Q0MTlhZjA0NzQ4
NGZjODcwZWFhZWZiNzJjZTg5OTJlYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxNy0wNi0zMCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQXN5bmNTdGFja1RyYWNlIG5vZGVzIGNhbiBiZSBj
b3JydXB0ZWQgd2hlbiB0cnVuY2F0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzM4NDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwODQwODIw
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KKworICAgICAgICBXaGVu
IHRydW5jYXRpbmcgYW4gYXN5bmNocm9ub3VzIHN0YWNrIHRyYWNlLCB0aGUgcGFyZW50IGNoYWlu
IGlzIHRyYXZlcnNlZAorICAgICAgICB1bnRpbCBhIGxvY2tlZCBub2RlIGlzIGZvdW5kLiBUaGUg
cGF0aCBmcm9tIHRoaXMgbm9kZSB0byB0aGUgcm9vdCBpcyBzaGFyZWQKKyAgICAgICAgYnkgbW9y
ZSB0aGFuIG9uZSBzdGFjayB0cmFjZSwgYW5kIGNhbm5vdCBiZSBzYWZlbHkgbW9kaWZpZWQuIFN0
YXJ0aW5nIGF0CisgICAgICAgIHRoZSBmaXJzdCBsb2NrZWQgbm9kZSwgdGhlIHBhdGggaXMgY2xv
bmVkIGFuZCBiZWNvbWVzIGEgbmV3IHN0YWNrIHRyYWNlIHRyZWUuCisKKyAgICAgICAgSG93ZXZl
ciwgdGhlIGNsb25lIG9wZXJhdGlvbiBpbml0aWFsaXplZCBlYWNoIG5ldyBBc3luY1N0YWNrVHJh
Y2Ugbm9kZSB3aXRoCisgICAgICAgIHRoZSBvcmlnaW5hbCBub2RlJ3MgcGFyZW50LiBUaGlzIHdv
dWxkIGluY3JlbWVudCB0aGUgY2hpbGQgY291bnQgb2YgdGhlIG9yaWdpbmFsCisgICAgICAgIG5v
ZGUuIFdoZW4gY2xvbmluZyBub2RlcywgbmV3IG5vZGVzIHNob3VsZCBub3QgaGF2ZSB0aGVpciBw
YXJlbnQgc2V0IHVudGlsIHRoZQorICAgICAgICBuZXh0IG5vZGUgdXAgdGhlIHBhcmVudCBjaGFp
biBpcyBjbG9uZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmNwcDoK
KyAgICAgICAgKEluc3BlY3Rvcjo6QXN5bmNTdGFja1RyYWNlOjp0cnVuY2F0ZSk6CisKIDIwMTct
MDYtMzAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQjNNb3Zl
Q29uc3RhbnRzIGZsb2F0WmVybygpIHJldHVybnMgdGhlIHdyb25nIFZhbHVlS2V5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0FzeW5jU3RhY2tUcmFjZS5jcHAKaW5k
ZXggNDAwMjk2NGFjZjA0MjRkMDU1OGIwMzJmNWE0NTAzNmJkOTVhODk0Yi4uYjc2NDA5NjM3N2Qz
MThlNzgzZTIzYzg0NWExMzU3ZmJkYzkwZjFiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Bc3luY1N0YWNrVHJhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvQXN5bmNTdGFja1RyYWNlLmNwcApAQCAtMTYzLDIyICsxNjMsMjUg
QEAgdm9pZCBBc3luY1N0YWNrVHJhY2U6OnRydW5jYXRlKHNpemVfdCBtYXhEZXB0aCkKICAgICAv
LyBjbG9uaW5nIHRoZSBsb2NrZWQgcG9ydGlvbiBvZiB0aGUgdHJhY2UgKHRoZSBwYXRoIGZyb20g
dGhlIGxvY2tlZCBub2RlCiAgICAgLy8gdG8gdGhlIG5ldyByb290KS4gVGhlIHN1YnRyZWUgcm9v
dGVkIGF0IHRoZSBsYXN0IHVubG9ja2VkIGFuY2VzdG9yIGlzCiAgICAgLy8gdGhlbiBhcHBlbmRl
ZCB0byB0aGUgbmV3IHRyZWUuCi0gICAgYXV0byogY3VycmVudE5vZGUgPSBsYXN0VW5sb2NrZWRB
bmNlc3RvcjsKLSAgICB3aGlsZSAoY3VycmVudE5vZGUtPm1fcGFyZW50KSB7Ci0gICAgICAgIGF1
dG8mIHBhcmVudE5vZGUgPSBjdXJyZW50Tm9kZS0+bV9wYXJlbnQ7Ci0gICAgICAgIGN1cnJlbnRO
b2RlLT5tX3BhcmVudCA9IEFzeW5jU3RhY2tUcmFjZTo6Y3JlYXRlKHBhcmVudE5vZGUtPm1fY2Fs
bFN0YWNrLmNvcHlSZWYoKSwgdHJ1ZSwgcGFyZW50Tm9kZS0+bV9wYXJlbnQpOwotICAgICAgICBj
dXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLT5tX3BhcmVudC5nZXQoKTsKKyAgICBhdXRvKiBwcmV2
aW91c05vZGUgPSBsYXN0VW5sb2NrZWRBbmNlc3RvcjsKIAotICAgICAgICBpZiAocGFyZW50Tm9k
ZS5nZXQoKSA9PSBuZXdTdGFja1RyYWNlUm9vdCkKKyAgICAvLyBUaGUgc3VidHJlZSBiZWluZyB0
cnVuY2F0ZWQgbXVzdCBiZSByZW1vdmVkIGZyb20gaXQncyBwYXJlbnQgYmVmb3JlCisgICAgLy8g
dXBkYXRpbmcgaXRzIHBhcmVudCBwb2ludGVyIGNoYWluLgorICAgIGF1dG8qIHNvdXJjZU5vZGUg
PSBsYXN0VW5sb2NrZWRBbmNlc3Rvci0+bV9wYXJlbnQuZ2V0KCk7CisgICAgbGFzdFVubG9ja2Vk
QW5jZXN0b3ItPnJlbW92ZSgpOworCisgICAgd2hpbGUgKHNvdXJjZU5vZGUpIHsKKyAgICAgICAg
cHJldmlvdXNOb2RlLT5tX3BhcmVudCA9IEFzeW5jU3RhY2tUcmFjZTo6Y3JlYXRlKHNvdXJjZU5v
ZGUtPm1fY2FsbFN0YWNrLmNvcHlSZWYoKSwgdHJ1ZSwgbnVsbHB0cik7CisgICAgICAgIHByZXZp
b3VzTm9kZS0+bV9wYXJlbnQtPm1fY2hpbGRDb3VudCA9IDE7CisgICAgICAgIHByZXZpb3VzTm9k
ZSA9IHByZXZpb3VzTm9kZS0+bV9wYXJlbnQuZ2V0KCk7CisKKyAgICAgICAgaWYgKHNvdXJjZU5v
ZGUgPT0gbmV3U3RhY2tUcmFjZVJvb3QpCiAgICAgICAgICAgICBicmVhazsKLSAgICB9CiAKLSAg
ICBjdXJyZW50Tm9kZS0+bV90cnVuY2F0ZWQgPSB0cnVlOwotICAgIGN1cnJlbnROb2RlLT5yZW1v
dmUoKTsKKyAgICAgICAgc291cmNlTm9kZSA9IHNvdXJjZU5vZGUtPm1fcGFyZW50LmdldCgpOwor
ICAgIH0KIAotICAgIC8vIERlY3JlbWVudCB0aGUgY2hpbGQgY291bnQgb2YgdGhlIGZpcnN0IGxv
Y2tlZCBhbmNlc3RvciBhZnRlciByZW1vdmluZyBpdHMgc3VidHJlZS4KLSAgICBhdXRvJiBmaXJz
dExvY2tlZEFuY2VzdG9yID0gbGFzdFVubG9ja2VkQW5jZXN0b3ItPm1fcGFyZW50OwotICAgIGZp
cnN0TG9ja2VkQW5jZXN0b3ItPm1fY2hpbGRDb3VudC0tOworICAgIHByZXZpb3VzTm9kZS0+bV90
cnVuY2F0ZWQgPSB0cnVlOwogfQogCiB2b2lkIEFzeW5jU3RhY2tUcmFjZTo6cmVtb3ZlKCkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA5YTVmNTJmMWU3NDBmNDIwMjUxZTVjY2RiMDVmYmVhZTczZWI4NTk2Li43MjcxZjU1NGIz
NmI4MGU0ZjNkYjY2M2JmMTAwNTk0ZTk1Njc3MjM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTctMDYtMzAgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IEFzeW5jU3RhY2tUcmFjZSBub2RlcyBjYW4gYmUgY29ycnVwdGVkIHdoZW4g
dHJ1bmNhdGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTczODQwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDg0MDgyMD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgQWRkIGEgdGVzdCBmb3IgdHJ1
bmNhdGluZyBhIGJyYW5jaGluZyBhc3luY2hyb25vdXMgc3RhY2sgdHJhY2UuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvZGVidWdnZXIvdHJ1bmNhdGUtYXN5bmMtc3RhY2stdHJhY2UtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvdHJ1bmNhdGUtYXN5bmMt
c3RhY2stdHJhY2UuaHRtbDogQWRkZWQuCisKIDIwMTctMDYtMzAgIE1hdHQgTGV3aXMgIDxqbGV3
aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJrZWQgdGVzdCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZV9nZXRLZXkuaHRtbCBhcyBmbGFr
eS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90cnVuY2F0ZS1h
c3luYy1zdGFjay10cmFjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvdHJ1bmNhdGUtYXN5bmMtc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY3MjlkNTBlMGEwYmYwY2EyOTBjZDVjZmZkOTk5MmYyYjUwNjU4NDUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdHJ1bmNhdGUtYXN5bmMtc3RhY2st
dHJhY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVGVzdHMgZm9yIHRydW5jYXRlZCBh
c3luYyBzdGFjayB0cmFjZXMuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBBc3luY1N0YWNr
VHJhY2UudHJ1bmNhdGUKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBUcnVuY2F0ZUJyYW5jaGluZ1N0
YWNrVHJhY2UKK1BBU1M6IFBhdXNlZCBpbiBicmFuY2hpbmcgc3RhY2sgdHJhY2UuCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90cnVuY2F0ZS1hc3luYy1zdGFj
ay10cmFjZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RydW5jYXRlLWFz
eW5jLXN0YWNrLXRyYWNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQyZTk1YjE5NmRkZGMyZWQzM2E2ZTFj
ZjFiYzI2YmEzODgzN2MxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci90cnVuY2F0ZS1hc3luYy1zdGFjay10cmFjZS5odG1sCkBAIC0wLDAgKzEsNDkg
QEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3RCcmFuY2hpbmdUcnVuY2F0ZShyZXBlYXRDb3VudCkg
eworICAgIGxldCBjb3VudCA9IDA7CisgICAgZnVuY3Rpb24gcmVwZWF0KCkgeworICAgICAgICBp
ZiAoY291bnQrKyA9PT0gcmVwZWF0Q291bnQpIHsKKyAgICAgICAgICAgIGRlYnVnZ2VyOworICAg
ICAgICAgICAgVGVzdFBhZ2UuZGlzcGF0Y2hFdmVudFRvRnJvbnRlbmQoIkFmdGVyVGVzdEZ1bmN0
aW9uIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzZXRJbnRl
cnZhbCgoKSA9PiB7fSwgMTAwMCk7CisgICAgICAgIHNldFRpbWVvdXQocmVwZWF0LCAwKTsKKyAg
ICB9CisgICAgc2V0VGltZW91dChyZXBlYXQsIDApOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkFzeW5jU3Rh
Y2tUcmFjZS50cnVuY2F0ZSIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiVHJ1bmNhdGVCcmFuY2hpbmdTdGFja1RyYWNlIiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJDaGVjayB0aGF0IGJyYW5jaGluZyBzdGFjayB0cmFjZXMgY2FuIGJlIHRydW5jYXRlZC4iLAor
ICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTWFuYWdlci5hd2FpdEV2ZW50KFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIu
RXZlbnQuUGF1c2VkKQorICAgICAgICAgICAgLnRoZW4oKGV2ZW50KSA9PiB7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5wYXNzKCJQYXVzZWQgaW4gYnJhbmNoaW5nIHN0YWNrIHRyYWNl
LiIpOworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIucmVzdW1l
KCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2
ZW50KCJBZnRlclRlc3RGdW5jdGlvbiIpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKworICAgICAg
ICAgICAgbGV0IHJlcGVhdENvdW50ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hc3lu
Y1N0YWNrVHJhY2VEZXB0aDsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoYHRlc3RCcmFuY2hpbmdUcnVuY2F0ZSgke3JlcGVhdENvdW50fSlgKTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3RzIGZvciB0cnVu
Y2F0ZWQgYXN5bmMgc3RhY2sgdHJhY2VzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>