<?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>229018</bug_id>
          
          <creation_ts>2021-08-11 18:59:43 -0700</creation_ts>
          <short_desc>Add thread safe version of CanMakeCheckedPtr</short_desc>
          <delta_ts>2021-08-16 17:00:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</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>229168</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1783708</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-08-11 18:59:43 -0700</bug_when>
    <thetext>Like ThreadSafeRefCounted, we should have a thread safe version of CanMakeCheckedPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783747</commentid>
    <comment_count>1</comment_count>
      <attachid>435397</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-08-12 00:29:27 -0700</bug_when>
    <thetext>Created attachment 435397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783762</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-08-12 02:40:53 -0700</bug_when>
    <thetext>Antti suggested that maybe we can use fetch_add/fetch_sub(1, std::memory_order_relaxed) instead of operator++/--. I suspect we want memory_order_acq_rel instead because we don&apos;t want these operations to be reordered with other things happening in the thread. WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783978</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-08-12 16:21:17 -0700</bug_when>
    <thetext>On modern ARM64, std::memory_order_relaxed compiles to ldadd / stdadd. Those are refcount-optimized instructions that are literally free (as far as I can tell after benchmarking MallocBench, PLT, JetStream2, and Speedometer2 with atomic refcounting enabled for *all* objects).

So, it&apos;s nice to use std::memory_order_relaxed, since it puts us on a path to good performance.

(On Intel, std::memory_order_relaxed doesn&apos;t help. Atomics are always slow.)

I can imagine some theoretical benefits to acquire / release semantics, or sequential consistency semantics, in our refcounted objects. But I believe &quot;it&apos;s free, just use it&quot; will be a bigger benefit in the end.

So, I&apos;d favor a switch to std::memory_order_relaxed in our thread-safe refcounts. That said, ThreadSafeRefCountedBase currently does ++/--, so maybe the best thing is to land this patch doing the same, and then switch them both. I&apos;d prefer for our approach to be consistent throughout the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783979</commentid>
    <comment_count>4</comment_count>
      <attachid>435397</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-08-12 16:22:55 -0700</bug_when>
    <thetext>Comment on attachment 435397
Patch

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

r=me

&gt; Source/WTF/wtf/CheckedRef.h:253
&gt; +    operator IntegralType() const { assertThread(); return m_value; }
&gt; +    bool operator!() const { assertThread(); return !m_value; }
&gt; +    SingleThreadIntegralWrapper&amp; operator++() { assertThread(); m_value++; return *this; }
&gt; +    SingleThreadIntegralWrapper&amp; operator--() { assertThread(); m_value--; return *this; }

We can probably afford one line per statement for readability here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783986</commentid>
    <comment_count>5</comment_count>
      <attachid>435397</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-12 16:44:45 -0700</bug_when>
    <thetext>Comment on attachment 435397
Patch

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

&gt;&gt; Source/WTF/wtf/CheckedRef.h:253
&gt;&gt; +    SingleThreadIntegralWrapper&amp; operator--() { assertThread(); m_value--; return *this; }
&gt; 
&gt; We can probably afford one line per statement for readability here.

My preference is to move functions out of the class body when we find we need multiple lines and multiple statements, and I think that works just fine even though you do have to add the inline keyword.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784599</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-08-16 11:55:37 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 435397 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=435397&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WTF/wtf/CheckedRef.h:253
&gt; &gt;&gt; +    SingleThreadIntegralWrapper&amp; operator--() { assertThread(); m_value--; return *this; }
&gt; &gt; 
&gt; &gt; We can probably afford one line per statement for readability here.
&gt; 
&gt; My preference is to move functions out of the class body when we find we
&gt; need multiple lines and multiple statements, and I think that works just
&gt; fine even though you do have to add the inline keyword.

Sure, I&apos;d do both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784629</commentid>
    <comment_count>7</comment_count>
      <attachid>435625</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-08-16 13:12:13 -0700</bug_when>
    <thetext>Created attachment 435625
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784633</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-16 13:42:07 -0700</bug_when>
    <thetext>Committed r281105 (240564@main): &lt;https://commits.webkit.org/240564@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435625.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784634</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-16 13:43:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/81996703&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435397</attachid>
            <date>2021-08-12 00:29:27 -0700</date>
            <delta_ts>2021-08-16 13:12:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229018-20210812002926.patch</filename>
            <type>text/plain</type>
            <size>6462</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwOTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdkYjg0MjMyZjQ0ODdiNmNkM2NmNjUx
