<?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>188151</bug_id>
          
          <creation_ts>2018-07-29 15:45:44 -0700</creation_ts>
          <short_desc>We should zero unused property storage when rebalancing array storage.</short_desc>
          <delta_ts>2018-09-26 11:57:40 -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>JavaScriptCore</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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1446137</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-29 15:45:44 -0700</bug_when>
    <thetext>When putting a new property, JSObject::prepareToPutDirectWithoutTransition() and JSObject::putDirectInternal() currently always asserts that the target slot contains an effectively empty value (and is safe for GC scanning).  This assertion may be false if the slot is from the existing butterfly and not a newly allocated one.  For example, an array splice operation may shift entries in the existing butterfly, and therefore, result in unused property slots containing valid values.  As a result, the slot for the new property may already contain a non-empty value (before the put) that is safe for GC.  But because it is non-empty, it will fail the assertion.

We should fix the assertion to only do this empty check if the butterfly is actually newly allocated.

&lt;rdar://problem/42020385&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446140</commentid>
    <comment_count>1</comment_count>
      <attachid>346046</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-29 15:59:40 -0700</bug_when>
    <thetext>Created attachment 346046
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446143</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-07-29 17:17:39 -0700</bug_when>
    <thetext>Maybe I’m missing something here but it feels like this patch is loosing a lot of the value of the assertion.

Also, you say that slot has a valid value. But is it guaranteed to be scanned during GC even if it’s an unused slot?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446157</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-29 23:19:09 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #2)
&gt; Maybe I’m missing something here but it feels like this patch is loosing a
&gt; lot of the value of the assertion.

There&apos;s a more conservative way I can do this, that is: when asserts are enabled, nullify the shifted out slot when splicing.  I&apos;ll look into that.

&gt; Also, you say that slot has a valid value. But is it guaranteed to be
&gt; scanned during GC even if it’s an unused slot?

I should also double check this.  If your stipulation is true, then these assertions may be meaningless entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446158</commentid>
    <comment_count>4</comment_count>
      <attachid>346046</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-29 23:19:50 -0700</bug_when>
    <thetext>Comment on attachment 346046
proposed patch.

r- while I investigate additional details brought up by Saam.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446161</commentid>
    <comment_count>5</comment_count>
      <attachid>346046</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-07-29 23:39:16 -0700</bug_when>
    <thetext>Comment on attachment 346046
proposed patch.

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

&gt; Source/JavaScriptCore/runtime/JSObjectInlines.h:210
&gt; +            ASSERT(!needToAllocateNewButterfly || getDirect(offset).isEffectivelyEmptyAndSafeForGCScanning());

This is wrong.

It&apos;s wrong to ever have bits that look like a cell in an unused slot. The slot may or may not get scanned do to raciness of our GC. So if it an unused slot had a stale cell in it we might deference scavenged or otherwise bad memory and crash.

&gt; Source/JavaScriptCore/runtime/JSObjectInlines.h:337
&gt; +        ASSERT(!needToAllocateNewButterfly || getDirect(offset).isEffectivelyEmptyAndSafeForGCScanning());

ditto.

