<?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>234990</bug_id>
          
          <creation_ts>2022-01-07 14:58:12 -0800</creation_ts>
          <short_desc>JSArray::fastSlice() should not convert the source from CoW</short_desc>
          <delta_ts>2022-01-14 15:50:04 -0800</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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234539</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1829100</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-07 14:58:12 -0800</bug_when>
    <thetext>... since we aren&apos;t modifying it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829634</commentid>
    <comment_count>1</comment_count>
      <attachid>448801</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-10 14:31:03 -0800</bug_when>
    <thetext>Created attachment 448801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829646</commentid>
    <comment_count>2</comment_count>
      <attachid>448801</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-10 15:06:15 -0800</bug_when>
    <thetext>Comment on attachment 448801
Patch

r=me if EWS is happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829655</commentid>
    <comment_count>3</comment_count>
      <attachid>448801</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-10 15:41:15 -0800</bug_when>
    <thetext>Comment on attachment 448801
Patch

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

&gt; Source/JavaScriptCore/runtime/JSArray.cpp:747
&gt; +        Structure* resultStructure = globalObject-&gt;arrayStructureForIndexingTypeDuringAllocation(sourceIndexingMode | IsArray);

Doesn&apos;t it accidentally propagate CoW state if source is CoW?
The result of slice should not be CoW array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829659</commentid>
    <comment_count>4</comment_count>
      <attachid>448806</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-10 15:53:11 -0800</bug_when>
    <thetext>Created attachment 448806
Patch

Unset CopyOnWrite from indexing mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829660</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2022-01-10 15:54:46 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #3)
&gt; Comment on attachment 448801 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448801&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSArray.cpp:747
&gt; &gt; +        Structure* resultStructure = globalObject-&gt;arrayStructureForIndexingTypeDuringAllocation(sourceIndexingMode | IsArray);
&gt; 
&gt; Doesn&apos;t it accidentally propagate CoW state if source is CoW?
&gt; The result of slice should not be CoW array.

You are right.  I actually checked for that during my review, and then got distracted and forgot to follow thru on it.  Thanks for catching this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829661</commentid>
    <comment_count>6</comment_count>
      <attachid>448806</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-10 15:55:15 -0800</bug_when>
    <thetext>Comment on attachment 448806
Patch