ZTAxM2U4NjUxNDc2OThlZmMuLjc5MGM3NTM5Y2E3ZmZiODZiODM5MzE3NzliZjVhZDFjZGQ0N2Y2
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMDgtMTIgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHRocmVhZCBzYWZlIHZlcnNpb24gb2YgQ2FuTWFr
ZUNoZWNrZWRQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyOTAxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEludHJvZHVjZSBDYW5NYWtlVGhyZWFkU2FmZUNoZWNrZWRQdHIgd2hpY2ggaXMgYSB0aHJl
YWQgc2FmZSB2ZXJzaW9uIG9mIENhbk1ha2VDaGVja2VkUHRyLgorCisgICAgICAgICogd3RmL0No
ZWNrZWRSZWYuaDoKKyAgICAgICAgKFdURjo6Q2FuTWFrZUNoZWNrZWRQdHJCYXNlKTogRXh0cmFj
dGVkIGZyb20gQ2FuTWFrZUNoZWNrZWRQdHIuCisgICAgICAgIChXVEY6OkNhbk1ha2VDaGVja2Vk
UHRyQmFzZTo6fkNhbk1ha2VDaGVja2VkUHRyQmFzZSk6CisgICAgICAgIChXVEY6OkNhbk1ha2VD
aGVja2VkUHRyQmFzZTo6cHRyQ291bnQgY29uc3QpOgorICAgICAgICAoV1RGOjpTaW5nbGVUaHJl
YWRJbnRlZ3JhbFdyYXBwZXIpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6U2luZ2xlVGhyZWFkSW50
ZWdyYWxXcmFwcGVyOjpTaW5nbGVUaHJlYWRJbnRlZ3JhbFdyYXBwZXIpOgorICAgICAgICAoV1RG
OjpTaW5nbGVUaHJlYWRJbnRlZ3JhbFdyYXBwZXI6Om9wZXJhdG9yIEludGVncmFsVHlwZSBjb25z
dCk6CisgICAgICAgIChXVEY6OlNpbmdsZVRocmVhZEludGVncmFsV3JhcHBlcjo6b3BlcmF0b3Ih
IGNvbnN0KToKKyAgICAgICAgKFdURjo6U2luZ2xlVGhyZWFkSW50ZWdyYWxXcmFwcGVyOjpvcGVy
YXRvcisrKToKKyAgICAgICAgKFdURjo6U2luZ2xlVGhyZWFkSW50ZWdyYWxXcmFwcGVyOjpvcGVy
YXRvci0tKToKKyAgICAgICAgKFdURjo6U2luZ2xlVGhyZWFkSW50ZWdyYWxXcmFwcGVyOjphc3Nl
cnRUaHJlYWQgY29uc3QpOgorICAgICAgICAoV1RGOjpDYW5NYWtlQ2hlY2tlZFB0cik6IFJlZGVm
aW5lZCB1c2luZyBDYW5NYWtlQ2hlY2tlZFB0ckJhc2UgYW5kIFNpbXBsZU5vbkF0b21pY1R5cGUu
CisgICAgICAgIChXVEY6OkNhbk1ha2VUaHJlYWRTYWZlQ2hlY2tlZFB0cik6IEFkZGVkLgorCiAy
MDIxLTA4LTExICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFN1
c3BlbmQgV29ya1F1ZXVlIG9mIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgYW5kIExvY2FsU3RvcmFn
ZSBzb29uZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRSZWYuaCBiL1NvdXJj
ZS9XVEYvd3RmL0NoZWNrZWRSZWYuaAppbmRleCA2NjQxOGRkYTFkN2QxOWQ4MzE2YzQ5MTg5ODdk
ZDRmZDZlOTNhOWFjLi4zMzk0YmY4MzhmZjdmZTI4YjY2NDdlZDYxZTg2M2Y5YzM5M2ZmMDBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkUmVmLmgKKysrIGIvU291cmNlL1dURi93
dGYvQ2hlY2tlZFJlZi5oCkBAIC0yNSwxMCArMjUsMTUgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9SYXdQdHJUcmFpdHMuaD4KIAorI2lmIEFTU0VS
VF9FTkFCTEVECisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXVEYgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQdHJUcmFpdHM+CkBAIC0y
MjAsMTggKzIyNSw1MSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgUHRySGFzaDxDaGVj
a2VkUmVmPFA+PiA6IFB0ckhhc2hCYXNlPENoZWNrZWRSZWY8UD4sCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFA+IHN0cnVjdCBEZWZhdWx0SGFzaDxDaGVja2VkUmVmPFA+PiA6IFB0ckhhc2g8Q2hlY2tl
ZFJlZjxQPj4geyB9OwogCi1jbGFzcyBDYW5NYWtlQ2hlY2tlZFB0ciB7Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgU3RvcmFnZVR5cGUsIHR5cGVuYW1lIFB0ckNvdW50ZXJUeXBlPiBjbGFzcyBDYW5NYWtl
Q2hlY2tlZFB0ckJhc2UgewogcHVibGljOgotICAgIH5DYW5NYWtlQ2hlY2tlZFB0cigpIHsgUkVM
RUFTRV9BU1NFUlQoIW1fY291bnQpOyB9CisgICAgfkNhbk1ha2VDaGVja2VkUHRyQmFzZSgpIHsg
UkVMRUFTRV9BU1NFUlQoIW1fY291bnQpOyB9CiAKLSAgICB1aW50MTZfdCBwdHJDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKyAgICBQdHJDb3VudGVyVHlwZSBwdHJDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KICAgICB2b2lkIGluY3JlbWVudFB0ckNvdW50KCkgeyAr
K21fY291bnQ7IH0KICAgICB2b2lkIGRlY3JlbWVudFB0ckNvdW50KCkgeyBBU1NFUlQobV9jb3Vu
dCk7IC0tbV9jb3VudDsgfQorCiBwcml2YXRlOgotICAgIHVpbnQxNl90IG1fY291bnQgeyAwIH07
CisgICAgU3RvcmFnZVR5cGUgbV9jb3VudCB7IDAgfTsKIH07CiAKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBJbnRlZ3JhbFR5cGU+CitjbGFzcyBTaW5nbGVUaHJlYWRJbnRlZ3JhbFdyYXBwZXIgeworcHVi
bGljOgorICAgIFNpbmdsZVRocmVhZEludGVncmFsV3JhcHBlcihJbnRlZ3JhbFR5cGUgdmFsdWUp
CisgICAgICAgIDogbV92YWx1ZSB7IHZhbHVlIH0KKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAg
ICAsIG1fdGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50KCkgfQorI2VuZGlmCisgICAgeyB9CisKKyAg
ICBvcGVyYXRvciBJbnRlZ3JhbFR5cGUoKSBjb25zdCB7IGFzc2VydFRocmVhZCgpOyByZXR1cm4g
bV92YWx1ZTsgfQorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyBhc3NlcnRUaHJlYWQoKTsg
cmV0dXJuICFtX3ZhbHVlOyB9CisgICAgU2luZ2xlVGhyZWFkSW50ZWdyYWxXcmFwcGVyJiBvcGVy
YXRvcisrKCkgeyBhc3NlcnRUaHJlYWQoKTsgbV92YWx1ZSsrOyByZXR1cm4gKnRoaXM7IH0KKyAg
ICBTaW5nbGVUaHJlYWRJbnRlZ3JhbFdyYXBwZXImIG9wZXJhdG9yLS0oKSB7IGFzc2VydFRocmVh
ZCgpOyBtX3ZhbHVlLS07IHJldHVybiAqdGhpczsgfQorCitwcml2YXRlOgorI2lmIEFTU0VSVF9F
TkFCTEVECisgICAgdm9pZCBhc3NlcnRUaHJlYWQoKSBjb25zdCB7IEFTU0VSVChtX3RocmVhZC5w
dHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOyB9CisjZWxzZQorICAgIGNvbnN0ZXhwciB2b2lk
IGFzc2VydFRocmVhZCgpIGNvbnN0IHsgfQorI2VuZGlmCisKKyAgICBJbnRlZ3JhbFR5cGUgbV92
YWx1ZTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIFJlZjxUaHJlYWQ+IG1fdGhyZWFkOworI2Vu
ZGlmCit9OworCit1c2luZyBDYW5NYWtlQ2hlY2tlZFB0ciA9IENhbk1ha2VDaGVja2VkUHRyQmFz
ZTxTaW5nbGVUaHJlYWRJbnRlZ3JhbFdyYXBwZXI8dWludDE2X3Q+LCB1aW50MTZfdD47Cit1c2lu
ZyBDYW5NYWtlVGhyZWFkU2FmZUNoZWNrZWRQdHIgPSBDYW5NYWtlQ2hlY2tlZFB0ckJhc2U8c3Rk
OjphdG9taWM8dWludDE2X3Q+LCB1aW50MTZfdD47CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1
c2luZyBXVEY6OkNhbk1ha2VDaGVja2VkUHRyOwordXNpbmcgV1RGOjpDYW5NYWtlVGhyZWFkU2Fm
ZUNoZWNrZWRQdHI7CiB1c2luZyBXVEY6OkNoZWNrZWRSZWY7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWViOTFlNzFkMjMzYWRlY2RkNDc1ZDcy
MTk5YjA4MDIzOTU5Mjk1Mi4uZWUwZWZkZGEyYWFhYjQ2NTMxN2U4MjEyYTI0ZThhY2E0NGM2ZTAw
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIxLTA4LTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgorCisgICAgICAgIEFkZCB0aHJlYWQgc2FmZSB2ZXJzaW9uIG9mIENhbk1ha2VDaGVja2VkUHRy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkwMTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBh
IHVuaXQgdGVzdCBmb3IgQ2FuTWFrZVRocmVhZFNhZmVDaGVja2VkUHRyCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9DaGVja2VkUHRyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEkuVGhyZWFkU2FmZUNoZWNrZWRQdHJPYmplY3QpCisgICAgICAgIChXVEZfQ2hlY2tlZFB0
ci5DYW5NYWtlVGhyZWFkU2FmZUNoZWNrZWRQdHIpOiBBZGRlZC4KKwogMjAyMS0wOC0xMSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWEgZWxlbWVudCBp
cyBub3QgYWx3YXlzIGF1dG9wbGF5aW5nIHdoZW4gZ29pbmcgZnJvbSBiYWNrZ3JvdW5kIHRvIGZv
cmVncm91bmQgaWYgaXQgaXMgaW5pdGlhbGx5IG5vdCBpbiB2aWV3cG9ydApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ2hlY2tlZFB0ci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9DaGVja2VkUHRyLmNwcAppbmRleCAzOTZlNGNiMzYyZDE0ZWYz
MWE2NTI3ZDdjYzU5MTViMzA5MjBkMzYwLi43OTdiOGM2MDYyMDg0YmU2NTczMDkyNmMxMmU4NDdm
YTY0ZDIwODMyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9DaGVj
a2VkUHRyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9DaGVja2VkUHRy
LmNwcApAQCAtMjgsNyArMjgsMTAgQEAKICNpbmNsdWRlICJVdGlsaXRpZXMuaCIKICNpbmNsdWRl
IDx3dGYvQ2hlY2tlZFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8
d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKQEAgLTMzMCw0ICszMzMsNDAgQEAgVEVTVChXVEZfQ2hlY2tlZFB0ciwgSGFzaFNl
dCkKICAgICB9CiB9CiAKK2NsYXNzIFRocmVhZFNhZmVDaGVja2VkUHRyT2JqZWN0IDogcHVibGlj
IENhbk1ha2VUaHJlYWRTYWZlQ2hlY2tlZFB0ciB7CitwdWJsaWM6CisgICAgc3RkOjphdG9taWM8
dW5zaWduZWQ+IHZhbHVlIHsgMCB9OworfTsKKworVEVTVChXVEZfQ2hlY2tlZFB0ciwgQ2FuTWFr
ZVRocmVhZFNhZmVDaGVja2VkUHRyKQoreworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCB0aHJlYWRD
b3VudCA9IDIwOworICAgIFZlY3RvcjxSZWY8VGhyZWFkPj4gdGhyZWFkczsKKyAgICBUaHJlYWRT
YWZlQ2hlY2tlZFB0ck9iamVjdCBvYmplY3Q7CisKKyAgICBzdGQ6OmF0b21pYzxib29sPiBhbGxU
aHJlYWRzSGF2ZVN0YXJ0ZWQgPSBmYWxzZTsKKyAgICBTZWNvbmRzIHN0YXJ0aW5nVGltZTsKKwor
ICAgIHRocmVhZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0aHJlYWRDb3VudCk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHRocmVhZENvdW50OyArK2kpIHsKKyAgICAgICAgdGhyZWFk
cy5hcHBlbmQoVGhyZWFkOjpjcmVhdGUoIkNoZWNrZWRQdHIgdGVzdGluZyB0aHJlYWQiLCBbJl0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIENoZWNrZWRQdHIgcHRyID0gJm9iamVjdDsKKyAgICAg
ICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTAw
MDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIENoZWNrZWRSZWYgcmVmIHsgKnB0ciB9Owor
ICAgICAgICAgICAgICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICAr
K3JlZi0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIHB0ciA9IHJlZjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IHdoaWxlICghYWxsVGhyZWFkc0hhdmVTdGFydGVkIHx8IFdh
bGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpIC0gc3RhcnRpbmdUaW1lIDwgU2Vjb25k
czo6ZnJvbU1pbGxpc2Vjb25kcyg1KSk7CisgICAgICAgIH0pKTsKKyAgICB9CisKKyAgICBzdGFy
dGluZ1RpbWUgPSBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsKKyAgICBhbGxU
aHJlYWRzSGF2ZVN0YXJ0ZWQgPSB0cnVlOworCisgICAgZm9yIChhdXRvJiB0aHJlYWQgOiB0aHJl
YWRzKQorICAgICAgICB0aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435625</attachid>
            <date>2021-08-16 13:12:13 -0700</date>
            <delta_ts>2021-08-16 13:42:09 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-229018-20210816131212.patch</filename>
            <type>text/plain</type>
            <size>7075</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwOTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdkYjg0MjMyZjQ0ODdiNmNkM2NmNjUx