&gt; Source/JavaScriptCore/runtime/JSObjectInlines.h:394
&gt; +    ASSERT(!needToAllocateNewButterfly || getDirect(offset).isEffectivelyEmptyAndSafeForGCScanning());

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446321</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-07-30 13:00:46 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #3)
&gt; (In reply to Saam Barati from comment #2)
&gt; &gt; Maybe I’m missing something here but it feels like this patch is loosing a
&gt; &gt; lot of the value of the assertion.
&gt; 
&gt; There&apos;s a more conservative way I can do this, that is: when asserts are
&gt; enabled, nullify the shifted out slot when splicing.  I&apos;ll look into that.
&gt; 
&gt; &gt; Also, you say that slot has a valid value. But is it guaranteed to be
&gt; &gt; scanned during GC even if it’s an unused slot?
&gt; 
&gt; I should also double check this.  If your stipulation is true, then these
&gt; assertions may be meaningless entirely.

I didn&apos;t mean entirely. I just mean the splice case here. Do we skip the dead space in butterfly from splice when visiting or no? (I think we call that area the precapacity?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463666</commentid>
    <comment_count>7</comment_count>
      <attachid>350877</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-09-26 11:53:37 -0700</bug_when>
    <thetext>Created attachment 350877
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463667</commentid>
    <comment_count>8</comment_count>
      <attachid>350877</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-09-26 11:55:33 -0700</bug_when>
    <thetext>Comment on attachment 350877
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463670</commentid>
    <comment_count>9</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-09-26 11:57:40 -0700</bug_when>
    <thetext>Committed r236514: &lt;https://trac.webkit.org/changeset/236514&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346046</attachid>
            <date>2018-07-29 15:59:40 -0700</date>
            <delta_ts>2018-09-26 11:53:36 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-188151.patch</filename>
            <type>text/plain</type>
            <size>7916</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzQzNDkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE4LTA3LTI5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBXZSBzaG91bGQgb25seSBhc3NlcnQgYSBzbG90IGZvciBwdXR0aW5nIGEg
bmV3IHByb3BlcnR5IGlzIGVtcHR5IGlmIGl0IGlzIGZyb20gYSBuZXdseSBhbGxvY2F0ZWQgYnV0
dGVyZmx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg4MTUxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjAyMDM4NT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9yZWdyZXNzLTE4ODE1
MS5qczogQWRkZWQuCisKIDIwMTgtMDctMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gUmVjb3JkIENvVyBzdGF0dXMgaW4gQXJyYXlQcm9m
aWxlIGNvcnJlY3RseQpJbmRleDogSlNUZXN0cy9zdHJlc3MvcmVncmVzcy0xODgxNTEuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvcmVncmVzcy0xODgxNTEuanMJKG5vbmV4aXN0ZW50
KQorKysgSlNUZXN0cy9zdHJlc3MvcmVncmVzcy0xODgxNTEuanMJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMCBAQAorLy8gVGhpcyB0ZXN0IHNob3VsZCBub3QgY3Jhc2guCisKK3ZhciBhcnIg
PSBbNCwgNSwgNl07CithcnIucHVzaCgxMCk7CithcnIucG9wKCk7CitPYmplY3QuZGVmaW5lUHJv
cGVydHkoYXJyLCAiZm9vIiwgeyB2YWx1ZTogMHg0MiB9KQorCithcnIuc2hpZnQoKQorYXJyLnNw
bGljZSgwLCAwLCAxMSwgMTIpCitPYmplY3QuZGVmaW5lUHJvcGVydHkoYXJyLCAiYmFyIiwgeyB2
YWx1ZTogMHgyNCB9KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQz
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTgtMDctMjkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgorCisgICAgICAgIFdlIHNob3VsZCBvbmx5IGFzc2VydCBhIHNsb3QgZm9yIHB1dHRpbmcgYSBu
ZXcgcHJvcGVydHkgaXMgZW1wdHkgaWYgaXQgaXMgZnJvbSBhIG5ld2x5IGFsbG9jYXRlZCBidXR0
ZXJmbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODgxNTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQyMDIwMzg1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gcHV0dGluZyBhIG5ldyBwcm9w
ZXJ0eSwgSlNPYmplY3Q6OnByZXBhcmVUb1B1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKCkgYW5k
CisgICAgICAgIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgpIGN1cnJlbnRseSBhbHdheXMg
YXNzZXJ0cyB0aGF0IHRoZSB0YXJnZXQgc2xvdAorICAgICAgICBjb250YWlucyBhbiBlZmZlY3Rp
dmVseSBlbXB0eSB2YWx1ZSAoYW5kIGlzIHNhZmUgZm9yIEdDIHNjYW5uaW5nKSBiZWZvcmUgdGhl
IHB1dC4KKyAgICAgICAgVGhpcyBhc3NlcnRpb24gbWF5IGJlIGZhbHNlIGlmIHRoZSBzbG90IGlz
IGZyb20gdGhlIGV4aXN0aW5nIGJ1dHRlcmZseSBhbmQgbm90IGEKKyAgICAgICAgbmV3bHkgYWxs
b2NhdGVkIG9uZS4KKworICAgICAgICBGb3IgZXhhbXBsZSwgYW4gYXJyYXkgc3BsaWNlIG9wZXJh
dGlvbiBtYXkgc2hpZnQgZW50cmllcyBpbiB0aGUgZXhpc3RpbmcKKyAgICAgICAgYnV0dGVyZmx5
LCBhbmQgdGhlcmVmb3JlLCByZXN1bHQgaW4gdW51c2VkIHByb3BlcnR5IHNsb3RzIGNvbnRhaW5p
bmcgdmFsaWQKKyAgICAgICAgdmFsdWVzLiAgQXMgYSByZXN1bHQsIHRoZSBzbG90IGZvciB0aGUg
bmV3IHByb3BlcnR5IG1heSBhbHJlYWR5IGNvbnRhaW4gYQorICAgICAgICBub24tZW1wdHkgdmFs
dWUgKGJlZm9yZSB0aGUgcHV0KSB0aGF0IGlzIHNhZmUgZm9yIEdDLiAgQnV0IGJlY2F1c2UgaXQg
aXMKKyAgICAgICAgbm9uLWVtcHR5LCBpdCB3aWxsIGZhaWwgdGhlIGFzc2VydGlvbi4KKworICAg
ICAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBhc3NlcnRpb24gdG8gb25seSBkbyB0aGlzIGVtcHR5
IGNoZWNrIGlmIHRoZSBidXR0ZXJmbHkgaXMKKyAgICAgICAgYWN0dWFsbHkgbmV3bHkgYWxsb2Nh
dGVkLgorCisgICAgICAgIFdlIGFsc28gaW50cm9kdWNlIGEgSlNWYWx1ZTo6aXNFZmZlY3RpdmVs
eUVtcHR5QW5kU2FmZUZvckdDU2Nhbm5pbmcoKSB0byBiZXR0ZXIKKyAgICAgICAgZG9jdW1lbnQg
d2hhdCB0aGF0IGNoZWNrIGlzIGFjdHVhbGx5IGRvaW5nLgorCisgICAgICAgICogcnVudGltZS9K
U0NKU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpKU1ZhbHVlOjppc0VmZmVjdGl2ZWx5RW1wdHlBbmRTYWZlRm9yR0NTY2Fubmlu
ZyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnByZXBhcmVUb1B1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKwogMjAxOC0wNy0yNyAg
TWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHNvbWUgY3Jhc2gg
aW5mbyB0byBIZWFwOjpjaGVja0Nvbm4oKSBSRUxFQVNFX0FTU0VSVHMuCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCShyZXZpc2lvbiAyMzQzNDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzOSw2ICsyMzksOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVGFy
Z2V0PiBib29sIGluaGVyaXRzKFZNJikgY29uc3Q7CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFz
c0luZm9Pck51bGwoVk0mKSBjb25zdDsKICAgICAgICAgCisgICAgYm9vbCBpc0VmZmVjdGl2ZWx5
RW1wdHlBbmRTYWZlRm9yR0NTY2FubmluZygpIGNvbnN0OworCiAgICAgLy8gRXh0cmFjdGluZyB0
aGUgdmFsdWUuCiAgICAgYm9vbCBnZXRTdHJpbmcoRXhlY1N0YXRlKiwgV1RGOjpTdHJpbmcmKSBj
b25zdDsKICAgICBXVEY6OlN0cmluZyBnZXRTdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7IC8vIG51
bGwgc3RyaW5nIGlmIG5vdCBhIHN0cmluZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAyMzQzNDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MjcsNiArNTI3LDExIEBAIEFMV0FZU19JTkxJTkUgSlNDZWxsKiBKU1ZhbHVl
Ojphc0NlbGwoKSAKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKK2lubGluZSBib29sIEpT
VmFsdWU6OmlzRWZmZWN0aXZlbHlFbXB0eUFuZFNhZmVGb3JHQ1NjYW5uaW5nKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gISp0aGlzIHx8ICF1LmFzSW50NjQ7Cit9CisKIGlubGluZSBpbnQ2NF90IHRy
eUNvbnZlcnRUb0ludDUyKGRvdWJsZSBudW1iZXIpCiB7CiAgICAgaWYgKG51bWJlciAhPSBudW1i
ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElu
bGluZXMuaAkocmV2aXNpb24gMjM0MzQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw3ICsxOTUsOCBAQCBB
TFdBWVNfSU5MSU5FIFByb3BlcnR5T2Zmc2V0IEpTT2JqZWN0OjpwCiAgICAgICAgIHZtLCBwcm9w
ZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsCiAgICAgICAgIFsmXSAoY29uc3QgR0NTYWZlQ29uY3VycmVu
dEpTTG9ja2VyJiwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBQcm9wZXJ0eU9mZnNldCBuZXdMYXN0
T2Zmc2V0KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBuZXdPdXRPZkxpbmVDYXBhY2l0eSA9IFN0
cnVjdHVyZTo6b3V0T2ZMaW5lQ2FwYWNpdHkobmV3TGFzdE9mZnNldCk7Ci0gICAgICAgICAgICBp
ZiAobmV3T3V0T2ZMaW5lQ2FwYWNpdHkgIT0gb2xkT3V0T2ZMaW5lQ2FwYWNpdHkpIHsKKyAgICAg
ICAgICAgIGJvb2wgbmVlZFRvQWxsb2NhdGVOZXdCdXR0ZXJmbHkgPSAobmV3T3V0T2ZMaW5lQ2Fw
YWNpdHkgIT0gb2xkT3V0T2ZMaW5lQ2FwYWNpdHkpOworICAgICAgICAgICAgaWYgKG5lZWRUb0Fs
bG9jYXRlTmV3QnV0dGVyZmx5KSB7CiAgICAgICAgICAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJm
bHkgPSBhbGxvY2F0ZU1vcmVPdXRPZkxpbmVTdG9yYWdlKHZtLCBvbGRPdXRPZkxpbmVDYXBhY2l0
eSwgbmV3T3V0T2ZMaW5lQ2FwYWNpdHkpOwogICAgICAgICAgICAgICAgIG51a2VTdHJ1Y3R1cmVB
bmRTZXRCdXR0ZXJmbHkodm0sIHN0cnVjdHVyZUlELCBidXR0ZXJmbHkpOwogICAgICAgICAgICAg
ICAgIHN0cnVjdHVyZS0+c2V0TGFzdE9mZnNldChuZXdMYXN0T2Zmc2V0KTsKQEAgLTIwNiw3ICsy
MDcsNyBAQCBBTFdBWVNfSU5MSU5FIFByb3BlcnR5T2Zmc2V0IEpTT2JqZWN0OjpwCiAKICAgICAg
ICAgICAgIC8vIFRoaXMgYXNzZXJ0aW9uIHZlcmlmaWVzIHRoYXQgdGhlIGNvbmN1cnJlbnQgR0Mg
d29uJ3QgcmVhZCBnYXJiYWdlIGlmIHRoZSBjb25jdXJyZW50R0MKICAgICAgICAgICAgIC8vIGlz
IHJ1bm5pbmcgYXQgdGhlIHNhbWUgdGltZSB3ZSBwdXQgd2l0aG91dCB0cmFuc2l0aW9uaW5nLgot
ICAgICAgICAgICAgQVNTRVJUKCFnZXREaXJlY3Qob2Zmc2V0KSB8fCAhSlNWYWx1ZTo6ZW5jb2Rl
KGdldERpcmVjdChvZmZzZXQpKSk7CisgICAgICAgICAgICBBU1NFUlQoIW5lZWRUb0FsbG9jYXRl
TmV3QnV0dGVyZmx5IHx8IGdldERpcmVjdChvZmZzZXQpLmlzRWZmZWN0aXZlbHlFbXB0eUFuZFNh
ZmVGb3JHQ1NjYW5uaW5nKCkpOwogICAgICAgICAgICAgcmVzdWx0ID0gb2Zmc2V0OwogICAgICAg
ICB9KTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzIxLDcgKzMyMiw4IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW4KICAgICAgICAgICAgIHZtLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBzbG90LmNvbnRleHQoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWQpOwog
ICAgICAgICAKICAgICAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBidXR0ZXJmbHkoKTsK
LSAgICAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNh
cGFjaXR5KCkpIHsKKyAgICAgICAgYm9vbCBuZWVkVG9BbGxvY2F0ZU5ld0J1dHRlcmZseSA9IChj
dXJyZW50Q2FwYWNpdHkgIT0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAg
ICAgICAgaWYgKG5lZWRUb0FsbG9jYXRlTmV3QnV0dGVyZmx5KSB7CiAgICAgICAgICAgICBBU1NF
UlQobmV3U3RydWN0dXJlICE9IHRoaXMtPnN0cnVjdHVyZSh2bSkpOwogICAgICAgICAgICAgbmV3
QnV0dGVyZmx5ID0gYWxsb2NhdGVNb3JlT3V0T2ZMaW5lU3RvcmFnZSh2bSwgY3VycmVudENhcGFj
aXR5LCBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOwogICAgICAgICAgICAgbnVr
ZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSh2bSwgc3RydWN0dXJlSUQsIG5ld0J1dHRlcmZseSk7
CkBAIC0zMzIsNyArMzM0LDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXREaXJl
Y3RJbgogCiAgICAgICAgIC8vIFRoaXMgYXNzZXJ0aW9uIHZlcmlmaWVzIHRoYXQgdGhlIGNvbmN1
cnJlbnQgR0Mgd29uJ3QgcmVhZCBnYXJiYWdlIGlmIHRoZSBjb25jdXJyZW50R0MKICAgICAgICAg
Ly8gaXMgcnVubmluZyBhdCB0aGUgc2FtZSB0aW1lIHdlIHB1dCB3aXRob3V0IHRyYW5zaXRpb25p
bmcuCi0gICAgICAgIEFTU0VSVCghZ2V0RGlyZWN0KG9mZnNldCkgfHwgIUpTVmFsdWU6OmVuY29k
ZShnZXREaXJlY3Qob2Zmc2V0KSkpOworICAgICAgICBBU1NFUlQoIW5lZWRUb0FsbG9jYXRlTmV3
QnV0dGVyZmx5IHx8IGdldERpcmVjdChvZmZzZXQpLmlzRWZmZWN0aXZlbHlFbXB0eUFuZFNhZmVG
b3JHQ1NjYW5uaW5nKCkpOwogICAgICAgICBwdXREaXJlY3Qodm0sIG9mZnNldCwgdmFsdWUpOwog
ICAgICAgICBzZXRTdHJ1Y3R1cmUodm0sIG5ld1N0cnVjdHVyZSk7CiAgICAgICAgIHNsb3Quc2V0
TmV3UHJvcGVydHkodGhpcywgb2Zmc2V0KTsKQEAgLTM4MSwxNCArMzgzLDE1IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW4KICAgICBzaXplX3Qgb2xkQ2FwYWNpdHkg
PSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgc2l6ZV90IG5ld0NhcGFjaXR5
ID0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOwogICAgIEFTU0VSVChvbGRDYXBh
Y2l0eSA8PSBuZXdDYXBhY2l0eSk7Ci0gICAgaWYgKG9sZENhcGFjaXR5ICE9IG5ld0NhcGFjaXR5
KSB7CisgICAgYm9vbCBuZWVkVG9BbGxvY2F0ZU5ld0J1dHRlcmZseSA9IChvbGRDYXBhY2l0eSAh
PSBuZXdDYXBhY2l0eSk7CisgICAgaWYgKG5lZWRUb0FsbG9jYXRlTmV3QnV0dGVyZmx5KSB7CiAg
ICAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gYWxsb2NhdGVNb3JlT3V0T2ZMaW5lU3Rv
cmFnZSh2bSwgb2xkQ2FwYWNpdHksIG5ld0NhcGFjaXR5KTsKICAgICAgICAgbnVrZVN0cnVjdHVy
ZUFuZFNldEJ1dHRlcmZseSh2bSwgc3RydWN0dXJlSUQsIG5ld0J1dHRlcmZseSk7CiAgICAgfQog
CiAgICAgLy8gVGhpcyBhc3NlcnRpb24gdmVyaWZpZXMgdGhhdCB0aGUgY29uY3VycmVudCBHQyB3
b24ndCByZWFkIGdhcmJhZ2UgaWYgdGhlIGNvbmN1cnJlbnRHQwogICAgIC8vIGlzIHJ1bm5pbmcg
YXQgdGhlIHNhbWUgdGltZSB3ZSBwdXQgd2l0aG91dCB0cmFuc2l0aW9uaW5nLgotICAgIEFTU0VS
VCghZ2V0RGlyZWN0KG9mZnNldCkgfHwgIUpTVmFsdWU6OmVuY29kZShnZXREaXJlY3Qob2Zmc2V0
KSkpOworICAgIEFTU0VSVCghbmVlZFRvQWxsb2NhdGVOZXdCdXR0ZXJmbHkgfHwgZ2V0RGlyZWN0
KG9mZnNldCkuaXNFZmZlY3RpdmVseUVtcHR5QW5kU2FmZUZvckdDU2Nhbm5pbmcoKSk7CiAgICAg
cHV0RGlyZWN0KHZtLCBvZmZzZXQsIHZhbHVlKTsKICAgICBzZXRTdHJ1Y3R1cmUodm0sIG5ld1N0
cnVjdHVyZSk7CiAgICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350877</attachid>
            <date>2018-09-26 11:53:37 -0700</date>
            <delta_ts>2018-09-26 11:55:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188151-20180926145337.patch</filename>
            <type>text/plain</type>
            <size>4030</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NWUwODhlYzc1NWE5MmI1YThlYjI3ZDIwNGZhNWUwMjg3MzQyYTJiLi5kMDdmYTY1M2IwNzBhYzMy
Yzg0ZDRlMzZmM2RmNjE5YzYxZDllODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxOC0wOS0yNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBXZSBzaG91bGQgemVybyB1bnVzZWQgcHJvcGVydHkgc3RvcmFnZSB3
aGVuIHJlYmFsYW5jaW5nIGFycmF5IHN0b3JhZ2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbiB1bnNoaWZ0Q291bnRTbG93Q2FzZSB3ZSBzb21ldGlt
ZXMgd2lsbCBtb3ZlIHByb3BlcnR5IHN0b3JhZ2UgdG8gdGhlIHJpZ2h0IGV2ZW4gd2hlbiBuZXQg
YWRkaW5nIGVsZW1lbnRzLgorICAgICAgICBUaGlzIGNhbiBoYXBwZW4gYmVjYXVzZSB3ZSAiYmFs
YW5jZSIgdGhlIHByZS9wb3N0LWNhcGFjaXR5IGluIHRoYXQgY29kZSBzbyB3ZSBuZWVkIHRvIHpl
cm8gdGhlIHVudXNlZAorICAgICAgICBwcm9wZXJ0eSBzdG9yYWdlLgorCisgICAgICAgICogcnVu
dGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50U2xv
d0Nhc2UpOgorCiAyMDE4LTA5LTI2ICBLb2J5IEJveWFuZ28gIDxrb2J5LmJAbWNlLnN5c3RlbXM+
CiAKICAgICAgICAgW0pTQ10gb2ZmbGluZWFzbSBwYXJzZXIgc2hvdWxkIGhhbmRsZSBDUkxGIGlu
IGFzbSBmaWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRl
eCAyYTZjZmY4Zjk2M2FjZTllNTEyY2U1MmViYzM2YWU2MDMxOTg3N2I0Li5hOWUxZTU0NDQyMDIy
ZjUzNjg1NDUyYjYzNzg4NTg0NTUyZTU1MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmNwcApAQCAtNDI0LDEzICs0MjQsMTQgQEAgYm9vbCBKU0FycmF5Ojp1bnNo
aWZ0Q291bnRTbG93Q2FzZShjb25zdCBBYnN0cmFjdExvY2tlciYsIFZNJiB2bSwgRGVmZXJHQyYs
IGJvb2wKICAgICAgICAgbWVtbW92ZShuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX3Zl
Y3RvciArIGNvdW50LCBzdG9yYWdlLT5tX3ZlY3Rvciwgc2l6ZW9mKEpTVmFsdWUpICogdXNlZFZl
Y3Rvckxlbmd0aCk7CiAgICAgICAgIG1lbW1vdmUobmV3QnV0dGVyZmx5LT5wcm9wZXJ0eVN0b3Jh
Z2UoKSAtIHByb3BlcnR5U2l6ZSwgYnV0dGVyZmx5LT5wcm9wZXJ0eVN0b3JhZ2UoKSAtIHByb3Bl
cnR5U2l6ZSwgc2l6ZW9mKEpTVmFsdWUpICogcHJvcGVydHlTaXplICsgc2l6ZW9mKEluZGV4aW5n
SGVhZGVyKSArIEFycmF5U3RvcmFnZTo6c2l6ZUZvcigwKSk7CiAKKyAgICAgICAgLy8gV2UgZG9u
J3QgbmVlZCB0byB6ZXJvIHRoZSBwcmUtY2FwYWNpdHkgZm9yIHRoZSBjb25jdXJyZW50IEdDIGJl
Y2F1c2UgaXQgaXMgbm90IGF2YWlsYWJsZSB0byB1c2UgYXMgcHJvcGVydHkgc3RvcmFnZS4KKyAg
ICAgICAgbWVtc2V0KG5ld0J1dHRlcmZseS0+YmFzZSgwLCBwcm9wZXJ0eUNhcGFjaXR5KSwgMCwg
KHByb3BlcnR5Q2FwYWNpdHkgLSBwcm9wZXJ0eVNpemUpICogc2l6ZW9mKEpTVmFsdWUpKTsKKwog
ICAgICAgICBpZiAoYWxsb2NhdGVkTmV3U3RvcmFnZSkgewogICAgICAgICAgICAgLy8gV2Ugd2ls
bCBzZXQgdGhlIHZlY3Rvckxlbmd0aCB0byBuZXdWZWN0b3JMZW5ndGguIFdlIHBvcHVsYXRlZCBy
ZXF1aXJlZFZlY3Rvckxlbmd0aAogICAgICAgICAgICAgLy8gKHVzZWRWZWN0b3JMZW5ndGggKyBj
b3VudCksIHdoaWNoIGlzIGxlc3MuIENsZWFyIHRoZSBkaWZmZXJlbmNlLgogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gcmVxdWlyZWRWZWN0b3JMZW5ndGg7IGkgPCBuZXdWZWN0b3JMZW5n
dGg7ICsraSkKICAgICAgICAgICAgICAgICBuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5t
X3ZlY3RvcltpXS5jbGVhcigpOwotICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byB6ZXJv
IHRoZSBwcmUtY2FwYWNpdHkgYmVjYXVzZSBpdCBpcyBub3QgYXZhaWxhYmxlIHRvIHVzZSBhcyBw
cm9wZXJ0eSBzdG9yYWdlLgotICAgICAgICAgICAgbWVtc2V0KG5ld0J1dHRlcmZseS0+YmFzZSgw
LCBwcm9wZXJ0eUNhcGFjaXR5KSwgMCwgKHByb3BlcnR5Q2FwYWNpdHkgLSBwcm9wZXJ0eVNpemUp
ICogc2l6ZW9mKEpTVmFsdWUpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoKG5ld0FsbG9j
QmFzZSAhPSBidXR0ZXJmbHktPmJhc2Uoc3RydWN0dXJlKSkgfHwgKHByZUNhcGFjaXR5ICE9IHN0
b3JhZ2UtPm1faW5kZXhCaWFzKSkgewogICAgICAgICBtZW1tb3ZlKG5ld0J1dHRlcmZseS0+cHJv
cGVydHlTdG9yYWdlKCkgLSBwcm9wZXJ0eUNhcGFjaXR5LCBidXR0ZXJmbHktPnByb3BlcnR5U3Rv
cmFnZSgpIC0gcHJvcGVydHlDYXBhY2l0eSwgc2l6ZW9mKEpTVmFsdWUpICogcHJvcGVydHlDYXBh
Y2l0eSArIHNpemVvZihJbmRleGluZ0hlYWRlcikgKyBBcnJheVN0b3JhZ2U6OnNpemVGb3IoMCkp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRl
eCAyOTg0MWYzODJhMGFmMWVhZTE0YmM0OTVlYzdhNWZjNmViMjU2ZTJhLi4yYjE2NTFiMjE1ZmU4
MjIzNDRjNDNlY2QyYWIxOThjZGZlNmE5YjcwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxv
ZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE4LTA5LTI2ICBL
ZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3Vs
ZCB6ZXJvIHVudXNlZCBwcm9wZXJ0eSBzdG9yYWdlIHdoZW4gcmViYWxhbmNpbmcgYXJyYXkgc3Rv
cmFnZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
ODE1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
c3RyZXNzL3NwbGljZS1zaG91bGQtemVyby1wcm9wZXJ0eS1zdG9yYWdlLXdoZW4tcmViYWxhbmNp
bmcuanM6IEFkZGVkLgorCiAyMDE4LTA5LTIwICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtp
QHNsb3dzdGFydC5vcmc+CiAKICAgICAgICAgW0pTQ10gT3B0aW1pemUgQXJyYXkjbGFzdEluZGV4
T2YKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3NwbGljZS1zaG91bGQtemVyby1wcm9wZXJ0
eS1zdG9yYWdlLXdoZW4tcmViYWxhbmNpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9zcGxpY2Utc2hv
dWxkLXplcm8tcHJvcGVydHktc3RvcmFnZS13aGVuLXJlYmFsYW5jaW5nLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU5MmRkNzllODFkM2QxYjY4YTQxNTczOWNjOGFjZWUxZmMxZWRhODYKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9zcGxpY2Utc2hvdWxkLXplcm8tcHJvcGVydHktc3RvcmFnZS13
aGVuLXJlYmFsYW5jaW5nLmpzCkBAIC0wLDAgKzEsOCBAQAordmFyIGFyciA9IFs0LCA1LCA2XTsK
K2Fyci5wdXNoKDEwKTsKK2Fyci5wb3AoKTsKK09iamVjdC5kZWZpbmVQcm9wZXJ0eShhcnIsICJm
b28iLCB7IH0pOworCithcnIuc2hpZnQoKTsKK2Fyci5zcGxpY2UoMCwgMCwgMTAxLCAxMDIpOwor
T2JqZWN0LmRlZmluZVByb3BlcnR5KGFyciwgImJhciIsIHsgfSk7Cg==
</data>
<flag name="review"
          id="368260"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>