<?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>234961</bug_id>
          
          <creation_ts>2022-01-07 08:33:38 -0800</creation_ts>
          <short_desc>AX: In AXObjectCache, use WeakHashSet::forEach iteration and clean up stale hashset entries</short_desc>
          <delta_ts>2022-01-08 08:47:47 -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>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1828913</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-07 08:33:38 -0800</bug_when>
    <thetext>Quoting WebKit&apos;s documentation for WeakHashSets:

https://github.com/WebKit/WebKit/blob/main/Introduction.md#weakhashset

&gt; Because WeakHashSet does not get notified when the referenced object is deleted, the users / owners of WeakHashSet are still responsible for deleting the relevant entries from the set. Otherwise, WeakHashSet will hold onto WeakPtrImpl until computeSize is called or rehashing happens.

AXObjectCache does not always do this book-keeping for the WeakHashSets it holds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828914</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-07 08:33:51 -0800</bug_when>
    <thetext>&lt;rdar://problem/87253115&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828920</commentid>
    <comment_count>2</comment_count>
      <attachid>448600</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-07 08:42:37 -0800</bug_when>
    <thetext>Created attachment 448600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828931</commentid>
    <comment_count>3</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-01-07 09:24:59 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #2)
&gt; Created attachment 448600 [details]
&gt; Patch

--- a/Source/WebCore/ChangeLog
+++ a/Source/WebCore/ChangeLog

+        AX: Improve WeakHashSet hygienics in AXObjectCache

Would prefer a more concrete, yet concise, title stating the problem or what the change is doing: e.g., Use WeakHashSet::forEach to iterate over AXObjectCache members.

+        AXObjectCache owns four WeakHashSets:
+          - m_deferredRecomputeIsIgnoredList
+          - m_deferredSelectedChildredChangedList
+          - m_deferredModalChangedList
+          - m_deferredMenuListChange
+

You probably don&apos;t need to enumerate all member variables in the ChangeLog.

+        WeakHashSets are not notified when the objects they hold are deleted[1],
+        so we should be cleaning them up in AXObjectCache::remove(Node&amp;).
+
+        This patch also replaces range-based for loop iteration over these
+        WeakHashSets with WeakHashSet::forEach, which inherently checks that
+        each item is valid (non-null and contained in the hashset) before
+        using the item.
+
Do we need to remove from the sets in AXObjectCache::remove? Since these are WeakPtr, I think they should be set to null, and thus the check on the loop would be enough, right?

--- a/Source/WebCore/accessibility/AXObjectCache.cpp
+++ a/Source/WebCore/accessibility/AXObjectCache.cpp

+        m_deferredRecomputeIsIgnoredList.remove(downcast&lt;Element&gt;(node));
+        m_deferredSelectedChildredChangedList.remove(downcast&lt;Element&gt;(node));
+        m_deferredModalChangedList.remove(downcast&lt;Element&gt;(node));
+        m_deferredMenuListChange.remove(downcast&lt;Element&gt;(node));

Do we need to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828953</commentid>
    <comment_count>4</comment_count>
      <attachid>448607</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-07 10:02:41 -0800</bug_when>
    <thetext>Created attachment 448607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828954</commentid>
    <comment_count>5</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-01-07 10:04:25 -0800</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #3)