ZTAxM2U4NjUxNDc2OThlZmMuLjBmZmI3ZTA0NTQ0OTNjYmFjOTE1NDE3ODAyODYwZGFmY2JjM2Vj
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMDgtMTIgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHRocmVhZCBzYWZlIHZlcnNpb24gb2YgQ2FuTWFr
ZUNoZWNrZWRQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyOTAxOAorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAg
ICAgIEludHJvZHVjZSBDYW5NYWtlVGhyZWFkU2FmZUNoZWNrZWRQdHIgd2hpY2ggaXMgYSB0aHJl
YWQgc2FmZSB2ZXJzaW9uIG9mIENhbk1ha2VDaGVja2VkUHRyLgorCisgICAgICAgICogd3RmL0No
ZWNrZWRSZWYuaDoKKyAgICAgICAgKFdURjo6Q2FuTWFrZUNoZWNrZWRQdHJCYXNlKTogRXh0cmFj
dGVkIGZyb20gQ2FuTWFrZUNoZWNrZWRQdHIuCisgICAgICAgIChXVEY6OkNhbk1ha2VDaGVja2Vk
UHRyQmFzZTo6fkNhbk1ha2VDaGVja2VkUHRyQmFzZSk6CisgICAgICAgIChXVEY6OkNhbk1ha2VD
aGVja2VkUHRyQmFzZTo6cHRyQ291bnQgY29uc3QpOgorICAgICAgICAoV1RGOjpTaW5nbGVUaHJl
YWRJbnRlZ3JhbFdyYXBwZXIpOiBBZGRlZC4KKyAgICAgICAgKFdURjo6U2luZ2xlVGhyZWFkSW50
ZWdyYWxXcmFwcGVyOjpTaW5nbGVUaHJlYWRJbnRlZ3JhbFdyYXBwZXIpOgorICAgICAgICAoV1RG
OjpTaW5nbGVUaHJlYWRJbnRlZ3JhbFdyYXBwZXI6Om9wZXJhdG9yIEludGVncmFsVHlwZSBjb25z
dCk6CisgICAgICAgIChXVEY6OlNpbmdsZVRocmVhZEludGVncmFsV3JhcHBlcjo6b3BlcmF0b3Ih
IGNvbnN0KToKKyAgICAgICAgKFdURjo6U2luZ2xlVGhyZWFkSW50ZWdyYWxXcmFwcGVyOjpvcGVy
YXRvcisrKToKKyAgICAgICAgKFdURjo6U2luZ2xlVGhyZWFkSW50ZWdyYWxXcmFwcGVyOjpvcGVy
YXRvci0tKToKKyAgICAgICAgKFdURjo6U2luZ2xlVGhyZWFkSW50ZWdyYWxXcmFwcGVyOjphc3Nl
cnRUaHJlYWQgY29uc3QpOgorICAgICAgICAoV1RGOjpDYW5NYWtlQ2hlY2tlZFB0cik6IFJlZGVm
aW5lZCB1c2luZyBDYW5NYWtlQ2hlY2tlZFB0ckJhc2UgYW5kIFNpbXBsZU5vbkF0b21pY1R5cGUu
CisgICAgICAgIChXVEY6OkNhbk1ha2VUaHJlYWRTYWZlQ2hlY2tlZFB0cik6IEFkZGVkLgorCiAy
MDIxLTA4LTExICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFN1
c3BlbmQgV29ya1F1ZXVlIG9mIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgYW5kIExvY2FsU3RvcmFn
ZSBzb29uZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRSZWYuaCBiL1NvdXJj
ZS9XVEYvd3RmL0NoZWNrZWRSZWYuaAppbmRleCA2NjQxOGRkYTFkN2QxOWQ4MzE2YzQ5MTg5ODdk
ZDRmZDZlOTNhOWFjLi4zOTNmMTIzOGE2NWZlNjA0NGJhNTc4OWNiYzA4MjFiMTNlZjBhMjhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkUmVmLmgKKysrIGIvU291cmNlL1dURi93
dGYvQ2hlY2tlZFJlZi5oCkBAIC0yNSwxMCArMjUsMTUgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9SYXdQdHJUcmFpdHMuaD4KIAorI2lmIEFTU0VS
VF9FTkFCTEVECisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXVEYgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQdHJUcmFpdHM+CkBAIC0y
MjAsMTggKzIyNSw4MCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgUHRySGFzaDxDaGVj
a2VkUmVmPFA+PiA6IFB0ckhhc2hCYXNlPENoZWNrZWRSZWY8UD4sCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFA+IHN0cnVjdCBEZWZhdWx0SGFzaDxDaGVja2VkUmVmPFA+PiA6IFB0ckhhc2g8Q2hlY2tl
ZFJlZjxQPj4geyB9OwogCi1jbGFzcyBDYW5NYWtlQ2hlY2tlZFB0ciB7Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgU3RvcmFnZVR5cGUsIHR5cGVuYW1lIFB0ckNvdW50ZXJUeXBlPiBjbGFzcyBDYW5NYWtl
Q2hlY2tlZFB0ckJhc2UgewogcHVibGljOgotICAgIH5DYW5NYWtlQ2hlY2tlZFB0cigpIHsgUkVM
RUFTRV9BU1NFUlQoIW1fY291bnQpOyB9CisgICAgfkNhbk1ha2VDaGVja2VkUHRyQmFzZSgpIHsg
UkVMRUFTRV9BU1NFUlQoIW1fY291bnQpOyB9CiAKLSAgICB1aW50MTZfdCBwdHJDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKyAgICBQdHJDb3VudGVyVHlwZSBwdHJDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KICAgICB2b2lkIGluY3JlbWVudFB0ckNvdW50KCkgeyAr
K21fY291bnQ7IH0KICAgICB2b2lkIGRlY3JlbWVudFB0ckNvdW50KCkgeyBBU1NFUlQobV9jb3Vu
dCk7IC0tbV9jb3VudDsgfQorCiBwcml2YXRlOgotICAgIHVpbnQxNl90IG1fY291bnQgeyAwIH07
CisgICAgU3RvcmFnZVR5cGUgbV9jb3VudCB7IDAgfTsKIH07CiAKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBJbnRlZ3JhbFR5cGU+CitjbGFzcyBTaW5nbGVUaHJlYWRJbnRlZ3JhbFdyYXBwZXIgeworcHVi
bGljOgorICAgIFNpbmdsZVRocmVhZEludGVncmFsV3JhcHBlcihJbnRlZ3JhbFR5cGUpOworCisg
ICAgb3BlcmF0b3IgSW50ZWdyYWxUeXBlKCkgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdDsKKyAgICBTaW5nbGVUaHJlYWRJbnRlZ3JhbFdyYXBwZXImIG9wZXJhdG9yKysoKTsKKyAg
ICBTaW5nbGVUaHJlYWRJbnRlZ3JhbFdyYXBwZXImIG9wZXJhdG9yLS0oKTsKKworcHJpdmF0ZToK
KyAgICB2b2lkIGFzc2VydFRocmVhZCgpIGNvbnN0IHsgQVNTRVJUKG1fdGhyZWFkLnB0cigpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7IH0KKworICAgIEludGVncmFsVHlwZSBtX3ZhbHVlOworI2lm
IEFTU0VSVF9FTkFCTEVECisgICAgUmVmPFRocmVhZD4gbV90aHJlYWQ7CisjZW5kaWYKK307CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRlZ3JhbFR5cGU+CitpbmxpbmUgU2luZ2xlVGhyZWFkSW50
ZWdyYWxXcmFwcGVyPEludGVncmFsVHlwZT46OlNpbmdsZVRocmVhZEludGVncmFsV3JhcHBlcihJ
bnRlZ3JhbFR5cGUgdmFsdWUpCisgICAgOiBtX3ZhbHVlIHsgdmFsdWUgfQorI2lmIEFTU0VSVF9F
TkFCTEVECisgICAgLCBtX3RocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH0KKyNlbmRpZgoreyB9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRlZ3JhbFR5cGU+CitpbmxpbmUgU2luZ2xlVGhyZWFk
SW50ZWdyYWxXcmFwcGVyPEludGVncmFsVHlwZT46Om9wZXJhdG9yIEludGVncmFsVHlwZSgpIGNv
bnN0Cit7CisgICAgYXNzZXJ0VGhyZWFkKCk7CisgICAgcmV0dXJuIG1fdmFsdWU7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBJbnRlZ3JhbFR5cGU+CitpbmxpbmUgYm9vbCBTaW5nbGVUaHJlYWRJ
bnRlZ3JhbFdyYXBwZXI8SW50ZWdyYWxUeXBlPjo6b3BlcmF0b3IhKCkgY29uc3QKK3sKKyAgICBh
c3NlcnRUaHJlYWQoKTsKKyAgICByZXR1cm4gIW1fdmFsdWU7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBJbnRlZ3JhbFR5cGU+CitpbmxpbmUgU2luZ2xlVGhyZWFkSW50ZWdyYWxXcmFwcGVyPElu
dGVncmFsVHlwZT4mIFNpbmdsZVRocmVhZEludGVncmFsV3JhcHBlcjxJbnRlZ3JhbFR5cGU+Ojpv
cGVyYXRvcisrKCkKK3sKKyAgICBhc3NlcnRUaHJlYWQoKTsKKyAgICBtX3ZhbHVlKys7CisgICAg
cmV0dXJuICp0aGlzOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50ZWdyYWxUeXBlPgoraW5s
aW5lIFNpbmdsZVRocmVhZEludGVncmFsV3JhcHBlcjxJbnRlZ3JhbFR5cGU+JiBTaW5nbGVUaHJl
YWRJbnRlZ3JhbFdyYXBwZXI8SW50ZWdyYWxUeXBlPjo6b3BlcmF0b3ItLSgpCit7CisgICAgYXNz
ZXJ0VGhyZWFkKCk7CisgICAgbV92YWx1ZS0tOworICAgIHJldHVybiAqdGhpczsKK30KKwordXNp
bmcgQ2FuTWFrZUNoZWNrZWRQdHIgPSBDYW5NYWtlQ2hlY2tlZFB0ckJhc2U8U2luZ2xlVGhyZWFk
SW50ZWdyYWxXcmFwcGVyPHVpbnQxNl90PiwgdWludDE2X3Q+OwordXNpbmcgQ2FuTWFrZVRocmVh
ZFNhZmVDaGVja2VkUHRyID0gQ2FuTWFrZUNoZWNrZWRQdHJCYXNlPHN0ZDo6YXRvbWljPHVpbnQx
Nl90PiwgdWludDE2X3Q+OworCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpDYW5N
YWtlQ2hlY2tlZFB0cjsKK3VzaW5nIFdURjo6Q2FuTWFrZVRocmVhZFNhZmVDaGVja2VkUHRyOwog
dXNpbmcgV1RGOjpDaGVja2VkUmVmOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDFlYjkxZTcxZDIzM2FkZWNkZDQ3NWQ3MjE5OWIwODAyMzk1OTI5
NTIuLjg4ZGE5N2UyM2MxMThhYjZkMGE2NGE4YmE4YzM4OTgzM2M0ZTU4YTIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAyMS0wOC0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBB
ZGQgdGhyZWFkIHNhZmUgdmVyc2lvbiBvZiBDYW5NYWtlQ2hlY2tlZFB0cgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MDE4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgQWRkZWQgYSB1bml0IHRlc3QgZm9y
IENhbk1ha2VUaHJlYWRTYWZlQ2hlY2tlZFB0cgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvQ2hlY2tlZFB0ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJLlRocmVhZFNh
ZmVDaGVja2VkUHRyT2JqZWN0KQorICAgICAgICAoV1RGX0NoZWNrZWRQdHIuQ2FuTWFrZVRocmVh
ZFNhZmVDaGVja2VkUHRyKTogQWRkZWQuCisKIDIwMjEtMDgtMTEgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhIGVsZW1lbnQgaXMgbm90IGFsd2F5cyBh
dXRvcGxheWluZyB3aGVuIGdvaW5nIGZyb20gYmFja2dyb3VuZCB0byBmb3JlZ3JvdW5kIGlmIGl0
IGlzIGluaXRpYWxseSBub3QgaW4gdmlld3BvcnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0NoZWNrZWRQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvQ2hlY2tlZFB0ci5jcHAKaW5kZXggMzk2ZTRjYjM2MmQxNGVmMzFhNjUyN2Q3Y2M1OTE1
YjMwOTIwZDM2MC4uNzk3YjhjNjA2MjA4NGJlNjU3MzA5MjZjMTJlODQ3ZmE2NGQyMDgzMiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ2hlY2tlZFB0ci5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ2hlY2tlZFB0ci5jcHAKQEAgLTI4LDcg
KzI4LDEwIEBACiAjaW5jbHVkZSAiVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Cisj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC0z
MzAsNCArMzMzLDQwIEBAIFRFU1QoV1RGX0NoZWNrZWRQdHIsIEhhc2hTZXQpCiAgICAgfQogfQog
CitjbGFzcyBUaHJlYWRTYWZlQ2hlY2tlZFB0ck9iamVjdCA6IHB1YmxpYyBDYW5NYWtlVGhyZWFk
U2FmZUNoZWNrZWRQdHIgeworcHVibGljOgorICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiB2YWx1
ZSB7IDAgfTsKK307CisKK1RFU1QoV1RGX0NoZWNrZWRQdHIsIENhbk1ha2VUaHJlYWRTYWZlQ2hl
Y2tlZFB0cikKK3sKKyAgICBjb25zdGV4cHIgdW5zaWduZWQgdGhyZWFkQ291bnQgPSAyMDsKKyAg
ICBWZWN0b3I8UmVmPFRocmVhZD4+IHRocmVhZHM7CisgICAgVGhyZWFkU2FmZUNoZWNrZWRQdHJP
YmplY3Qgb2JqZWN0OworCisgICAgc3RkOjphdG9taWM8Ym9vbD4gYWxsVGhyZWFkc0hhdmVTdGFy
dGVkID0gZmFsc2U7CisgICAgU2Vjb25kcyBzdGFydGluZ1RpbWU7CisKKyAgICB0aHJlYWRzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkodGhyZWFkQ291bnQpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB0aHJlYWRDb3VudDsgKytpKSB7CisgICAgICAgIHRocmVhZHMuYXBwZW5kKFRocmVh
ZDo6Y3JlYXRlKCJDaGVja2VkUHRyIHRlc3RpbmcgdGhyZWFkIiwgWyZdKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBDaGVja2VkUHRyIHB0ciA9ICZvYmplY3Q7CisgICAgICAgICAgICBkbyB7Cisg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAg
ICAgICAgICAgICAgICAgICBDaGVja2VkUmVmIHJlZiB7ICpwdHIgfTsKKyAgICAgICAgICAgICAg
ICAgICAgcHRyID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgKytyZWYtPnZhbHVlOwor
ICAgICAgICAgICAgICAgICAgICBwdHIgPSByZWY7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSB3aGlsZSAoIWFsbFRocmVhZHNIYXZlU3RhcnRlZCB8fCBXYWxsVGltZTo6bm93KCku
c2Vjb25kc1NpbmNlRXBvY2goKSAtIHN0YXJ0aW5nVGltZSA8IFNlY29uZHM6OmZyb21NaWxsaXNl
Y29uZHMoNSkpOworICAgICAgICB9KSk7CisgICAgfQorCisgICAgc3RhcnRpbmdUaW1lID0gV2Fs
bFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCk7CisgICAgYWxsVGhyZWFkc0hhdmVTdGFy
dGVkID0gdHJ1ZTsKKworICAgIGZvciAoYXV0byYgdGhyZWFkIDogdGhyZWFkcykKKyAgICAgICAg
dGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>