<?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>234188</bug_id>
          
          <creation_ts>2021-12-10 17:10:26 -0800</creation_ts>
          <short_desc>Automatically forbid JS execution when we throw a TerminationException.</short_desc>
          <delta_ts>2021-12-11 09:01: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>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></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>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1823112</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-12-10 17:10:26 -0800</bug_when>
    <thetext>For Worker threads, we throw a TerminationException when Worker.terminate() is called.  Once the TerminationException is thrown, we expect to completely unwind out of any JS frames on the stack, and we also expect the client to never call into JS again.  Previously, WebCore will call VM:setExecutionForbidden() to flag that we should not re-enter the VM anymore.  On JSC side, this executionForbidden() is used to prevent micro-tasks from firing.  On WebCore side, it is used to prevent many things from running, including firing events.

Previously, we reply on WebCore side to catch the TerminationException, determine that it is the TerminationException, and then call VM:setExecutionForbidden().  This is tedious and error prone as there may be places in WebCore that should call VM:setExecutionForbidden() but is missed.  This has been the source of some bugs with the handling of the Worker termination in the past.

In this patch, we change VM to setExecutionForbidden() immediately if when we throw the TerminationException, but only if VM::m_forbidExecutionOnTermination is set.  Currently, we&apos;ll only set VM:m_forbidExecutionOnTermination for Workers because for legacy reasons, other clients of JSC has the ability to re-enter the VM after a TerminationException unwinds out (which is ok to do when used under some controlled conditions).  Until we can determine that it is safe to adopt this &quot;forbid execution on termination behavior&quot; universally, we&apos;ll adopt it only for workers.

In a subsequent patch, we can also look into removing all the places in WebCore that checks for TerminationException in order to call VM:setExecutionForbidden().  We&apos;ll leave those in place for now though they should be redundant after this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823117</commentid>
    <comment_count>1</comment_count>
      <attachid>446848</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-12-10 17:19:24 -0800</bug_when>
    <thetext>Created attachment 446848
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823127</commentid>
    <comment_count>2</comment_count>
      <attachid>446848</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-10 17:32:16 -0800</bug_when>
    <thetext>Comment on attachment 446848
proposed patch.

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

r=me

&gt; Source/JavaScriptCore/runtime/VM.h:1123
&gt; +    bool m_forbidExecutionOnTermination { false };

Since forbidExecutionOnTermination is verb and there is m_executionForbidden, I think renaming it to m_executionOnTerminationForbidden is better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823128</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-12-10 17:35:55 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #2)
&gt; Comment on attachment 446848 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=446848&amp;action=review
&gt; 
&gt; r=me

Thanks.

&gt; &gt; Source/JavaScriptCore/runtime/VM.h:1123
&gt; &gt; +    bool m_forbidExecutionOnTermination { false };
&gt; 
&gt; Since forbidExecutionOnTermination is verb and there is
&gt; m_executionForbidden, I think renaming it to
&gt; m_executionOnTerminationForbidden is better.