&gt; (In reply to Tyler Wilcock from comment #2)
&gt; &gt; Created attachment 448600 [details]
&gt; &gt; Patch
&gt; 
&gt; --- a/Source/WebCore/ChangeLog
&gt; +++ a/Source/WebCore/ChangeLog
&gt; 
&gt; +        AX: Improve WeakHashSet hygienics in AXObjectCache
&gt; 
&gt; Would prefer a more concrete, yet concise, title stating the problem or what
&gt; the change is doing: e.g., Use WeakHashSet::forEach to iterate over
&gt; AXObjectCache members.
Fixed.

&gt; +        AXObjectCache owns four WeakHashSets:
&gt; +          - m_deferredRecomputeIsIgnoredList
&gt; +          - m_deferredSelectedChildredChangedList
&gt; +          - m_deferredModalChangedList
&gt; +          - m_deferredMenuListChange
&gt; +
&gt; 
&gt; You probably don&apos;t need to enumerate all member variables in the ChangeLog.
Fixed.

&gt; +        WeakHashSets are not notified when the objects they hold are
&gt; deleted[1],
&gt; +        so we should be cleaning them up in AXObjectCache::remove(Node&amp;).
&gt; +
&gt; +        This patch also replaces range-based for loop iteration over these
&gt; +        WeakHashSets with WeakHashSet::forEach, which inherently checks that
&gt; +        each item is valid (non-null and contained in the hashset) before
&gt; +        using the item.
&gt; +
&gt; Do we need to remove from the sets in AXObjectCache::remove? Since these are
&gt; WeakPtr, I think they should be set to null, and thus the check on the loop
&gt; would be enough, right?
&gt; 
&gt; --- a/Source/WebCore/accessibility/AXObjectCache.cpp
&gt; +++ a/Source/WebCore/accessibility/AXObjectCache.cpp
&gt; 
&gt; +        m_deferredRecomputeIsIgnoredList.remove(downcast&lt;Element&gt;(node));
&gt; +       
&gt; m_deferredSelectedChildredChangedList.remove(downcast&lt;Element&gt;(node));
&gt; +        m_deferredModalChangedList.remove(downcast&lt;Element&gt;(node));
&gt; +        m_deferredMenuListChange.remove(downcast&lt;Element&gt;(node));
&gt; 
&gt; Do we need to do this?
We do need these removes, as WeakHashSets aren&apos;t informed when the backing objects go away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829222</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-08 08:47:45 -0800</bug_when>
    <thetext>Committed r287811 (245863@main): &lt;https://commits.webkit.org/245863@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448607.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448600</attachid>
            <date>2022-01-07 08:42:37 -0800</date>
            <delta_ts>2022-01-07 10:02:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234961-20220107104236.patch</filename>
            <type>text/plain</type>
            <size>5930</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU5YWQwMzFhMDQ4MmQ4
NjMxYmY0MGMxNDllYWZlZWMyMjRlZTUyNi4uZTRhNWFiZTkwMWViNDFmNjFjODg4MTkwOWZlZTQw
NDYzYjdhOGQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIyLTAxLTA3ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEltcHJvdmUgV2Vh
a0hhc2hTZXQgaHlnaWVuaWNzIGluIEFYT2JqZWN0Q2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDk2MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFYT2JqZWN0Q2FjaGUgb3ducyBmb3VyIFdlYWtI
YXNoU2V0czoKKyAgICAgICAgICAtIG1fZGVmZXJyZWRSZWNvbXB1dGVJc0lnbm9yZWRMaXN0Cisg
ICAgICAgICAgLSBtX2RlZmVycmVkU2VsZWN0ZWRDaGlsZHJlZENoYW5nZWRMaXN0CisgICAgICAg
ICAgLSBtX2RlZmVycmVkTW9kYWxDaGFuZ2VkTGlzdAorICAgICAgICAgIC0gbV9kZWZlcnJlZE1l
bnVMaXN0Q2hhbmdlCisKKyAgICAgICAgV2Vha0hhc2hTZXRzIGFyZSBub3Qgbm90aWZpZWQgd2hl
biB0aGUgb2JqZWN0cyB0aGV5IGhvbGQgYXJlIGRlbGV0ZWRbMV0sCisgICAgICAgIHNvIHdlIHNo
b3VsZCBiZSBjbGVhbmluZyB0aGVtIHVwIGluIEFYT2JqZWN0Q2FjaGU6OnJlbW92ZShOb2RlJiku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIHJlcGxhY2VzIHJhbmdlLWJhc2VkIGZvciBsb29w
IGl0ZXJhdGlvbiBvdmVyIHRoZXNlCisgICAgICAgIFdlYWtIYXNoU2V0cyB3aXRoIFdlYWtIYXNo
U2V0Ojpmb3JFYWNoLCB3aGljaCBpbmhlcmVudGx5IGNoZWNrcyB0aGF0CisgICAgICAgIGVhY2gg
aXRlbSBpcyB2YWxpZCAobm9uLW51bGwgYW5kIGNvbnRhaW5lZCBpbiB0aGUgaGFzaHNldCkgYmVm
b3JlCisgICAgICAgIHVzaW5nIHRoZSBpdGVtLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRo
dWIuY29tL1dlYktpdC9XZWJLaXQvYmxvYi9tYWluL0ludHJvZHVjdGlvbi5tZCN3ZWFraGFzaHNl
dAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnJlbW92ZSk6CisgICAgICAgIERlbGV0ZSB0aGUgcmVt
b3ZlZCBub2RlIGZyb20gQVhPYmplY3RDYWNoZSdzIG93bmVkIFdlYWtIYXNoU2V0cy4KKyAgICAg
ICAgKFdlYkNvcmU6OmZpbHRlcldlYWtIYXNoU2V0Rm9yUmVtb3ZhbCk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cHJlcGFyZUZvckRvY3VtZW50RGVzdHJ1Y3Rpb24p
OgorICAgICAgICBVc2UgZmlsdGVyV2Vha0hhc2hTZXRGb3JSZW1vdmFsIHRvIHJlbW92ZSBzb29u
LXRvLWJlLWRlbGV0ZWQgbm9kZXMKKyAgICAgICAgZnJvbSBBWE9iamVjdENhY2hlJ3Mgb3duZWQg
V2Vha0hhc2hTZXRzLgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cGVyZm9ybURl
ZmVycmVkQ2FjaGVVcGRhdGUpOgorICAgICAgICBVc2UgV2Vha0hhc2hTZXQ6OmZvckVhY2ggaW5z
dGVhZCBvZiByYW5nZS1iYXNlZCBmb3IgbG9vcHMuCisKIDIwMjItMDEtMDcgIEFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDbGVhbnVwXSBSZW5kZXJFbGVtZW50Ojpj
b250YWluaW5nQmxvY2tGb3IqKGZpeGVkL2Fic29sdXRlL2luZmxvdylQb3NpdGlvbiBpcyBzbGln
aHRseSBjb25mdXNpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwCmluZGV4IDdmYTk3NTgwNzBiOGQ4YTdjZTJmMDMzMmNiYjQyYzFlNTc4YWE4ZmMu
LjA1NjRiZTc1ZmQxOTFjZmQzNGM4NzJmODYwOWIwOGVlMGFkNzA3ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtODYzLDYgKzg2Mywx
MCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlbW92ZShOb2RlJiBub2RlKQogICAgICAgICBtX2Rl
ZmVycmVkVGV4dEZvcm1Db250cm9sVmFsdWUucmVtb3ZlKGRvd25jYXN0PEVsZW1lbnQ+KCZub2Rl
KSk7CiAgICAgICAgIG1fZGVmZXJyZWRBdHRyaWJ1dGVDaGFuZ2UucmVtb3ZlKGRvd25jYXN0PEVs
ZW1lbnQ+KCZub2RlKSk7CiAgICAgICAgIG1fbW9kYWxFbGVtZW50c1NldC5yZW1vdmUoZG93bmNh
c3Q8RWxlbWVudD4oJm5vZGUpKTsKKyAgICAgICAgbV9kZWZlcnJlZFJlY29tcHV0ZUlzSWdub3Jl
ZExpc3QucmVtb3ZlKGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpKTsKKyAgICAgICAgbV9kZWZlcnJl
ZFNlbGVjdGVkQ2hpbGRyZWRDaGFuZ2VkTGlzdC5yZW1vdmUoZG93bmNhc3Q8RWxlbWVudD4obm9k
ZSkpOworICAgICAgICBtX2RlZmVycmVkTW9kYWxDaGFuZ2VkTGlzdC5yZW1vdmUoZG93bmNhc3Q8
RWxlbWVudD4obm9kZSkpOworICAgICAgICBtX2RlZmVycmVkTWVudUxpc3RDaGFuZ2UucmVtb3Zl
KGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpKTsKICAgICB9CiAgICAgbV9kZWZlcnJlZENoaWxkcmVu
Q2hhbmdlZE5vZGVMaXN0LnJlbW92ZSgmbm9kZSk7CiAgICAgbV9kZWZlcnJlZFRleHRDaGFuZ2Vk
TGlzdC5yZW1vdmUoJm5vZGUpOwpAQCAtMzE2MSw2ICszMTY1LDEzIEBAIHN0YXRpYyB2b2lkIGZp
bHRlckxpc3RGb3JSZW1vdmFsKGNvbnN0IExpc3RIYXNoU2V0PFQ+JiBsaXN0LCBjb25zdCBEb2N1
bWVudCYgZG9jCiAgICAgICAgIGNvbmRpdGlvbmFsbHlBZGROb2RlVG9GaWx0ZXJMaXN0KG5vZGUs
IGRvY3VtZW50LCBub2Rlc1RvUmVtb3ZlKTsKIH0KIAorc3RhdGljIHZvaWQgZmlsdGVyV2Vha0hh
c2hTZXRGb3JSZW1vdmFsKFdlYWtIYXNoU2V0PEVsZW1lbnQ+JiB3ZWFrSGFzaFNldCwgY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50LCBIYXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVzVG9SZW1vdmUpCit7
CisgICAgd2Vha0hhc2hTZXQuZm9yRWFjaChbJl0gKGF1dG8mIGVsZW1lbnQpIHsKKyAgICAgICAg
Y29uZGl0aW9uYWxseUFkZE5vZGVUb0ZpbHRlckxpc3QoJmVsZW1lbnQsIGRvY3VtZW50LCBub2Rl
c1RvUmVtb3ZlKTsKKyAgICB9KTsKK30KKwogdm9pZCBBWE9iamVjdENhY2hlOjpwcmVwYXJlRm9y
RG9jdW1lbnREZXN0cnVjdGlvbihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgSGFz
aFNldDxSZWY8Tm9kZT4+IG5vZGVzVG9SZW1vdmU7CkBAIC0zMTY4LDYgKzMxNzksMTAgQEAgdm9p
ZCBBWE9iamVjdENhY2hlOjpwcmVwYXJlRm9yRG9jdW1lbnREZXN0cnVjdGlvbihjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQpCiAgICAgZmlsdGVyTGlzdEZvclJlbW92YWwobV9tb2RhbEVsZW1lbnRz
U2V0LCBkb2N1bWVudCwgbm9kZXNUb1JlbW92ZSk7CiAgICAgZmlsdGVyTGlzdEZvclJlbW92YWwo
bV9kZWZlcnJlZFRleHRDaGFuZ2VkTGlzdCwgZG9jdW1lbnQsIG5vZGVzVG9SZW1vdmUpOwogICAg
IGZpbHRlckxpc3RGb3JSZW1vdmFsKG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWROb2RlTGlzdCwg
ZG9jdW1lbnQsIG5vZGVzVG9SZW1vdmUpOworICAgIGZpbHRlcldlYWtIYXNoU2V0Rm9yUmVtb3Zh
bChtX2RlZmVycmVkUmVjb21wdXRlSXNJZ25vcmVkTGlzdCwgZG9jdW1lbnQsIG5vZGVzVG9SZW1v
dmUpOworICAgIGZpbHRlcldlYWtIYXNoU2V0Rm9yUmVtb3ZhbChtX2RlZmVycmVkU2VsZWN0ZWRD
aGlsZHJlZENoYW5nZWRMaXN0LCBkb2N1bWVudCwgbm9kZXNUb1JlbW92ZSk7CisgICAgZmlsdGVy
V2Vha0hhc2hTZXRGb3JSZW1vdmFsKG1fZGVmZXJyZWRNb2RhbENoYW5nZWRMaXN0LCBkb2N1bWVu
dCwgbm9kZXNUb1JlbW92ZSk7CisgICAgZmlsdGVyV2Vha0hhc2hTZXRGb3JSZW1vdmFsKG1fZGVm
ZXJyZWRNZW51TGlzdENoYW5nZSwgZG9jdW1lbnQsIG5vZGVzVG9SZW1vdmUpOwogICAgIGZpbHRl
ck1hcEZvclJlbW92YWwobV9kZWZlcnJlZFRleHRGb3JtQ29udHJvbFZhbHVlLCBkb2N1bWVudCwg
bm9kZXNUb1JlbW92ZSk7CiAgICAgZmlsdGVyTWFwRm9yUmVtb3ZhbChtX2RlZmVycmVkQXR0cmli
dXRlQ2hhbmdlLCBkb2N1bWVudCwgbm9kZXNUb1JlbW92ZSk7CiAgICAgZmlsdGVyVmVjdG9yUGFp
ckZvclJlbW92YWwobV9kZWZlcnJlZEZvY3VzZWROb2RlQ2hhbmdlLCBkb2N1bWVudCwgbm9kZXNU
b1JlbW92ZSk7CkBAIC0zMjE4LDE0ICszMjMzLDE1IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cGVy
Zm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKQogICAgICAgICB0ZXh0Q2hhbmdlZChub2RlKTsKICAg
ICBtX2RlZmVycmVkVGV4dENoYW5nZWRMaXN0LmNsZWFyKCk7CiAKLSAgICBmb3IgKGF1dG8mIGVs
ZW1lbnQgOiBtX2RlZmVycmVkUmVjb21wdXRlSXNJZ25vcmVkTGlzdCkgeworICAgIG1fZGVmZXJy
ZWRSZWNvbXB1dGVJc0lnbm9yZWRMaXN0LmZvckVhY2goW3RoaXNdIChhdXRvJiBlbGVtZW50KSB7
CiAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKSkKICAgICAg
ICAgICAgIHJlY29tcHV0ZUlzSWdub3JlZChyZW5kZXJlcik7Ci0gICAgfQorICAgIH0pOwogICAg
IG1fZGVmZXJyZWRSZWNvbXB1dGVJc0lnbm9yZWRMaXN0LmNsZWFyKCk7Ci0gICAgCi0gICAgZm9y
IChhdXRvJiBzZWxlY3RFbGVtZW50IDogbV9kZWZlcnJlZFNlbGVjdGVkQ2hpbGRyZWRDaGFuZ2Vk
TGlzdCkKKworICAgIG1fZGVmZXJyZWRTZWxlY3RlZENoaWxkcmVkQ2hhbmdlZExpc3QuZm9yRWFj
aChbdGhpc10gKGF1dG8mIHNlbGVjdEVsZW1lbnQpIHsKICAgICAgICAgc2VsZWN0ZWRDaGlsZHJl
bkNoYW5nZWQoJnNlbGVjdEVsZW1lbnQpOworICAgIH0pOwogICAgIG1fZGVmZXJyZWRTZWxlY3Rl
ZENoaWxkcmVkQ2hhbmdlZExpc3QuY2xlYXIoKTsKIAogICAgIGZvciAoYXV0byYgZGVmZXJyZWRG
b3JtQ29udHJvbENvbnRleHQgOiBtX2RlZmVycmVkVGV4dEZvcm1Db250cm9sVmFsdWUpIHsKQEAg
LTMyNDYsMTIgKzMyNjIsMTQgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJyZWRD
YWNoZVVwZGF0ZSgpCiAgICAgfQogICAgIG1fZGVmZXJyZWRGb2N1c2VkTm9kZUNoYW5nZS5jbGVh
cigpOwogCi0gICAgZm9yIChhdXRvJiBkZWZlcnJlZE1vZGFsQ2hhbmdlZEVsZW1lbnQgOiBtX2Rl
ZmVycmVkTW9kYWxDaGFuZ2VkTGlzdCkKKyAgICBtX2RlZmVycmVkTW9kYWxDaGFuZ2VkTGlzdC5m
b3JFYWNoKFt0aGlzXSAoYXV0byYgZGVmZXJyZWRNb2RhbENoYW5nZWRFbGVtZW50KSB7CiAgICAg
ICAgIGhhbmRsZU1vZGFsQ2hhbmdlKGRlZmVycmVkTW9kYWxDaGFuZ2VkRWxlbWVudCk7CisgICAg
fSk7CiAgICAgbV9kZWZlcnJlZE1vZGFsQ2hhbmdlZExpc3QuY2xlYXIoKTsKIAotICAgIGZvciAo
YXV0byYgZGVmZXJyZWRNZW51TGlzdENoYW5nZUVsZW1lbnQgOiBtX2RlZmVycmVkTWVudUxpc3RD
aGFuZ2UpCisgICAgbV9kZWZlcnJlZE1lbnVMaXN0Q2hhbmdlLmZvckVhY2goW3RoaXNdIChhdXRv
JiBkZWZlcnJlZE1lbnVMaXN0Q2hhbmdlRWxlbWVudCkgewogICAgICAgICBwb3N0Tm90aWZpY2F0
aW9uKCZkZWZlcnJlZE1lbnVMaXN0Q2hhbmdlRWxlbWVudCwgQVhPYmplY3RDYWNoZTo6QVhNZW51
TGlzdFZhbHVlQ2hhbmdlZCk7CisgICAgfSk7CiAgICAgbV9kZWZlcnJlZE1lbnVMaXN0Q2hhbmdl
LmNsZWFyKCk7CiAgICAgCiAgICAgcGxhdGZvcm1QZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448607</attachid>
            <date>2022-01-07 10:02:41 -0800</date>
            <delta_ts>2022-01-08 08:47:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234961-20220107120240.patch</filename>
            <type>text/plain</type>
            <size>5753</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU5YWQwMzFhMDQ4MmQ4
NjMxYmY0MGMxNDllYWZlZWMyMjRlZTUyNi4uMDA5Nzg4NTY5ZWE2YzlmOTBjMjcxNzZlYjk2Zjdi
MGYyYWQwM2ZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTAxLTA3ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEltcHJvdmUgV2Vh
a0hhc2hTZXQgaHlnaWVuaWNzIGluIEFYT2JqZWN0Q2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDk2MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFYT2JqZWN0Q2FjaGUgb3ducyBmb3VyIFdlYWtI
YXNoU2V0cy4gV2Vha0hhc2hTZXRzIGFyZSBub3Qgbm90aWZpZWQKKyAgICAgICAgd2hlbiB0aGUg
b2JqZWN0cyB0aGV5IGhvbGQgYXJlIGRlbGV0ZWRbMV0sIHNvIHdlIHNob3VsZCBiZSBjbGVhbmlu
ZworICAgICAgICB0aGVtIHVwIGluIEFYT2JqZWN0Q2FjaGU6OnJlbW92ZShOb2RlJikuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhbHNvIHJlcGxhY2VzIHJhbmdlLWJhc2VkIGZvciBsb29wIGl0ZXJh
dGlvbiBvdmVyIHRoZXNlCisgICAgICAgIFdlYWtIYXNoU2V0cyB3aXRoIFdlYWtIYXNoU2V0Ojpm
b3JFYWNoLCB3aGljaCBpbmhlcmVudGx5IGNoZWNrcyB0aGF0CisgICAgICAgIGVhY2ggaXRlbSBp
cyB2YWxpZCAobm9uLW51bGwgYW5kIGNvbnRhaW5lZCBpbiB0aGUgaGFzaHNldCkgYmVmb3JlCisg
ICAgICAgIHVzaW5nIHRoZSBpdGVtLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29t
L1dlYktpdC9XZWJLaXQvYmxvYi9tYWluL0ludHJvZHVjdGlvbi5tZCN3ZWFraGFzaHNldAorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OnJlbW92ZSk6CisgICAgICAgIERlbGV0ZSB0aGUgcmVtb3ZlZCBu
b2RlIGZyb20gQVhPYmplY3RDYWNoZSdzIG93bmVkIFdlYWtIYXNoU2V0cy4KKyAgICAgICAgKFdl
YkNvcmU6OmZpbHRlcldlYWtIYXNoU2V0Rm9yUmVtb3ZhbCk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6cHJlcGFyZUZvckRvY3VtZW50RGVzdHJ1Y3Rpb24pOgorICAg
ICAgICBVc2UgZmlsdGVyV2Vha0hhc2hTZXRGb3JSZW1vdmFsIHRvIHJlbW92ZSBzb29uLXRvLWJl
LWRlbGV0ZWQgbm9kZXMKKyAgICAgICAgZnJvbSBBWE9iamVjdENhY2hlJ3Mgb3duZWQgV2Vha0hh
c2hTZXRzLgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cGVyZm9ybURlZmVycmVk
Q2FjaGVVcGRhdGUpOgorICAgICAgICBVc2UgV2Vha0hhc2hTZXQ6OmZvckVhY2ggaW5zdGVhZCBv
ZiByYW5nZS1iYXNlZCBmb3IgbG9vcHMuCisKIDIwMjItMDEtMDcgIEFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDbGVhbnVwXSBSZW5kZXJFbGVtZW50Ojpjb250YWlu
aW5nQmxvY2tGb3IqKGZpeGVkL2Fic29sdXRlL2luZmxvdylQb3NpdGlvbiBpcyBzbGlnaHRseSBj
b25mdXNpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCmluZGV4IDdmYTk3NTgwNzBiOGQ4YTdjZTJmMDMzMmNiYjQyYzFlNTc4YWE4ZmMuLjA1NjRi
ZTc1ZmQxOTFjZmQzNGM4NzJmODYwOWIwOGVlMGFkNzA3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtODYzLDYgKzg2MywxMCBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnJlbW92ZShOb2RlJiBub2RlKQogICAgICAgICBtX2RlZmVycmVk
VGV4dEZvcm1Db250cm9sVmFsdWUucmVtb3ZlKGRvd25jYXN0PEVsZW1lbnQ+KCZub2RlKSk7CiAg
ICAgICAgIG1fZGVmZXJyZWRBdHRyaWJ1dGVDaGFuZ2UucmVtb3ZlKGRvd25jYXN0PEVsZW1lbnQ+
KCZub2RlKSk7CiAgICAgICAgIG1fbW9kYWxFbGVtZW50c1NldC5yZW1vdmUoZG93bmNhc3Q8RWxl
bWVudD4oJm5vZGUpKTsKKyAgICAgICAgbV9kZWZlcnJlZFJlY29tcHV0ZUlzSWdub3JlZExpc3Qu
cmVtb3ZlKGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpKTsKKyAgICAgICAgbV9kZWZlcnJlZFNlbGVj
dGVkQ2hpbGRyZWRDaGFuZ2VkTGlzdC5yZW1vdmUoZG93bmNhc3Q8RWxlbWVudD4obm9kZSkpOwor
ICAgICAgICBtX2RlZmVycmVkTW9kYWxDaGFuZ2VkTGlzdC5yZW1vdmUoZG93bmNhc3Q8RWxlbWVu
dD4obm9kZSkpOworICAgICAgICBtX2RlZmVycmVkTWVudUxpc3RDaGFuZ2UucmVtb3ZlKGRvd25j
YXN0PEVsZW1lbnQ+KG5vZGUpKTsKICAgICB9CiAgICAgbV9kZWZlcnJlZENoaWxkcmVuQ2hhbmdl
ZE5vZGVMaXN0LnJlbW92ZSgmbm9kZSk7CiAgICAgbV9kZWZlcnJlZFRleHRDaGFuZ2VkTGlzdC5y
ZW1vdmUoJm5vZGUpOwpAQCAtMzE2MSw2ICszMTY1LDEzIEBAIHN0YXRpYyB2b2lkIGZpbHRlckxp
c3RGb3JSZW1vdmFsKGNvbnN0IExpc3RIYXNoU2V0PFQ+JiBsaXN0LCBjb25zdCBEb2N1bWVudCYg
ZG9jCiAgICAgICAgIGNvbmRpdGlvbmFsbHlBZGROb2RlVG9GaWx0ZXJMaXN0KG5vZGUsIGRvY3Vt
ZW50LCBub2Rlc1RvUmVtb3ZlKTsKIH0KIAorc3RhdGljIHZvaWQgZmlsdGVyV2Vha0hhc2hTZXRG
b3JSZW1vdmFsKFdlYWtIYXNoU2V0PEVsZW1lbnQ+JiB3ZWFrSGFzaFNldCwgY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50LCBIYXNoU2V0PFJlZjxOb2RlPj4mIG5vZGVzVG9SZW1vdmUpCit7CisgICAg
d2Vha0hhc2hTZXQuZm9yRWFjaChbJl0gKGF1dG8mIGVsZW1lbnQpIHsKKyAgICAgICAgY29uZGl0
aW9uYWxseUFkZE5vZGVUb0ZpbHRlckxpc3QoJmVsZW1lbnQsIGRvY3VtZW50LCBub2Rlc1RvUmVt
b3ZlKTsKKyAgICB9KTsKK30KKwogdm9pZCBBWE9iamVjdENhY2hlOjpwcmVwYXJlRm9yRG9jdW1l
bnREZXN0cnVjdGlvbihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgSGFzaFNldDxS
ZWY8Tm9kZT4+IG5vZGVzVG9SZW1vdmU7CkBAIC0zMTY4LDYgKzMxNzksMTAgQEAgdm9pZCBBWE9i
amVjdENhY2hlOjpwcmVwYXJlRm9yRG9jdW1lbnREZXN0cnVjdGlvbihjb25zdCBEb2N1bWVudCYg
ZG9jdW1lbnQpCiAgICAgZmlsdGVyTGlzdEZvclJlbW92YWwobV9tb2RhbEVsZW1lbnRzU2V0LCBk
b2N1bWVudCwgbm9kZXNUb1JlbW92ZSk7CiAgICAgZmlsdGVyTGlzdEZvclJlbW92YWwobV9kZWZl
cnJlZFRleHRDaGFuZ2VkTGlzdCwgZG9jdW1lbnQsIG5vZGVzVG9SZW1vdmUpOwogICAgIGZpbHRl
ckxpc3RGb3JSZW1vdmFsKG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWROb2RlTGlzdCwgZG9jdW1l
bnQsIG5vZGVzVG9SZW1vdmUpOworICAgIGZpbHRlcldlYWtIYXNoU2V0Rm9yUmVtb3ZhbChtX2Rl
ZmVycmVkUmVjb21wdXRlSXNJZ25vcmVkTGlzdCwgZG9jdW1lbnQsIG5vZGVzVG9SZW1vdmUpOwor
ICAgIGZpbHRlcldlYWtIYXNoU2V0Rm9yUmVtb3ZhbChtX2RlZmVycmVkU2VsZWN0ZWRDaGlsZHJl
ZENoYW5nZWRMaXN0LCBkb2N1bWVudCwgbm9kZXNUb1JlbW92ZSk7CisgICAgZmlsdGVyV2Vha0hh
c2hTZXRGb3JSZW1vdmFsKG1fZGVmZXJyZWRNb2RhbENoYW5nZWRMaXN0LCBkb2N1bWVudCwgbm9k
ZXNUb1JlbW92ZSk7CisgICAgZmlsdGVyV2Vha0hhc2hTZXRGb3JSZW1vdmFsKG1fZGVmZXJyZWRN
ZW51TGlzdENoYW5nZSwgZG9jdW1lbnQsIG5vZGVzVG9SZW1vdmUpOwogICAgIGZpbHRlck1hcEZv
clJlbW92YWwobV9kZWZlcnJlZFRleHRGb3JtQ29udHJvbFZhbHVlLCBkb2N1bWVudCwgbm9kZXNU
b1JlbW92ZSk7CiAgICAgZmlsdGVyTWFwRm9yUmVtb3ZhbChtX2RlZmVycmVkQXR0cmlidXRlQ2hh
bmdlLCBkb2N1bWVudCwgbm9kZXNUb1JlbW92ZSk7CiAgICAgZmlsdGVyVmVjdG9yUGFpckZvclJl
bW92YWwobV9kZWZlcnJlZEZvY3VzZWROb2RlQ2hhbmdlLCBkb2N1bWVudCwgbm9kZXNUb1JlbW92
ZSk7CkBAIC0zMjE4LDE0ICszMjMzLDE1IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cGVyZm9ybURl
ZmVycmVkQ2FjaGVVcGRhdGUoKQogICAgICAgICB0ZXh0Q2hhbmdlZChub2RlKTsKICAgICBtX2Rl
ZmVycmVkVGV4dENoYW5nZWRMaXN0LmNsZWFyKCk7CiAKLSAgICBmb3IgKGF1dG8mIGVsZW1lbnQg
OiBtX2RlZmVycmVkUmVjb21wdXRlSXNJZ25vcmVkTGlzdCkgeworICAgIG1fZGVmZXJyZWRSZWNv
bXB1dGVJc0lnbm9yZWRMaXN0LmZvckVhY2goW3RoaXNdIChhdXRvJiBlbGVtZW50KSB7CiAgICAg
ICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKSkKICAgICAgICAgICAg
IHJlY29tcHV0ZUlzSWdub3JlZChyZW5kZXJlcik7Ci0gICAgfQorICAgIH0pOwogICAgIG1fZGVm
ZXJyZWRSZWNvbXB1dGVJc0lnbm9yZWRMaXN0LmNsZWFyKCk7Ci0gICAgCi0gICAgZm9yIChhdXRv
JiBzZWxlY3RFbGVtZW50IDogbV9kZWZlcnJlZFNlbGVjdGVkQ2hpbGRyZWRDaGFuZ2VkTGlzdCkK
KworICAgIG1fZGVmZXJyZWRTZWxlY3RlZENoaWxkcmVkQ2hhbmdlZExpc3QuZm9yRWFjaChbdGhp
c10gKGF1dG8mIHNlbGVjdEVsZW1lbnQpIHsKICAgICAgICAgc2VsZWN0ZWRDaGlsZHJlbkNoYW5n
ZWQoJnNlbGVjdEVsZW1lbnQpOworICAgIH0pOwogICAgIG1fZGVmZXJyZWRTZWxlY3RlZENoaWxk
cmVkQ2hhbmdlZExpc3QuY2xlYXIoKTsKIAogICAgIGZvciAoYXV0byYgZGVmZXJyZWRGb3JtQ29u
dHJvbENvbnRleHQgOiBtX2RlZmVycmVkVGV4dEZvcm1Db250cm9sVmFsdWUpIHsKQEAgLTMyNDYs
MTIgKzMyNjIsMTQgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJyZWRDYWNoZVVw
ZGF0ZSgpCiAgICAgfQogICAgIG1fZGVmZXJyZWRGb2N1c2VkTm9kZUNoYW5nZS5jbGVhcigpOwog
Ci0gICAgZm9yIChhdXRvJiBkZWZlcnJlZE1vZGFsQ2hhbmdlZEVsZW1lbnQgOiBtX2RlZmVycmVk
TW9kYWxDaGFuZ2VkTGlzdCkKKyAgICBtX2RlZmVycmVkTW9kYWxDaGFuZ2VkTGlzdC5mb3JFYWNo
KFt0aGlzXSAoYXV0byYgZGVmZXJyZWRNb2RhbENoYW5nZWRFbGVtZW50KSB7CiAgICAgICAgIGhh
bmRsZU1vZGFsQ2hhbmdlKGRlZmVycmVkTW9kYWxDaGFuZ2VkRWxlbWVudCk7CisgICAgfSk7CiAg
ICAgbV9kZWZlcnJlZE1vZGFsQ2hhbmdlZExpc3QuY2xlYXIoKTsKIAotICAgIGZvciAoYXV0byYg
ZGVmZXJyZWRNZW51TGlzdENoYW5nZUVsZW1lbnQgOiBtX2RlZmVycmVkTWVudUxpc3RDaGFuZ2Up
CisgICAgbV9kZWZlcnJlZE1lbnVMaXN0Q2hhbmdlLmZvckVhY2goW3RoaXNdIChhdXRvJiBkZWZl
cnJlZE1lbnVMaXN0Q2hhbmdlRWxlbWVudCkgewogICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKCZk
ZWZlcnJlZE1lbnVMaXN0Q2hhbmdlRWxlbWVudCwgQVhPYmplY3RDYWNoZTo6QVhNZW51TGlzdFZh
bHVlQ2hhbmdlZCk7CisgICAgfSk7CiAgICAgbV9kZWZlcnJlZE1lbnVMaXN0Q2hhbmdlLmNsZWFy
KCk7CiAgICAgCiAgICAgcGxhdGZvcm1QZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>