(In reply to Mark Lam from comment #2)
&gt; Comment on attachment 448801 [details]
&gt; Patch
&gt; 
&gt; r=me if EWS is happy.

Thanks Mark!
Needs another review I guess.

(In reply to Yusuke Suzuki from comment #3)
&gt; Comment on attachment 448801 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448801&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSArray.cpp:747
&gt; &gt; +        Structure* resultStructure = globalObject-&gt;arrayStructureForIndexingTypeDuringAllocation(sourceIndexingMode | IsArray);
&gt; 
&gt; Doesn&apos;t it accidentally propagate CoW state if source is CoW?
&gt; The result of slice should not be CoW array.

My bad, it does, I didn&apos;t look into arrayStructureForIndexingTypeDuringAllocation() close enough.
JSTests/microbenchmarks/lazy-array-species-watchpoints.js nicely covers the case.
I very much appreciate the tip!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829662</commentid>
    <comment_count>7</comment_count>
      <attachid>448806</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-10 15:56:23 -0800</bug_when>
    <thetext>Comment on attachment 448806
Patch

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

r=me with comment.

&gt; JSTests/stress/array-slice-cow.js:11
&gt; +    return slice;

Can we have a test checking slice is non CoW?

&gt; JSTests/stress/array-slice-cow.js:20
&gt; +    return slice;

Ditto

&gt; JSTests/stress/array-slice-cow.js:29
&gt; +    return slice;

Ditto.

&gt; Source/JavaScriptCore/runtime/JSArray.cpp:736
&gt; +    auto arrayType = (source-&gt;indexingMode() &amp; ~CopyOnWrite) | IsArray;

We should take indexingType() instead of indexingMode(). The difference between IndexingType and IndexingMode is CoW bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829663</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-10 16:01:50 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #7)
&gt; &gt; Source/JavaScriptCore/runtime/JSArray.cpp:736
&gt; &gt; +    auto arrayType = (source-&gt;indexingMode() &amp; ~CopyOnWrite) | IsArray;
&gt; 
&gt; We should take indexingType() instead of indexingMode(). The difference
&gt; between IndexingType and IndexingMode is CoW bit.

I&apos;m likely missing something, but in

  inline IndexingType JSCell::indexingType() const
  {
      return indexingTypeAndMisc() &amp; AllWritableArrayTypes;
  }

doesn&apos;t `&amp; AllWritableArrayTypes` bit exclude both non-JSArrays and CoW?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829665</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-10 16:03:26 -0800</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #8)
&gt; (In reply to Yusuke Suzuki from comment #7)
&gt; &gt; &gt; Source/JavaScriptCore/runtime/JSArray.cpp:736
&gt; &gt; &gt; +    auto arrayType = (source-&gt;indexingMode() &amp; ~CopyOnWrite) | IsArray;
&gt; &gt; 
&gt; &gt; We should take indexingType() instead of indexingMode(). The difference
&gt; &gt; between IndexingType and IndexingMode is CoW bit.
&gt; 
&gt; I&apos;m likely missing something, but in
&gt; 
&gt;   inline IndexingType JSCell::indexingType() const
&gt;   {
&gt;       return indexingTypeAndMisc() &amp; AllWritableArrayTypes;
&gt;   }
&gt; 
&gt; doesn&apos;t `&amp; AllWritableArrayTypes` bit exclude both non-JSArrays and CoW?

Oh no it doesn&apos;t, please disregard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829668</commentid>
    <comment_count>10</comment_count>
      <attachid>448810</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-10 16:10:02 -0800</bug_when>
    <thetext>Created attachment 448810
Patch

Assert that result of fastSlice() is non-CoW and leverage indexingType().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831106</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-14 14:59:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/87620060&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831114</commentid>
    <comment_count>12</comment_count>
      <attachid>448810</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-14 15:31:06 -0800</bug_when>
    <thetext>Comment on attachment 448810
Patch

Thanks again for review, Yusuke! indexingType() is neat.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831115</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-14 15:49:59 -0800</bug_when>
    <thetext>Committed r288036 (246062@main): &lt;https://commits.webkit.org/246062@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448810.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448801</attachid>
            <date>2022-01-10 14:31:03 -0800</date>
            <delta_ts>2022-01-10 15:53:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234990-20220110223101.patch</filename>
            <type>text/plain</type>
            <size>4736</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODc4NTQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDIyLTAxLTEwICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFw
cGxlLmNvbT4KKworICAgICAgICBKU0FycmF5OjpmYXN0U2xpY2UoKSBzaG91bGQgbm90IGNvbnZl
cnQgdGhlIHNvdXJjZSBmcm9tIENvVworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM0OTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzdHJlc3MvYXJyYXktc2xpY2UtY293LmpzOgorCiAyMDIyLTAxLTA3
ICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBhbmQg
dGhlIHNldCBvZiBvYmplY3RzIHdlIHRha2UgSlNBcnJheTo6ZmFzdFNsaWNlKCkgcGF0aCBmb3IK
SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2FycmF5LXNsaWNlLWNvdy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL3N0cmVzcy9hcnJheS1zbGljZS1jb3cuanMJKHJldmlzaW9uIDI4Nzg1MikKKysrIEpT
VGVzdHMvc3RyZXNzL2FycmF5LXNsaWNlLWNvdy5qcwkod29ya2luZyBjb3B5KQpAQCAtNiwyMSAr
NiwyNyBAQCBmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CiBmdW5jdGlvbiB0
ZXN0SW50MzIoKQogewogICAgIHZhciBhcnJheSA9IFswLCAxLCAyLCAzXTsKLSAgICByZXR1cm4g
YXJyYXkuc2xpY2UoMSk7CisgICAgdmFyIHNsaWNlID0gYXJyYXkuc2xpY2UoMSk7CisgICAgc2hv
dWxkQmUoJHZtLmluZGV4aW5nTW9kZShhcnJheSksICJDb3B5T25Xcml0ZUFycmF5V2l0aEludDMy
Iik7CisgICAgcmV0dXJuIHNsaWNlOwogfQogbm9JbmxpbmUodGVzdEludDMyKTsKIAogZnVuY3Rp
b24gdGVzdERvdWJsZSgpCiB7CiAgICAgdmFyIGFycmF5ID0gWzAuMSwgMS4xLCAyLjEsIDMuMV07
Ci0gICAgcmV0dXJuIGFycmF5LnNsaWNlKDEpOworICAgIHZhciBzbGljZSA9IGFycmF5LnNsaWNl
KDEpOworICAgIHNob3VsZEJlKCR2bS5pbmRleGluZ01vZGUoYXJyYXkpLCAiQ29weU9uV3JpdGVB
cnJheVdpdGhEb3VibGUiKTsKKyAgICByZXR1cm4gc2xpY2U7CiB9CiBub0lubGluZSh0ZXN0RG91
YmxlKTsKIAogZnVuY3Rpb24gdGVzdENvbnRpZ3VvdXMoKQogewogICAgIHZhciBhcnJheSA9IFt0
cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2VdOwotICAgIHJldHVybiBhcnJheS5zbGljZSgxKTsKKyAg
ICB2YXIgc2xpY2UgPSBhcnJheS5zbGljZSgxKTsKKyAgICBzaG91bGRCZSgkdm0uaW5kZXhpbmdN
b2RlKGFycmF5KSwgIkNvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cyIpOworICAgIHJldHVy
biBzbGljZTsKIH0KIG5vSW5saW5lKHRlc3RDb250aWd1b3VzKTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODc4NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDEtMTAgIEFs
ZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29tPgorCisgICAgICAgIEpTQXJyYXk6OmZh
c3RTbGljZSgpIHNob3VsZCBub3QgY29udmVydCB0aGUgc291cmNlIGZyb20gQ29XCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5OTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSB3ZSBhcmVuJ3Qg
bW9kaWZ5aW5nIHRoZSBzb3VyY2UgYXJyYXkgaW4gZmFzdFNsaWNlKCkgbm9yIGl0cyBzbG93IHBh
dGgsIHRoZXJlIGlzIG5vCisgICAgICAgIHJlYXNvbiB0byBjb252ZXJ0IGl0IGZyb20gQ29weU9u
V3JpdGUuIEluc3RlYWQsIHRoaXMgcGF0Y2ggZW51bWVyYXRlcyBDb1cgaW5kZXhpbmcgbW9kZXMK
KyAgICAgICAgaW4gYHN3aXRjaGAsIHdoaWxlIGFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbigpIGFscmVhZHkgaGFuZGxlcyB0aGVtLgorCisgICAgICAgICogcnVu
dGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6ZmFzdFNsaWNlKToKKwog
MjAyMi0wMS0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIFN0YXJ0IHVzaW5nIEMrKzIwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjg3ODUyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyOSwyNiArNzI5
LDIyIEBAIEpTQXJyYXkqIEpTQXJyYXk6OmZhc3RTbGljZShKU0dsb2JhbE9iamUKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKLSAgICAvLyBGSVhNRTogQXZvaWQgY29udmVy
dGluZyB0aGUgc291cmNlIGZyb20gQ29XIHNpbmNlIHdlIGFyZW4ndCBtb2RpZnlpbmcgaXQuCi0g
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDk5MAotICAg
IHNvdXJjZS0+ZW5zdXJlV3JpdGFibGUodm0pOwotCiAgICAgU3RydWN0dXJlKiBzb3VyY2VTdHJ1
Y3R1cmUgPSBzb3VyY2UtPnN0cnVjdHVyZSh2bSk7CiAgICAgaWYgKHNvdXJjZVN0cnVjdHVyZS0+
dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBhcnJh
eVR5cGUgPSBzb3VyY2UtPmluZGV4aW5nTW9kZSgpIHwgSXNBcnJheTsKLSAgICBzd2l0Y2ggKGFy
cmF5VHlwZSkgewotICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOgotICAgIGNhc2UgQXJyYXlXaXRo
SW50MzI6Ci0gICAgY2FzZSBBcnJheVdpdGhDb250aWd1b3VzOiB7CisgICAgYXV0byBzb3VyY2VJ
bmRleGluZ01vZGUgPSBzb3VyY2UtPmluZGV4aW5nTW9kZSgpOworICAgIHN3aXRjaCAoc291cmNl
SW5kZXhpbmdNb2RlKSB7CisgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgorICAg
IGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgorICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNf
SU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAgaWYgKGNvdW50ID49IE1JTl9TUEFSU0VfQVJSQVlf
SU5ERVggfHwgc291cmNlU3RydWN0dXJlLT5ob2xlc011c3RGb3J3YXJkVG9Qcm90b3R5cGUodm0s
IHNvdXJjZSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBpZiAoc3Rh
cnRJbmRleCArIGNvdW50ID4gc291cmNlLT5idXR0ZXJmbHkoKS0+dmVjdG9yTGVuZ3RoKCkpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBTdHJ1Y3R1cmUqIHJlc3VsdFN0
cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKGFycmF5VHlwZSk7CisgICAgICAgIFN0cnVjdHVyZSogcmVzdWx0U3RydWN0
dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0Fs
bG9jYXRpb24oc291cmNlSW5kZXhpbmdNb2RlIHwgSXNBcnJheSk7CiAgICAgICAgIGlmIChVTkxJ
S0VMWShoYXNBbnlBcnJheVN0b3JhZ2UocmVzdWx0U3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkp
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTc1OSw3ICs3NTUsNyBAQCBKU0Fy
cmF5KiBKU0FycmF5OjpmYXN0U2xpY2UoSlNHbG9iYWxPYmplCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgICAgICBhdXRvJiByZXN1bHRCdXR0ZXJmbHkgPSAqcmVzdWx0QXJyYXkt
PmJ1dHRlcmZseSgpOwotICAgICAgICBpZiAoYXJyYXlUeXBlID09IEFycmF5V2l0aERvdWJsZSkK
KyAgICAgICAgaWYgKGhhc0RvdWJsZShzb3VyY2VJbmRleGluZ01vZGUpKQogICAgICAgICAgICAg
Z2NTYWZlTWVtY3B5KHJlc3VsdEJ1dHRlcmZseS5jb250aWd1b3VzRG91YmxlKCkuZGF0YSgpLCBz
b3VyY2UtPmJ1dHRlcmZseSgpLT5jb250aWd1b3VzRG91YmxlKCkuZGF0YSgpICsgc3RhcnRJbmRl
eCwgc2l6ZW9mKEpTVmFsdWUpICogc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNvdW50KSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGdjU2FmZU1lbWNweShyZXN1bHRCdXR0ZXJmbHkuY29udGln
dW91cygpLmRhdGEoKSwgc291cmNlLT5idXR0ZXJmbHkoKS0+Y29udGlndW91cygpLmRhdGEoKSAr
IHN0YXJ0SW5kZXgsIHNpemVvZihKU1ZhbHVlKSAqIHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb3Vu
dCkpOwo=
</data>
<flag name="review"
          id="474765"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448806</attachid>
            <date>2022-01-10 15:53:11 -0800</date>
            <delta_ts>2022-01-10 16:09:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234990-20220110235310.patch</filename>
            <type>text/plain</type>
            <size>3226</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODc4NTQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDIyLTAxLTEwICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFw
cGxlLmNvbT4KKworICAgICAgICBKU0FycmF5OjpmYXN0U2xpY2UoKSBzaG91bGQgbm90IGNvbnZl
cnQgdGhlIHNvdXJjZSBmcm9tIENvVworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM0OTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisK
KyAgICAgICAgKiBzdHJlc3MvYXJyYXktc2xpY2UtY293LmpzOgorCiAyMDIyLTAxLTA3ICBBbGV4
ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBhbmQgdGhlIHNl
dCBvZiBvYmplY3RzIHdlIHRha2UgSlNBcnJheTo6ZmFzdFNsaWNlKCkgcGF0aCBmb3IKSW5kZXg6
IEpTVGVzdHMvc3RyZXNzL2FycmF5LXNsaWNlLWNvdy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3Rz
L3N0cmVzcy9hcnJheS1zbGljZS1jb3cuanMJKHJldmlzaW9uIDI4Nzg1MikKKysrIEpTVGVzdHMv
c3RyZXNzL2FycmF5LXNsaWNlLWNvdy5qcwkod29ya2luZyBjb3B5KQpAQCAtNiwyMSArNiwyNyBA
QCBmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CiBmdW5jdGlvbiB0ZXN0SW50
MzIoKQogewogICAgIHZhciBhcnJheSA9IFswLCAxLCAyLCAzXTsKLSAgICByZXR1cm4gYXJyYXku
c2xpY2UoMSk7CisgICAgdmFyIHNsaWNlID0gYXJyYXkuc2xpY2UoMSk7CisgICAgc2hvdWxkQmUo
JHZtLmluZGV4aW5nTW9kZShhcnJheSksICJDb3B5T25Xcml0ZUFycmF5V2l0aEludDMyIik7Cisg
ICAgcmV0dXJuIHNsaWNlOwogfQogbm9JbmxpbmUodGVzdEludDMyKTsKIAogZnVuY3Rpb24gdGVz
dERvdWJsZSgpCiB7CiAgICAgdmFyIGFycmF5ID0gWzAuMSwgMS4xLCAyLjEsIDMuMV07Ci0gICAg
cmV0dXJuIGFycmF5LnNsaWNlKDEpOworICAgIHZhciBzbGljZSA9IGFycmF5LnNsaWNlKDEpOwor
ICAgIHNob3VsZEJlKCR2bS5pbmRleGluZ01vZGUoYXJyYXkpLCAiQ29weU9uV3JpdGVBcnJheVdp
dGhEb3VibGUiKTsKKyAgICByZXR1cm4gc2xpY2U7CiB9CiBub0lubGluZSh0ZXN0RG91YmxlKTsK
IAogZnVuY3Rpb24gdGVzdENvbnRpZ3VvdXMoKQogewogICAgIHZhciBhcnJheSA9IFt0cnVlLCBm
YWxzZSwgdHJ1ZSwgZmFsc2VdOwotICAgIHJldHVybiBhcnJheS5zbGljZSgxKTsKKyAgICB2YXIg
c2xpY2UgPSBhcnJheS5zbGljZSgxKTsKKyAgICBzaG91bGRCZSgkdm0uaW5kZXhpbmdNb2RlKGFy
cmF5KSwgIkNvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cyIpOworICAgIHJldHVybiBzbGlj
ZTsKIH0KIG5vSW5saW5lKHRlc3RDb250aWd1b3VzKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODc4NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMTAgIEFsZXhleSBT
aHZheWthICA8YXNodmF5a2FAYXBwbGUuY29tPgorCisgICAgICAgIEpTQXJyYXk6OmZhc3RTbGlj
ZSgpIHNob3VsZCBub3QgY29udmVydCB0aGUgc291cmNlIGZyb20gQ29XCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ5OTAKKworICAgICAgICBSZXZp
ZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICBTaW5jZSB3ZSBhcmVuJ3QgbW9kaWZ5aW5nIHRo
ZSBzb3VyY2UgYXJyYXkgaW4gZmFzdFNsaWNlKCkgbm9yIGl0cyBzbG93IHBhdGgsCisgICAgICAg
IHRoZXJlIGlzIG5vIHJlYXNvbiB0byBjb252ZXJ0IGl0IGZyb20gQ29weU9uV3JpdGUuCisKKyAg
ICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpmYXN0
U2xpY2UpOgorCiAyMDIyLTAxLTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgU3RhcnQgdXNpbmcgQysrMjAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lvbiAyODc4NTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzI5LDE1ICs3MjksMTEgQEAgSlNBcnJheSogSlNBcnJheTo6ZmFzdFNsaWNlKEpTR2xvYmFsT2Jq
ZQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAotICAgIC8vIEZJWE1FOiBB
dm9pZCBjb252ZXJ0aW5nIHRoZSBzb3VyY2UgZnJvbSBDb1cgc2luY2Ugd2UgYXJlbid0IG1vZGlm
eWluZyBpdC4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM0OTkwCi0gICAgc291cmNlLT5lbnN1cmVXcml0YWJsZSh2bSk7Ci0KICAgICBTdHJ1Y3R1cmUq
IHNvdXJjZVN0cnVjdHVyZSA9IHNvdXJjZS0+c3RydWN0dXJlKHZtKTsKICAgICBpZiAoc291cmNl
U3RydWN0dXJlLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBhdXRvIGFycmF5VHlwZSA9IHNvdXJjZS0+aW5kZXhpbmdNb2RlKCkgfCBJc0FycmF5OworICAg
IGF1dG8gYXJyYXlUeXBlID0gKHNvdXJjZS0+aW5kZXhpbmdNb2RlKCkgJiB+Q29weU9uV3JpdGUp
IHwgSXNBcnJheTsKICAgICBzd2l0Y2ggKGFycmF5VHlwZSkgewogICAgIGNhc2UgQXJyYXlXaXRo
RG91YmxlOgogICAgIGNhc2UgQXJyYXlXaXRoSW50MzI6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448810</attachid>
            <date>2022-01-10 16:10:02 -0800</date>
            <delta_ts>2022-01-14 15:50:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234990-20220111001000.patch</filename>
            <type>text/plain</type>
            <size>3399</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODc4NTQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDIyLTAxLTEwICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFw
cGxlLmNvbT4KKworICAgICAgICBKU0FycmF5OjpmYXN0U2xpY2UoKSBzaG91bGQgbm90IGNvbnZl
cnQgdGhlIHNvdXJjZSBmcm9tIENvVworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM0OTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVr
aS4KKworICAgICAgICAqIHN0cmVzcy9hcnJheS1zbGljZS1jb3cuanM6CisKIDIwMjItMDEtMDcg
IEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29tPgogCiAgICAgICAgIEV4cGFuZCB0
aGUgc2V0IG9mIG9iamVjdHMgd2UgdGFrZSBKU0FycmF5OjpmYXN0U2xpY2UoKSBwYXRoIGZvcgpJ
bmRleDogSlNUZXN0cy9zdHJlc3MvYXJyYXktc2xpY2UtY293LmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpT
VGVzdHMvc3RyZXNzL2FycmF5LXNsaWNlLWNvdy5qcwkocmV2aXNpb24gMjg3ODUyKQorKysgSlNU
ZXN0cy9zdHJlc3MvYXJyYXktc2xpY2UtY293LmpzCSh3b3JraW5nIGNvcHkpCkBAIC02LDIxICs2
LDMwIEBAIGZ1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKIGZ1bmN0aW9uIHRl
c3RJbnQzMigpCiB7CiAgICAgdmFyIGFycmF5ID0gWzAsIDEsIDIsIDNdOwotICAgIHJldHVybiBh
cnJheS5zbGljZSgxKTsKKyAgICB2YXIgc2xpY2UgPSBhcnJheS5zbGljZSgxKTsKKyAgICBzaG91
bGRCZSgkdm0uaW5kZXhpbmdNb2RlKGFycmF5KSwgIkNvcHlPbldyaXRlQXJyYXlXaXRoSW50MzIi
KTsKKyAgICBzaG91bGRCZSgkdm0uaW5kZXhpbmdNb2RlKHNsaWNlKSwgIkFycmF5V2l0aEludDMy
Iik7CisgICAgcmV0dXJuIHNsaWNlOwogfQogbm9JbmxpbmUodGVzdEludDMyKTsKIAogZnVuY3Rp
b24gdGVzdERvdWJsZSgpCiB7CiAgICAgdmFyIGFycmF5ID0gWzAuMSwgMS4xLCAyLjEsIDMuMV07
Ci0gICAgcmV0dXJuIGFycmF5LnNsaWNlKDEpOworICAgIHZhciBzbGljZSA9IGFycmF5LnNsaWNl
KDEpOworICAgIHNob3VsZEJlKCR2bS5pbmRleGluZ01vZGUoYXJyYXkpLCAiQ29weU9uV3JpdGVB
cnJheVdpdGhEb3VibGUiKTsKKyAgICBzaG91bGRCZSgkdm0uaW5kZXhpbmdNb2RlKHNsaWNlKSwg
IkFycmF5V2l0aERvdWJsZSIpOworICAgIHJldHVybiBzbGljZTsKIH0KIG5vSW5saW5lKHRlc3RE
b3VibGUpOwogCiBmdW5jdGlvbiB0ZXN0Q29udGlndW91cygpCiB7CiAgICAgdmFyIGFycmF5ID0g
W3RydWUsIGZhbHNlLCB0cnVlLCBmYWxzZV07Ci0gICAgcmV0dXJuIGFycmF5LnNsaWNlKDEpOwor
ICAgIHZhciBzbGljZSA9IGFycmF5LnNsaWNlKDEpOworICAgIHNob3VsZEJlKCR2bS5pbmRleGlu
Z01vZGUoYXJyYXkpLCAiQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzIik7CisgICAgc2hv
dWxkQmUoJHZtLmluZGV4aW5nTW9kZShzbGljZSksICJBcnJheVdpdGhDb250aWd1b3VzIik7Cisg
ICAgcmV0dXJuIHNsaWNlOwogfQogbm9JbmxpbmUodGVzdENvbnRpZ3VvdXMpOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4Nzg1MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0w
MS0xMCAgQWxleGV5IFNodmF5a2EgIDxhc2h2YXlrYUBhcHBsZS5jb20+CisKKyAgICAgICAgSlNB
cnJheTo6ZmFzdFNsaWNlKCkgc2hvdWxkIG5vdCBjb252ZXJ0IHRoZSBzb3VyY2UgZnJvbSBDb1cK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDk5MAor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgU2luY2Ugd2Ug
YXJlbid0IG1vZGlmeWluZyB0aGUgc291cmNlIGFycmF5IGluIGZhc3RTbGljZSgpIG5vciBpdHMg
c2xvdyBwYXRoLAorICAgICAgICB0aGVyZSBpcyBubyByZWFzb24gdG8gY29udmVydCBpdCBmcm9t
IENvcHlPbldyaXRlLgorCisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6ZmFzdFNsaWNlKToKKwogMjAyMi0wMS0xMCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFN0YXJ0IHVzaW5nIEMrKzIw
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNp
b24gMjg3ODUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcyOSwxNSArNzI5LDExIEBAIEpTQXJyYXkqIEpTQXJyYXk6OmZh
c3RTbGljZShKU0dsb2JhbE9iamUKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAKLSAgICAvLyBGSVhNRTogQXZvaWQgY29udmVydGluZyB0aGUgc291cmNlIGZyb20gQ29XIHNp
bmNlIHdlIGFyZW4ndCBtb2RpZnlpbmcgaXQuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNDk5MAotICAgIHNvdXJjZS0+ZW5zdXJlV3JpdGFibGUodm0p
OwotCiAgICAgU3RydWN0dXJlKiBzb3VyY2VTdHJ1Y3R1cmUgPSBzb3VyY2UtPnN0cnVjdHVyZSh2
bSk7CiAgICAgaWYgKHNvdXJjZVN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3du
UHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgYXV0byBhcnJheVR5cGUgPSBzb3VyY2UtPmluZGV4aW5nTW9k
ZSgpIHwgSXNBcnJheTsKKyAgICBhdXRvIGFycmF5VHlwZSA9IHNvdXJjZS0+aW5kZXhpbmdUeXBl
KCkgfCBJc0FycmF5OwogICAgIHN3aXRjaCAoYXJyYXlUeXBlKSB7CiAgICAgY2FzZSBBcnJheVdp
dGhEb3VibGU6CiAgICAgY2FzZSBBcnJheVdpdGhJbnQzMjoK
</data>

          </attachment>
      

    </bug>

</bugzilla>