How about m_executionForbiddenOnTermination instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823129</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-12-10 17:39:48 -0800</bug_when>
    <thetext>(In reply to Mark Lam from comment #3)
&gt; &gt; &gt; Source/JavaScriptCore/runtime/VM.h:1123
&gt; &gt; &gt; +    bool m_forbidExecutionOnTermination { false };
&gt; &gt; 
&gt; &gt; Since forbidExecutionOnTermination is verb and there is
&gt; &gt; m_executionForbidden, I think renaming it to
&gt; &gt; m_executionOnTerminationForbidden is better.
&gt; 
&gt; How about m_executionForbiddenOnTermination instead?

I think I&apos;ll just go with this i.e. m_executionForbiddenOnTermination.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823130</commentid>
    <comment_count>5</comment_count>
      <attachid>446851</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-12-10 17:45:27 -0800</bug_when>
    <thetext>Created attachment 446851
[fast-cq] patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823218</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-12-11 08:56:25 -0800</bug_when>
    <thetext>The jsc-armv7-tests EWS bot was showing red, but this simple patch should have 0 behavior change on JSC tests.  So, the failures has to be due to something else.  Also, the jsc-armv7-tests EWS bot appears to be showing severe infrastructure failures.  Hence, I&apos;m just going to move forward and land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823222</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-11 09:00:20 -0800</bug_when>
    <thetext>Committed r286913 (245139@main): &lt;https://commits.webkit.org/245139@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446851.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446848</attachid>
            <date>2021-12-10 17:19:24 -0800</date>
            <delta_ts>2021-12-10 17:32:16 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-234188.patch</filename>
            <type>text/plain</type>
            <size>6219</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2ODg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBA
CisyMDIxLTEyLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
dXRvbWF0aWNhbGx5IGZvcmJpZCBKUyBleGVjdXRpb24gd2hlbiB3ZSB0aHJvdyBhIFRlcm1pbmF0
aW9uRXhjZXB0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0MTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRm9yIFdvcmtlciB0aHJlYWRzLCB3ZSB0aHJvdyBhIFRlcm1pbmF0aW9uRXhjZXB0aW9u
IHdoZW4gV29ya2VyLnRlcm1pbmF0ZSgpIGlzCisgICAgICAgIGNhbGxlZC4gIE9uY2UgdGhlIFRl
cm1pbmF0aW9uRXhjZXB0aW9uIGlzIHRocm93biwgd2UgZXhwZWN0IHRvIGNvbXBsZXRlbHkgdW53
aW5kCisgICAgICAgIG91dCBvZiBhbnkgSlMgZnJhbWVzIG9uIHRoZSBzdGFjaywgYW5kIHdlIGFs
c28gZXhwZWN0IHRoZSBjbGllbnQgdG8gbmV2ZXIgY2FsbAorICAgICAgICBpbnRvIEpTIGFnYWlu
LiAgUHJldmlvdXNseSwgV2ViQ29yZSB3aWxsIGNhbGwgVk06c2V0RXhlY3V0aW9uRm9yYmlkZGVu
KCkgdG8gZmxhZworICAgICAgICB0aGF0IHdlIHNob3VsZCBub3QgcmUtZW50ZXIgdGhlIFZNIGFu
eW1vcmUuICBPbiBKU0Mgc2lkZSwgdGhpcyBleGVjdXRpb25Gb3JiaWRkZW4oKQorICAgICAgICBp
cyB1c2VkIHRvIHByZXZlbnQgbWljcm8tdGFza3MgZnJvbSBmaXJpbmcuICBPbiBXZWJDb3JlIHNp
ZGUsIGl0IGlzIHVzZWQgdG8gcHJldmVudAorICAgICAgICBtYW55IHRoaW5ncyBmcm9tIHJ1bm5p
bmcsIGluY2x1ZGluZyBmaXJpbmcgZXZlbnRzLgorCisgICAgICAgIFByZXZpb3VzbHksIHdlIHJl
cGx5IG9uIFdlYkNvcmUgc2lkZSB0byBjYXRjaCB0aGUgVGVybWluYXRpb25FeGNlcHRpb24sIGRl
dGVybWluZQorICAgICAgICB0aGF0IGl0IGlzIHRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiwgYW5k
IHRoZW4gY2FsbCBWTTpzZXRFeGVjdXRpb25Gb3JiaWRkZW4oKS4KKyAgICAgICAgVGhpcyBpcyB0
ZWRpb3VzIGFuZCBlcnJvciBwcm9uZSBhcyB0aGVyZSBtYXkgYmUgcGxhY2VzIGluIFdlYkNvcmUg
dGhhdCBzaG91bGQgY2FsbAorICAgICAgICBWTTpzZXRFeGVjdXRpb25Gb3JiaWRkZW4oKSBidXQg
aXMgbWlzc2VkLiAgVGhpcyBoYXMgYmVlbiB0aGUgc291cmNlIG9mIHNvbWUgYnVncworICAgICAg
ICB3aXRoIHRoZSBoYW5kbGluZyBvZiB0aGUgV29ya2VyIHRlcm1pbmF0aW9uIGluIHRoZSBwYXN0
LgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGNoYW5nZSBWTSB0byBzZXRFeGVjdXRpb25G
b3JiaWRkZW4oKSBpbW1lZGlhdGVseSB3aGVuIHdlIHRocm93CisgICAgICAgIHRoZSBUZXJtaW5h
dGlvbkV4Y2VwdGlvbiwgYnV0IG9ubHkgaWYgVk06Om1fZm9yYmlkRXhlY3V0aW9uT25UZXJtaW5h
dGlvbiBpcyBzZXQuCisgICAgICAgIEN1cnJlbnRseSwgd2UnbGwgb25seSBzZXQgVk06bV9mb3Ji
aWRFeGVjdXRpb25PblRlcm1pbmF0aW9uIGZvciBXb3JrZXJzIGJlY2F1c2UKKyAgICAgICAgZm9y
IGxlZ2FjeSByZWFzb25zLCBvdGhlciBjbGllbnRzIG9mIEpTQyBoYXMgdGhlIGFiaWxpdHkgdG8g
cmUtZW50ZXIgdGhlIFZNIGFmdGVyCisgICAgICAgIGEgVGVybWluYXRpb25FeGNlcHRpb24gdW53
aW5kcyBvdXQgKHdoaWNoIGlzIG9rIHRvIGRvIHdoZW4gdXNlZCB1bmRlciBzb21lCisgICAgICAg
IGNvbnRyb2xsZWQgY29uZGl0aW9ucykuICBVbnRpbCB3ZSBjYW4gZGV0ZXJtaW5lIHRoYXQgaXQg
aXMgc2FmZSB0byBhZG9wdCB0aGlzCisgICAgICAgICJmb3JiaWQgZXhlY3V0aW9uIG9uIHRlcm1p
bmF0aW9uIGJlaGF2aW9yIiB1bml2ZXJzYWxseSwgd2UnbGwgYWRvcHQgaXQgb25seSBmb3IKKyAg
ICAgICAgd29ya2Vycy4KKworICAgICAgICBJbiBhIHN1YnNlcXVlbnQgcGF0Y2gsIHdlIGNhbiBh
bHNvIGxvb2sgaW50byByZW1vdmluZyBhbGwgdGhlIHBsYWNlcyBpbiBXZWJDb3JlCisgICAgICAg
IHRoYXQgY2hlY2tzIGZvciBUZXJtaW5hdGlvbkV4Y2VwdGlvbiBpbiBvcmRlciB0byBjYWxsIFZN
OnNldEV4ZWN1dGlvbkZvcmJpZGRlbigpLgorICAgICAgICBXZSdsbCBsZWF2ZSB0aG9zZSBpbiBw
bGFjZSBmb3Igbm93IHRob3VnaCB0aGV5IHNob3VsZCBiZSByZWR1bmRhbnQgYWZ0ZXIgdGhpcyBw
YXRjaC4KKworICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6c2V0
RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6Vk06OnRocm93VGVybWluYXRpb25FeGNlcHRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OmZvcmJpZEV4ZWN1
dGlvbk9uVGVybWluYXRpb24pOgorCiAyMDIxLTEyLTEwICBEb24gT2xtc3RlYWQgIDxkb24ub2xt
c3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgQWRkIEZpbGVTeXN0ZW0gZnVuY3Rpb24gdG8gcmVh
ZCBhIGZpbGUgYXQgYSBwYXRoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CShyZXZpc2lvbiAyODY2NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgzOSw2ICs4MzksNyBAQCB2b2lkIFZNOjpjbGVhckV4Y2Vw
dGlvbigpCiAKIHZvaWQgVk06OnNldEV4Y2VwdGlvbihFeGNlcHRpb24qIGV4Y2VwdGlvbikKIHsK
KyAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhaXNUZXJtaW5hdGlvbkV4Y2VwdGlvbihleGNlcHRp
b24pIHx8IHRlcm1pbmF0aW9uSW5Qcm9ncmVzcygpKTsKICAgICBtX2V4Y2VwdGlvbiA9IGV4Y2Vw
dGlvbjsKICAgICBtX2xhc3RFeGNlcHRpb24gPSBleGNlcHRpb247CiAgICAgaWYgKGV4Y2VwdGlv
bikKQEAgLTg0Nyw4ICs4NDgsMTEgQEAgdm9pZCBWTTo6c2V0RXhjZXB0aW9uKEV4Y2VwdGlvbiog
ZXhjZXB0aQogCiB2b2lkIFZNOjp0aHJvd1Rlcm1pbmF0aW9uRXhjZXB0aW9uKCkKIHsKKyAgICBB
U1NFUlQodGVybWluYXRpb25JblByb2dyZXNzKCkpOwogICAgIEFTU0VSVCghbV90cmFwcy5pc0Rl
ZmVycmluZ1Rlcm1pbmF0aW9uKCkpOwogICAgIHNldEV4Y2VwdGlvbih0ZXJtaW5hdGlvbkV4Y2Vw
dGlvbigpKTsKKyAgICBpZiAobV9mb3JiaWRFeGVjdXRpb25PblRlcm1pbmF0aW9uKQorICAgICAg
ICBzZXRFeGVjdXRpb25Gb3JiaWRkZW4oKTsKIH0KIAogRXhjZXB0aW9uKiBWTTo6dGhyb3dFeGNl
cHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhjZXB0aW9uKiBleGNlcHRpb25U
b1Rocm93KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyODY2
NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTQsNiArMjk0LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGV4ZWN1dGlvbkZvcmJpZGRl
bigpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0aW9uRm9yYmlkZGVuOyB9CiAgICAgdm9pZCBzZXRF
eGVjdXRpb25Gb3JiaWRkZW4oKSB7IG1fZXhlY3V0aW9uRm9yYmlkZGVuID0gdHJ1ZTsgfQogCisg
ICAgLy8gU2V0dGluZyB0aGlzIG1lYW5zIHRoYXQgdGhlIFZNIGNhbiBuZXZlciByZWNvdmVyIGZy
b20gYSBUZXJtaW5hdGlvbkV4Y2VwdGlvbi4KKyAgICAvLyBDdXJyZW50bHksIHdlJ2xsIG9ubHkg
c2V0IHRoaXMgZm9yIHdvcmtlciB0aHJlYWRzLiBJZGVhbGx5LCB3ZSB3YW50IHRoaXMKKyAgICAv
LyB0byBhbHdheXMgYmUgdHJ1ZS4gSG93ZXZlciwgd2UncmUgb25seSBsaW1pdGluZyBpdCB0byB3
b3JrZXJzIGZvciBub3cgdW50aWwKKyAgICAvLyB3ZSBjYW4gYmUgc3VyZSB0aGF0IGNsaWVudHMg
dXNpbmcgdGhlIEpTQyB3YXRjaGRvZyAod2hpY2ggdXNlcyB0ZXJtaW5hdGlvbikKKyAgICAvLyBp
c24ndCBicm9rZW4gYnkgdGhpcyBjaGFuZ2UuCisgICAgdm9pZCBmb3JiaWRFeGVjdXRpb25PblRl
cm1pbmF0aW9uKCkgeyBtX2ZvcmJpZEV4ZWN1dGlvbk9uVGVybWluYXRpb24gPSB0cnVlOyB9CisK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIGVuc3VyZVRlcm1pbmF0aW9uRXhjZXB0
aW9uKCk7CiAgICAgRXhjZXB0aW9uKiB0ZXJtaW5hdGlvbkV4Y2VwdGlvbigpIGNvbnN0CiAgICAg
ewpAQCAtMTExMyw2ICsxMTIwLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV90ZXJtaW5hdGlv
bkluUHJvZ3Jlc3MgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9leGVjdXRpb25Gb3JiaWRkZW4geyBm
YWxzZSB9OworICAgIGJvb2wgbV9mb3JiaWRFeGVjdXRpb25PblRlcm1pbmF0aW9uIHsgZmFsc2Ug
fTsKIAogICAgIExvY2sgbV9sb29wSGludEV4ZWN1dGlvbkNvdW50TG9jazsKICAgICBIYXNoTWFw
PGNvbnN0IEluc3RydWN0aW9uKiwgc3RkOjpwYWlyPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8
dWludHB0cl90Pj4+IG1fbG9vcEhpbnRFeGVjdXRpb25Db3VudHM7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyODY2NjApCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0xMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQXV0b21hdGljYWxseSBmb3JiaWQgSlMgZXhlY3V0aW9uIHdoZW4g
d2UgdGhyb3cgYSBUZXJtaW5hdGlvbkV4Y2VwdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSAiZm9yYmlkIGV4ZWN1dGlvbiBvbiB0ZXJt
aW5hdGlvbiBiZWhhdmlvciIgZm9yIHdvcmtlcnMuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
T3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cik6CisKIDIwMjEtMTItMDggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtDU1MgQ2FzY2FkZSBMYXllcnNdIFVwZGF0ZSBDU1NPTSB0byB0aGUgc3BlYwpJbmRl
eDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyODY2NjApCisrKyBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03Niw2ICs3Niw3IEBAIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6Oldv
cmtlck8KICAgICAgICAgewogICAgICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2sobV92bS5nZXQo
KSk7CiAgICAgICAgICAgICBtX3ZtLT5lbnN1cmVUZXJtaW5hdGlvbkV4Y2VwdGlvbigpOworICAg
ICAgICAgICAgbV92bS0+Zm9yYmlkRXhlY3V0aW9uT25UZXJtaW5hdGlvbigpOwogICAgICAgICB9
CiAKICAgICAgICAgSlNWTUNsaWVudERhdGE6OmluaXROb3JtYWxXb3JsZChtX3ZtLmdldCgpLCB0
eXBlKTsK
</data>
<flag name="review"
          id="472343"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446851</attachid>
            <date>2021-12-10 17:45:27 -0800</date>
            <delta_ts>2021-12-11 09:00:22 -0800</delta_ts>
            <desc>[fast-cq] patch for landing.</desc>
            <filename>bug-234188.patch</filename>
            <type>text/plain</type>
            <size>6365</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2ODg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDIxLTEyLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
dXRvbWF0aWNhbGx5IGZvcmJpZCBKUyBleGVjdXRpb24gd2hlbiB3ZSB0aHJvdyBhIFRlcm1pbmF0
aW9uRXhjZXB0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0MTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAg
ICAgICBGb3IgV29ya2VyIHRocmVhZHMsIHdlIHRocm93IGEgVGVybWluYXRpb25FeGNlcHRpb24g
d2hlbiBXb3JrZXIudGVybWluYXRlKCkgaXMKKyAgICAgICAgY2FsbGVkLiAgT25jZSB0aGUgVGVy
bWluYXRpb25FeGNlcHRpb24gaXMgdGhyb3duLCB3ZSBleHBlY3QgdG8gY29tcGxldGVseSB1bndp
bmQKKyAgICAgICAgb3V0IG9mIGFueSBKUyBmcmFtZXMgb24gdGhlIHN0YWNrLCBhbmQgd2UgYWxz
byBleHBlY3QgdGhlIGNsaWVudCB0byBuZXZlciBjYWxsCisgICAgICAgIGludG8gSlMgYWdhaW4u
ICBQcmV2aW91c2x5LCBXZWJDb3JlIHdpbGwgY2FsbCBWTTpzZXRFeGVjdXRpb25Gb3JiaWRkZW4o
KSB0byBmbGFnCisgICAgICAgIHRoYXQgd2Ugc2hvdWxkIG5vdCByZS1lbnRlciB0aGUgVk0gYW55
bW9yZS4gIE9uIEpTQyBzaWRlLCB0aGlzIGV4ZWN1dGlvbkZvcmJpZGRlbigpCisgICAgICAgIGlz
IHVzZWQgdG8gcHJldmVudCBtaWNyby10YXNrcyBmcm9tIGZpcmluZy4gIE9uIFdlYkNvcmUgc2lk
ZSwgaXQgaXMgdXNlZCB0byBwcmV2ZW50CisgICAgICAgIG1hbnkgdGhpbmdzIGZyb20gcnVubmlu
ZywgaW5jbHVkaW5nIGZpcmluZyBldmVudHMuCisKKyAgICAgICAgUHJldmlvdXNseSwgd2UgcmVw
bHkgb24gV2ViQ29yZSBzaWRlIHRvIGNhdGNoIHRoZSBUZXJtaW5hdGlvbkV4Y2VwdGlvbiwgZGV0
ZXJtaW5lCisgICAgICAgIHRoYXQgaXQgaXMgdGhlIFRlcm1pbmF0aW9uRXhjZXB0aW9uLCBhbmQg
dGhlbiBjYWxsIFZNOnNldEV4ZWN1dGlvbkZvcmJpZGRlbigpLgorICAgICAgICBUaGlzIGlzIHRl
ZGlvdXMgYW5kIGVycm9yIHByb25lIGFzIHRoZXJlIG1heSBiZSBwbGFjZXMgaW4gV2ViQ29yZSB0
aGF0IHNob3VsZCBjYWxsCisgICAgICAgIFZNOnNldEV4ZWN1dGlvbkZvcmJpZGRlbigpIGJ1dCBp
cyBtaXNzZWQuICBUaGlzIGhhcyBiZWVuIHRoZSBzb3VyY2Ugb2Ygc29tZSBidWdzCisgICAgICAg
IHdpdGggdGhlIGhhbmRsaW5nIG9mIHRoZSBXb3JrZXIgdGVybWluYXRpb24gaW4gdGhlIHBhc3Qu
CisKKyAgICAgICAgSW4gdGhpcyBwYXRjaCwgd2UgY2hhbmdlIFZNIHRvIHNldEV4ZWN1dGlvbkZv
cmJpZGRlbigpIGltbWVkaWF0ZWx5IHdoZW4gd2UgdGhyb3cKKyAgICAgICAgdGhlIFRlcm1pbmF0
aW9uRXhjZXB0aW9uLCBidXQgb25seSBpZiBWTTo6bV9leGVjdXRpb25Gb3JiaWRkZW5PblRlcm1p
bmF0aW9uIGlzIHNldC4KKyAgICAgICAgQ3VycmVudGx5LCB3ZSdsbCBvbmx5IHNldCBWTTptX2V4
ZWN1dGlvbkZvcmJpZGRlbk9uVGVybWluYXRpb24gZm9yIFdvcmtlcnMgYmVjYXVzZQorICAgICAg
ICBmb3IgbGVnYWN5IHJlYXNvbnMsIG90aGVyIGNsaWVudHMgb2YgSlNDIGhhcyB0aGUgYWJpbGl0
eSB0byByZS1lbnRlciB0aGUgVk0gYWZ0ZXIKKyAgICAgICAgYSBUZXJtaW5hdGlvbkV4Y2VwdGlv
biB1bndpbmRzIG91dCAod2hpY2ggaXMgb2sgdG8gZG8gd2hlbiB1c2VkIHVuZGVyIHNvbWUKKyAg
ICAgICAgY29udHJvbGxlZCBjb25kaXRpb25zKS4gIFVudGlsIHdlIGNhbiBkZXRlcm1pbmUgdGhh
dCBpdCBpcyBzYWZlIHRvIGFkb3B0IHRoaXMKKyAgICAgICAgImV4ZWN1dGlvbiBmb3JiaWRkZW4g
b24gdGVybWluYXRpb24iIGJlaGF2aW9yIHVuaXZlcnNhbGx5LCB3ZSdsbCBhZG9wdCBpdCBvbmx5
IGZvcgorICAgICAgICB3b3JrZXJzLgorCisgICAgICAgIEluIGEgc3Vic2VxdWVudCBwYXRjaCwg
d2UgY2FuIGFsc28gbG9vayBpbnRvIHJlbW92aW5nIGFsbCB0aGUgcGxhY2VzIGluIFdlYkNvcmUK
KyAgICAgICAgdGhhdCBjaGVja3MgZm9yIFRlcm1pbmF0aW9uRXhjZXB0aW9uIGluIG9yZGVyIHRv
IGNhbGwgVk06c2V0RXhlY3V0aW9uRm9yYmlkZGVuKCkuCisgICAgICAgIFdlJ2xsIGxlYXZlIHRo
b3NlIGluIHBsYWNlIGZvciBub3cgdGhvdWdoIHRoZXkgc2hvdWxkIGJlIHJlZHVuZGFudCBhZnRl
ciB0aGlzIHBhdGNoLgorCisgICAgICAgIEFsc28gYWRkIHNvbWUgQVNTRVJUcyB0byBkb2N1bWVu
dCBpbnZhcmlhbnRzIHJlZ2FyZGluZyBzdGF0ZXMgdXNlZCBpbiB0aGUgaGFuZGluZworICAgICAg
ICBvZiBUZXJtaW5hdGlvbkV4Y2VwdGlvbi4KKworICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgor
ICAgICAgICAoSlNDOjpWTTo6c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6Vk06OnRocm93
VGVybWluYXRpb25FeGNlcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAg
KEpTQzo6Vk06OmZvcmJpZEV4ZWN1dGlvbk9uVGVybWluYXRpb24pOgorCiAyMDIxLTEyLTEwICBE
b24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgQWRkIEZpbGVT
eXN0ZW0gZnVuY3Rpb24gdG8gcmVhZCBhIGZpbGUgYXQgYSBwYXRoCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAyODY2NjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzOSw2ICs4MzksNyBA
QCB2b2lkIFZNOjpjbGVhckV4Y2VwdGlvbigpCiAKIHZvaWQgVk06OnNldEV4Y2VwdGlvbihFeGNl
cHRpb24qIGV4Y2VwdGlvbikKIHsKKyAgICBBU1NFUlQoIWV4Y2VwdGlvbiB8fCAhaXNUZXJtaW5h
dGlvbkV4Y2VwdGlvbihleGNlcHRpb24pIHx8IHRlcm1pbmF0aW9uSW5Qcm9ncmVzcygpKTsKICAg
ICBtX2V4Y2VwdGlvbiA9IGV4Y2VwdGlvbjsKICAgICBtX2xhc3RFeGNlcHRpb24gPSBleGNlcHRp
b247CiAgICAgaWYgKGV4Y2VwdGlvbikKQEAgLTg0Nyw4ICs4NDgsMTEgQEAgdm9pZCBWTTo6c2V0
RXhjZXB0aW9uKEV4Y2VwdGlvbiogZXhjZXB0aQogCiB2b2lkIFZNOjp0aHJvd1Rlcm1pbmF0aW9u
RXhjZXB0aW9uKCkKIHsKKyAgICBBU1NFUlQodGVybWluYXRpb25JblByb2dyZXNzKCkpOwogICAg
IEFTU0VSVCghbV90cmFwcy5pc0RlZmVycmluZ1Rlcm1pbmF0aW9uKCkpOwogICAgIHNldEV4Y2Vw
dGlvbih0ZXJtaW5hdGlvbkV4Y2VwdGlvbigpKTsKKyAgICBpZiAobV9leGVjdXRpb25Gb3JiaWRk
ZW5PblRlcm1pbmF0aW9uKQorICAgICAgICBzZXRFeGVjdXRpb25Gb3JiaWRkZW4oKTsKIH0KIAog
RXhjZXB0aW9uKiBWTTo6dGhyb3dFeGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRXhjZXB0aW9uKiBleGNlcHRpb25Ub1Rocm93KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCShyZXZpc2lvbiAyODY2NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQsNiArMjk0LDEzIEBAIHB1YmxpYzoKICAg
ICBib29sIGV4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0aW9uRm9y
YmlkZGVuOyB9CiAgICAgdm9pZCBzZXRFeGVjdXRpb25Gb3JiaWRkZW4oKSB7IG1fZXhlY3V0aW9u
Rm9yYmlkZGVuID0gdHJ1ZTsgfQogCisgICAgLy8gU2V0dGluZyB0aGlzIG1lYW5zIHRoYXQgdGhl
IFZNIGNhbiBuZXZlciByZWNvdmVyIGZyb20gYSBUZXJtaW5hdGlvbkV4Y2VwdGlvbi4KKyAgICAv
LyBDdXJyZW50bHksIHdlJ2xsIG9ubHkgc2V0IHRoaXMgZm9yIHdvcmtlciB0aHJlYWRzLiBJZGVh
bGx5LCB3ZSB3YW50IHRoaXMKKyAgICAvLyB0byBhbHdheXMgYmUgdHJ1ZS4gSG93ZXZlciwgd2Un
cmUgb25seSBsaW1pdGluZyBpdCB0byB3b3JrZXJzIGZvciBub3cgdW50aWwKKyAgICAvLyB3ZSBj
YW4gYmUgc3VyZSB0aGF0IGNsaWVudHMgdXNpbmcgdGhlIEpTQyB3YXRjaGRvZyAod2hpY2ggdXNl
cyB0ZXJtaW5hdGlvbikKKyAgICAvLyBpc24ndCBicm9rZW4gYnkgdGhpcyBjaGFuZ2UuCisgICAg
dm9pZCBmb3JiaWRFeGVjdXRpb25PblRlcm1pbmF0aW9uKCkgeyBtX2V4ZWN1dGlvbkZvcmJpZGRl
bk9uVGVybWluYXRpb24gPSB0cnVlOyB9CisKICAgICBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRp
b24qIGVuc3VyZVRlcm1pbmF0aW9uRXhjZXB0aW9uKCk7CiAgICAgRXhjZXB0aW9uKiB0ZXJtaW5h
dGlvbkV4Y2VwdGlvbigpIGNvbnN0CiAgICAgewpAQCAtMTExMyw2ICsxMTIwLDcgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgbV90ZXJtaW5hdGlvbkluUHJvZ3Jlc3MgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9leGVjdXRpb25Gb3JiaWRkZW4geyBmYWxzZSB9OworICAgIGJvb2wgbV9leGVjdXRpb25G
b3JiaWRkZW5PblRlcm1pbmF0aW9uIHsgZmFsc2UgfTsKIAogICAgIExvY2sgbV9sb29wSGludEV4
ZWN1dGlvbkNvdW50TG9jazsKICAgICBIYXNoTWFwPGNvbnN0IEluc3RydWN0aW9uKiwgc3RkOjpw
YWlyPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8dWludHB0cl90Pj4+IG1fbG9vcEhpbnRFeGVj
dXRpb25Db3VudHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODY2NjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0x
Mi0xMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQXV0b21hdGlj
YWxseSBmb3JiaWQgSlMgZXhlY3V0aW9uIHdoZW4gd2UgdGhyb3cgYSBUZXJtaW5hdGlvbkV4Y2Vw
dGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NDE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgRW5h
YmxlICJleGVjdXRpb24gZm9yYmlkZGVuIG9uIHRlcm1pbmF0aW9uIiBiZWhhdmlvciBmb3Igd29y
a2Vycy4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
OjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyKToKKwogMjAyMS0xMi0wOCAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBDYXNjYWRlIExheWVy
c10gVXBkYXRlIENTU09NIHRvIHRoZSBzcGVjCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDI4NjY2MCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDcgQEAgV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6V29ya2VyTwogICAgICAgICB7CiAgICAgICAg
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX3ZtLmdldCgpKTsKICAgICAgICAgICAgIG1fdm0tPmVu
c3VyZVRlcm1pbmF0aW9uRXhjZXB0aW9uKCk7CisgICAgICAgICAgICBtX3ZtLT5mb3JiaWRFeGVj
dXRpb25PblRlcm1pbmF0aW9uKCk7CiAgICAgICAgIH0KIAogICAgICAgICBKU1ZNQ2xpZW50RGF0
YTo6aW5pdE5vcm1hbFdvcmxkKG1fdm0uZ2V0KCksIHR5cGUpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>