<?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>187836</bug_id>
          
          <creation_ts>2018-07-19 17:56:42 -0700</creation_ts>
          <short_desc>Conservatively make Object.assign&apos;s fast path do a two phase protocol of loading everything then storing everything to try to prevent a crash</short_desc>
          <delta_ts>2018-07-19 21:48:00 -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>
          
          <blocked>187837</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1443625</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-07-19 17:56:42 -0700</bug_when>
    <thetext>We&apos;re crashing here, and my best hypothesis of why is something like:
- we end up transitioning the structure of the source when we do the put (maybe we even end up flattening the dictionary structure, since we end up seeing a null butterfly). This could happen maybe if we fire a watchpoint during that loop.
- I&apos;m not able to reproduce this, but we can guarantee it doesn&apos;t transition under us if we first do all loads, then do all stores</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443626</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-19 18:01:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/41357620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443633</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-19 18:11:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/42409527&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443636</commentid>
    <comment_count>3</comment_count>
      <attachid>345414</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-07-19 18:21:54 -0700</bug_when>
    <thetext>Created attachment 345414
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443637</commentid>
    <comment_count>4</comment_count>
      <attachid>345414</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-07-19 18:22:58 -0700</bug_when>
    <thetext>Comment on attachment 345414
patch

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

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        butterfly. Which is curious, because source&apos;s Structure indicated that it has

Going to change:
Which is curious =&gt; This is curious</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443639</commentid>
    <comment_count>5</comment_count>
      <attachid>345414</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-19 18:34:18 -0700</bug_when>
    <thetext>Comment on attachment 345414
patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        - We end up firing a watchpoint when assining to the target (this can happen

/assining/assigning/

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:340
&gt; -            Structure* structure = source-&gt;structure(vm);
&gt; -            if (canPerformFastPropertyEnumerationForObjectAssign(structure)) {
&gt; +            if (canPerformFastPropertyEnumerationForObjectAssign(source-&gt;structure(vm))) {

I think you should still cache the structure above.

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:354
&gt; +                source-&gt;structure(vm)-&gt;forEachProperty(vm, [&amp;] (const PropertyMapEntry&amp; entry) -&gt; bool {

Use the cached structure here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443640</commentid>
    <comment_count>6</comment_count>
      <attachid>345414</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-07-19 18:37:35 -0700</bug_when>
    <thetext>Comment on attachment 345414
patch

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

&gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:340
&gt;&gt; +            if (canPerformFastPropertyEnumerationForObjectAssign(source-&gt;structure(vm))) {
&gt; 
&gt; I think you should still cache the structure above.

LLVM will CSE this

&gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:354
&gt;&gt; +                source-&gt;structure(vm)-&gt;forEachProperty(vm, [&amp;] (const PropertyMapEntry&amp; entry) -&gt; bool {
&gt; 
&gt; Use the cached structure here.

so it will do this for us. I didn&apos;t want someone to make the mistake of writing code that depends on Structure, since the hypothesis here is it will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443645</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-07-19 18:47:02 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #6)
&gt; Comment on attachment 345414 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=345414&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:340
&gt; &gt;&gt; +            if (canPerformFastPropertyEnumerationForObjectAssign(source-&gt;structure(vm))) {
&gt; &gt; 
&gt; &gt; I think you should still cache the structure above.
&gt; 
&gt; LLVM will CSE this
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:354
&gt; &gt;&gt; +                source-&gt;structure(vm)-&gt;forEachProperty(vm, [&amp;] (const PropertyMapEntry&amp; entry) -&gt; bool {
&gt; &gt; 
&gt; &gt; Use the cached structure here.
&gt; 
&gt; so it will do this for us. I didn&apos;t want someone to make the mistake of
&gt; writing code that depends on Structure, since the hypothesis here is it will
&gt; change.

will =&gt; can</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443646</commentid>
    <comment_count>8</comment_count>
      <attachid>345417</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-07-19 18:53:10 -0700</bug_when>
    <thetext>Created attachment 345417
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443678</commentid>
    <comment_count>9</comment_count>
      <attachid>345417</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-19 21:47:58 -0700</bug_when>
    <thetext>Comment on attachment 345417
patch for landing

Clearing flags on attachment: 345417

Committed r234022: &lt;https://trac.webkit.org/changeset/234022&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1443679</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-19 21:48:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345414</attachid>
            <date>2018-07-19 18:21:54 -0700</date>
            <delta_ts>2018-07-19 18:53:10 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>4613</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM0MDE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE4LTA3LTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENvbnNlcnZhdGl2ZWx5IG1ha2UgT2JqZWN0LmFzc2lnbidzIGZhc3QgcGF0aCBkbyBhIHR3byBw
aGFzZSBwcm90b2NvbCBvZiBsb2FkaW5nIGV2ZXJ5dGhpbmcgdGhlbiBzdG9yaW5nIGV2ZXJ5dGhp
bmcgdG8gdHJ5IHRvIHByZXZlbnQgYSBjcmFzaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3ODM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjQw
OTUyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZSBoYXZlIGNyYXNoIHJlcG9ydHMgdGhhdCB3ZSdyZSBjcmFzaGluZyBvbiBzb3VyY2UtPmdldERp
cmVjdCBpbiBPYmplY3QuYXNzaWduJ3MKKyAgICAgICAgZmFzdCBwYXRoLiBNYXJrIGludmVzdGln
YXRlZCB0aGlzIGFuZCBkZXRlcm1pbmVkIHdlIGVuZCB1cCB3aXRoIGEgbnVsbHB0ciBmb3IKKyAg
ICAgICAgYnV0dGVyZmx5LiBXaGljaCBpcyBjdXJpb3VzLCBiZWNhdXNlIHNvdXJjZSdzIFN0cnVj
dHVyZSBpbmRpY2F0ZWQgdGhhdCBpdCBoYXMKKyAgICAgICAgb3V0IG9mIGxpbmUgcHJvcGVydGll
cy4gTXkgbGVhZGluZyBoeXBvdGhlc2lzIGZvciB0aGlzIGF0IHRoZSBtb21lbnQgaXMgYSBiaXQK
KyAgICAgICAgaGFuZHdhdnksIGJ1dCBpdCdzIGVzc2VudGlhbGx5OgorICAgICAgICAtIFdlIGVu
ZCB1cCBmaXJpbmcgYSB3YXRjaHBvaW50IHdoZW4gYXNzaW5pbmcgdG8gdGhlIHRhcmdldCAodGhp
cyBjYW4gaGFwcGVuCisgICAgICAgIGlmIGEgd2F0Y2hwb2ludCB3YXMgc2V0IHVwIGZvciBzdG9y
aW5nIHRvIHRoYXQgcGFydGljdWxhciBmaWVsZCkKKyAgICAgICAgLSBXaGVuIHdlIGZpcmUgdGhh
dCB3YXRjaHBvaW50LCB3ZSBlbmQgdXAgZG9pbmcgc29tZSBraW5kIHdvcmsgb24gdGhlIHNvdXJj
ZSwKKyAgICAgICAgcGVyaGFwcyBjYXVzaW5nIGl0IHRvIGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0
dXJlLiBUaGVyZWZvcmUsIHdlIGVuZCB1cAorICAgICAgICBtdXRhdGluZyBzb3VyY2UuCisgICAg
ICAgIAorICAgICAgICBJJ20gbm90IHN1cGVyIGNvbnZpbmNlZCB0aGlzIGlzIHdoYXQgd2UncmUg
cnVubmluZyBpbnRvLCBidXQganVzdCBieSByZWFkaW5nCisgICAgICAgIHRoZSBjb2RlLCBJIHRo
aW5rIGl0IG5lZWRzIHRvIGJlIHNvbWV0aGluZyBzaW1pbGFyIHRvIHRoaXMuIFNlZWluZyBpZiB0
aGlzIGNoYW5nZQorICAgICAgICBmaXhlcyB0aGUgY3Jhc2hlciB3aWxsIGdpdmUgdXMgZ29vZCBk
YXRhIHRvIGRldGVybWluZSBpZiBzb21ldGhpbmcgbGlrZSB0aGlzIGlzCisgICAgICAgIGhhcHBl
bmluZyBvciBpZiB0aGUgYnVnIGlzIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5LgorCisgICAgICAg
ICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENv
bnN0cnVjdG9yQXNzaWduKToKKwogMjAxOC0wNy0xOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzMzk5
OC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIzNDAxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDI0
ICszMzcsNDEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzb3VyY2UtPnN0cnVjdHVyZSh2bSk7Ci0gICAgICAgICAg
ICBpZiAoY2FuUGVyZm9ybUZhc3RQcm9wZXJ0eUVudW1lcmF0aW9uRm9yT2JqZWN0QXNzaWduKHN0
cnVjdHVyZSkpIHsKKyAgICAgICAgICAgIGlmIChjYW5QZXJmb3JtRmFzdFByb3BlcnR5RW51bWVy
YXRpb25Gb3JPYmplY3RBc3NpZ24oc291cmNlLT5zdHJ1Y3R1cmUodm0pKSkgewogICAgICAgICAg
ICAgICAgIC8vIHxzb3VyY2V8IFN0cnVjdHVyZSBkb2VzIG5vdCBoYXZlIGFueSBnZXR0ZXJzLiBB
bmQgdGFyZ2V0IGNhbiBwZXJmb3JtIGZhc3QgcHV0LgogICAgICAgICAgICAgICAgIC8vIFNvIGVu
dW1lcmF0aW5nIHByb3BlcnRpZXMgYW5kIHB1dHRpbmcgcHJvcGVydGllcyBhcmUgbm9uIG9ic2Vy
dmFibGUuCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlLT5mb3JFYWNoUHJvcGVydHkodm0sIFsm
XSAoY29uc3QgUHJvcGVydHlNYXBFbnRyeSYgZW50cnkpIC0+IGJvb2wgeworCisgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IEl0IGRvZXNuJ3Qgc2VlbSBsaWtlIHdlIHNob3VsZCBoYXZlIHRvIGRv
IHRoaXMgaW4gdHdvIHBoYXNlcywgYnV0CisgICAgICAgICAgICAgICAgLy8gd2UncmUgcnVubmlu
ZyBpbnRvIGNyYXNoZXMgd2hlcmUgaXQgYXBwZWFycyB0aGF0IHNvdXJjZSBpcyB0cmFuc2l0aW9u
aW5nCisgICAgICAgICAgICAgICAgLy8gdW5kZXIgdXMsIGFuZCBldmVuIGVuZHMgdXAgaW4gYSBz
dGF0ZSB3aGVyZSBpdCBoYXMgYSBudWxsIGJ1dHRlcmZseS4gTXkKKyAgICAgICAgICAgICAgICAv
LyBsZWFkaW5nIGh5cG90aGVzaXMgaGVyZSBpcyB0aGF0IHdlIGZpcmUgc29tZSB2YWx1ZSByZXBs
YWNlbWVudCB3YXRjaHBvaW50CisgICAgICAgICAgICAgICAgLy8gdGhhdCBlbmRzIHVwIHRyYW5z
aXRpb25pbmcgdGhlIHN0cnVjdHVyZSB1bmRlcm5lYXRoIHVzLgorICAgICAgICAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc4MzcKKworICAgICAg
ICAgICAgICAgIFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCA4PiBwcm9wZXJ0aWVz
OworICAgICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIHZhbHVlczsKKworICAgICAg
ICAgICAgICAgIHNvdXJjZS0+c3RydWN0dXJlKHZtKS0+Zm9yRWFjaFByb3BlcnR5KHZtLCBbJl0g
KGNvbnN0IFByb3BlcnR5TWFwRW50cnkmIGVudHJ5KSAtPiBib29sIHsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKGVudHJ5LmF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAgICAgICAg
ICAgICBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKGVudHJ5LmtleSk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNQcml2YXRlTmFtZSgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICBwcm9wZXJ0aWVzLmFwcGVuZChlbnRyeS5rZXkpOworICAgICAgICAgICAgICAgICAg
ICB2YWx1ZXMuYXBwZW5kV2l0aENyYXNoT25PdmVyZmxvdyhzb3VyY2UtPmdldERpcmVjdChlbnRy
eS5vZmZzZXQpKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB9KTsKIAorICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJv
cGVydGllcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ug
Y291bGQgcHV0IHByb3BlcnRpZXMgaW4gYSBiYXRjaGluZyBtYW5uZXIgdG8gYWNjZWxlcmF0ZSBP
YmplY3QuYXNzaWduIG1vcmUuCiAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUzNTgKICAgICAgICAgICAgICAgICAgICAgUHV0
UHJvcGVydHlTbG90IHB1dFByb3BlcnR5U2xvdCh0YXJnZXQsIHRydWUpOwotICAgICAgICAgICAg
ICAgICAgICB0YXJnZXQtPnB1dE93bkRhdGFQcm9wZXJ0eSh2bSwgcHJvcGVydHlOYW1lLCBzb3Vy
Y2UtPmdldERpcmVjdChlbnRyeS5vZmZzZXQpLCBwdXRQcm9wZXJ0eVNsb3QpOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICAgICAgdGFyZ2V0LT5wdXRPd25EYXRhUHJvcGVydHkodm0sIHByb3BlcnRpZXNbaV0uZ2V0
KCksIHZhbHVlcy5hdChpKSwgcHV0UHJvcGVydHlTbG90KTsKKyAgICAgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQo=
</data>
<flag name="review"
          id="363367"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345417</attachid>
            <date>2018-07-19 18:53:10 -0700</date>
            <delta_ts>2018-07-19 21:47:58 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>7430</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM0MDE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE4LTA3LTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENvbnNlcnZhdGl2ZWx5IG1ha2UgT2JqZWN0LmFzc2lnbidzIGZhc3QgcGF0aCBkbyBhIHR3byBw
aGFzZSBwcm90b2NvbCBvZiBsb2FkaW5nIGV2ZXJ5dGhpbmcgdGhlbiBzdG9yaW5nIGV2ZXJ5dGhp
bmcgdG8gdHJ5IHRvIHByZXZlbnQgYSBjcmFzaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3ODM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjQw
OTUyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICBXZSBoYXZl
IGNyYXNoIHJlcG9ydHMgdGhhdCB3ZSdyZSBjcmFzaGluZyBvbiBzb3VyY2UtPmdldERpcmVjdCBp
biBPYmplY3QuYXNzaWduJ3MKKyAgICAgICAgZmFzdCBwYXRoLiBNYXJrIGludmVzdGlnYXRlZCB0
aGlzIGFuZCBkZXRlcm1pbmVkIHdlIGVuZCB1cCB3aXRoIGEgbnVsbHB0ciBmb3IKKyAgICAgICAg
YnV0dGVyZmx5LiBUaGlzIGlzIGN1cmlvdXMsIGJlY2F1c2Ugc291cmNlJ3MgU3RydWN0dXJlIGlu
ZGljYXRlZCB0aGF0IGl0IGhhcworICAgICAgICBvdXQgb2YgbGluZSBwcm9wZXJ0aWVzLiBNeSBs
ZWFkaW5nIGh5cG90aGVzaXMgZm9yIHRoaXMgYXQgdGhlIG1vbWVudCBpcyBhIGJpdAorICAgICAg
ICBoYW5kd2F2eSwgYnV0IGl0J3MgZXNzZW50aWFsbHk6CisgICAgICAgIC0gV2UgZW5kIHVwIGZp
cmluZyBhIHdhdGNocG9pbnQgd2hlbiBhc3NpZ25pbmcgdG8gdGhlIHRhcmdldCAodGhpcyBjYW4g
aGFwcGVuCisgICAgICAgIGlmIGEgd2F0Y2hwb2ludCB3YXMgc2V0IHVwIGZvciBzdG9yaW5nIHRv
IHRoYXQgcGFydGljdWxhciBmaWVsZCkKKyAgICAgICAgLSBXaGVuIHdlIGZpcmUgdGhhdCB3YXRj
aHBvaW50LCB3ZSBlbmQgdXAgZG9pbmcgc29tZSBraW5kIHdvcmsgb24gdGhlIHNvdXJjZSwKKyAg
ICAgICAgcGVyaGFwcyBjYXVzaW5nIGl0IHRvIGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlLiBU
aGVyZWZvcmUsIHdlIGVuZCB1cAorICAgICAgICBtdXRhdGluZyBzb3VyY2UuCisgICAgICAgIAor
ICAgICAgICBJJ20gbm90IHN1cGVyIGNvbnZpbmNlZCB0aGlzIGlzIHdoYXQgd2UncmUgcnVubmlu
ZyBpbnRvLCBidXQganVzdCBieSByZWFkaW5nCisgICAgICAgIHRoZSBjb2RlLCBJIHRoaW5rIGl0
IG5lZWRzIHRvIGJlIHNvbWV0aGluZyBzaW1pbGFyIHRvIHRoaXMuIFNlZWluZyBpZiB0aGlzIGNo
YW5nZQorICAgICAgICBmaXhlcyB0aGUgY3Jhc2hlciB3aWxsIGdpdmUgdXMgZ29vZCBkYXRhIHRv
IGRldGVybWluZSBpZiBzb21ldGhpbmcgbGlrZSB0aGlzIGlzCisgICAgICAgIGhhcHBlbmluZyBv
ciBpZiB0aGUgYnVnIGlzIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5LgorCisgICAgICAgICogcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVj
dG9yQXNzaWduKToKKwogMjAxOC0wNy0xOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzMzk5OC4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDIzNDAxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE4LDQzICszMTgs
NjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogICAgICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGF1dG8gY2FuUGVyZm9ybUZhc3RQcm9wZXJ0eUVudW1lcmF0aW9uRm9yT2Jq
ZWN0QXNzaWduID0gW10gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChz
dHJ1Y3R1cmUtPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IElu
ZGV4ZWQgcHJvcGVydGllcyBjYW4gYmUgaGFuZGxlZC4KLSAgICAgICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1MzU4Ci0gICAgICAgICAgICAg
ICAgaWYgKGhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKHN0
cnVjdHVyZS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNVbmNhY2hl
YWJsZURpY3Rpb25hcnkoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgIC8vIENhbm5vdCBwZXJmb3JtIGZhc3QgW1tQdXRdXSB0byB8dGFyZ2V0fCBp
ZiB0aGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIHxzb3VyY2V8IGNvbnRhaW4gIl9fcHJvdG9fXyIu
Ci0gICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzVW5kZXJzY29yZVByb3RvUHJvcGVy
dHlFeGNsdWRpbmdPcmlnaW5hbFByb3RvKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc291cmNlLT5zdHJ1Y3R1cmUodm0pOwot
ICAgICAgICAgICAgaWYgKGNhblBlcmZvcm1GYXN0UHJvcGVydHlFbnVtZXJhdGlvbkZvck9iamVj
dEFzc2lnbihzdHJ1Y3R1cmUpKSB7Ci0gICAgICAgICAgICAgICAgLy8gfHNvdXJjZXwgU3RydWN0
dXJlIGRvZXMgbm90IGhhdmUgYW55IGdldHRlcnMuIEFuZCB0YXJnZXQgY2FuIHBlcmZvcm0gZmFz
dCBwdXQuCi0gICAgICAgICAgICAgICAgLy8gU28gZW51bWVyYXRpbmcgcHJvcGVydGllcyBhbmQg
cHV0dGluZyBwcm9wZXJ0aWVzIGFyZSBub24gb2JzZXJ2YWJsZS4KLSAgICAgICAgICAgICAgICBz
dHJ1Y3R1cmUtPmZvckVhY2hQcm9wZXJ0eSh2bSwgWyZdIChjb25zdCBQcm9wZXJ0eU1hcEVudHJ5
JiBlbnRyeSkgLT4gYm9vbCB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS5hdHRyaWJ1
dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBib29sIGNhbkRvRmFzdFBhdGg7CisgICAgICAg
ICAgICBWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgOD4gcHJvcGVydGllczsKKyAg
ICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIHZhbHVlczsKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBhdXRvIGNhblBlcmZvcm1GYXN0UHJvcGVydHlFbnVtZXJhdGlvbkZvck9i
amVjdEFzc2lnbiA9IFtdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldFByb3BlcnR5TmFt
ZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IEluZGV4ZWQgcHJvcGVydGllcyBjYW4gYmUgaGFuZGxlZC4KKyAg
ICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NTM1OAorICAgICAgICAgICAgICAgICAgICBpZiAoaGFzSW5kZXhlZFByb3BlcnRpZXMo
c3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0dldHRlclNl
dHRlclByb3BlcnRpZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25h
cnkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQ2Fubm90IHBlcmZvcm0gZmFzdCBbW1B1dF1dIHRvIHx0YXJnZXR8IGlmIHRo
ZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgfHNvdXJjZXwgY29udGFpbiAiX19wcm90b19fIi4KKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzVW5kZXJzY29yZVByb3RvUHJvcGVy
dHlFeGNsdWRpbmdPcmlnaW5hbFByb3RvKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
ICAgIH07CisKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHNvdXJjZS0+
c3RydWN0dXJlKHZtKTsKKyAgICAgICAgICAgICAgICBjYW5Eb0Zhc3RQYXRoID0gY2FuUGVyZm9y
bUZhc3RQcm9wZXJ0eUVudW1lcmF0aW9uRm9yT2JqZWN0QXNzaWduKHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICAgICAgaWYgKGNhbkRvRmFzdFBhdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
fHNvdXJjZXwgU3RydWN0dXJlIGRvZXMgbm90IGhhdmUgYW55IGdldHRlcnMuIEFuZCB0YXJnZXQg
Y2FuIHBlcmZvcm0gZmFzdCBwdXQuCisgICAgICAgICAgICAgICAgICAgIC8vIFNvIGVudW1lcmF0
aW5nIHByb3BlcnRpZXMgYW5kIHB1dHRpbmcgcHJvcGVydGllcyBhcmUgbm9uIG9ic2VydmFibGUu
CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEl0IGRvZXNuJ3Qgc2VlbSBsaWtlIHdl
IHNob3VsZCBoYXZlIHRvIGRvIHRoaXMgaW4gdHdvIHBoYXNlcywgYnV0CisgICAgICAgICAgICAg
ICAgICAgIC8vIHdlJ3JlIHJ1bm5pbmcgaW50byBjcmFzaGVzIHdoZXJlIGl0IGFwcGVhcnMgdGhh
dCBzb3VyY2UgaXMgdHJhbnNpdGlvbmluZworICAgICAgICAgICAgICAgICAgICAvLyB1bmRlciB1
cywgYW5kIGV2ZW4gZW5kcyB1cCBpbiBhIHN0YXRlIHdoZXJlIGl0IGhhcyBhIG51bGwgYnV0dGVy
Zmx5LiBNeQorICAgICAgICAgICAgICAgICAgICAvLyBsZWFkaW5nIGh5cG90aGVzaXMgaGVyZSBp
cyB0aGF0IHdlIGZpcmUgc29tZSB2YWx1ZSByZXBsYWNlbWVudCB3YXRjaHBvaW50CisgICAgICAg
ICAgICAgICAgICAgIC8vIHRoYXQgZW5kcyB1cCB0cmFuc2l0aW9uaW5nIHRoZSBzdHJ1Y3R1cmUg
dW5kZXJuZWF0aCB1cy4KKyAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzgzNworCisgICAgICAgICAgICAgICAgICAgIHN0cnVj
dHVyZS0+Zm9yRWFjaFByb3BlcnR5KHZtLCBbJl0gKGNvbnN0IFByb3BlcnR5TWFwRW50cnkmIGVu
dHJ5KSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS5hdHRyaWJ1
dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKGVudHJ5LmtleSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
cHJvcGVydHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvcGVydGllcy5hcHBlbmQoZW50cnkua2V5KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlcy5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KHNvdXJjZS0+Z2V0RGlyZWN0
KGVudHJ5Lm9mZnNldCkpOwogCi0gICAgICAgICAgICAgICAgICAgIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUoZW50cnkua2V5KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5TmFt
ZS5pc1ByaXZhdGVOYW1lKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQogCisgICAgICAgICAgICBpZiAoY2FuRG9GYXN0UGF0aCkgeworICAgICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydGllcy5zaXplKCk7ICsraSkgewogICAgICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgcHV0IHByb3BlcnRpZXMgaW4gYSBiYXRjaGlu
ZyBtYW5uZXIgdG8gYWNjZWxlcmF0ZSBPYmplY3QuYXNzaWduIG1vcmUuCiAgICAgICAgICAgICAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODUzNTgK
ICAgICAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHB1dFByb3BlcnR5U2xvdCh0YXJn
ZXQsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICB0YXJnZXQtPnB1dE93bkRhdGFQcm9wZXJ0
eSh2bSwgcHJvcGVydHlOYW1lLCBzb3VyY2UtPmdldERpcmVjdChlbnRyeS5vZmZzZXQpLCBwdXRQ
cm9wZXJ0eVNsb3QpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT5wdXRPd25EYXRhUHJvcGVy
dHkodm0sIHByb3BlcnRpZXNbaV0uZ2V0KCksIHZhbHVlcy5hdChpKSwgcHV0UHJvcGVydHlTbG90
KTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>