<?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>239402</bug_id>
          
          <creation_ts>2022-04-15 14:03:59 -0700</creation_ts>
          <short_desc>AXIsolatedTree::updateNode cannot attach the platform wrapper to the replacement node on the main thread.</short_desc>
          <delta_ts>2022-04-16 15:06:42 -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>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Andres Gonzalez">andresg_22</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>godrimarcel.551</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>1861903</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-15 14:03:59 -0700</bug_when>
    <thetext>AXIsolatedTree::updateNode cannot attach the platform wrapper to the replacement node on the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861904</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-15 14:04:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/91827992&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861910</commentid>
    <comment_count>2</comment_count>
      <attachid>457724</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-15 14:14:02 -0700</bug_when>
    <thetext>Created attachment 457724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861944</commentid>
    <comment_count>3</comment_count>
      <attachid>457724</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-15 15:43:29 -0700</bug_when>
    <thetext>Comment on attachment 457724
Patch

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

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:299
&gt; -    auto change = nodeChangeForObject(axObject, parentID, true);
&gt; +    auto change = nodeChangeForObject(axObject, parentID, false);

This is why we work so hard to avoid boolean constants. The old code is not obviously wrong. The new code is not obviously right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861945</commentid>
    <comment_count>4</comment_count>
      <attachid>457724</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-15 15:44:02 -0700</bug_when>
    <thetext>Comment on attachment 457724
Patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        AXIsolatedTree::updateNode is called for existing IsolatedObjects that
&gt; +        are being accessed on the AX thread through their platform wrappers.
&gt; +        For that reason, updateNode cannot attach a new IsolatedObject to the
&gt; +        same wrapper on the main thread. Instead, the wrapper should be added to
&gt; +        the NodeChange struct in order to be attached to the IsolatedObject on
&gt; +        the AX thread.

Can we make a regression test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862064</commentid>
    <comment_count>5</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-16 11:56:14 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 457724 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457724&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:299
&gt; &gt; -    auto change = nodeChangeForObject(axObject, parentID, true);
&gt; &gt; +    auto change = nodeChangeForObject(axObject, parentID, false);
&gt; 
&gt; This is why we work so hard to avoid boolean constants. The old code is not
&gt; obviously wrong. The new code is not obviously right.

Thanks Darin. We are merging this change with the patch for https://bugs.webkit.org/show_bug.cgi?id=239398, since they overlap on this code. Added:

+    enum class AttachWrapper : bool { OnMainThread, OnAXThread };

to make explicit what this parameter means.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862065</commentid>
    <comment_count>6</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-16 12:01:47 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 457724 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457724&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:14
&gt; &gt; +        AXIsolatedTree::updateNode is called for existing IsolatedObjects that
&gt; &gt; +        are being accessed on the AX thread through their platform wrappers.
&gt; &gt; +        For that reason, updateNode cannot attach a new IsolatedObject to the
&gt; &gt; +        same wrapper on the main thread. Instead, the wrapper should be added to
&gt; &gt; +        the NodeChange struct in order to be attached to the IsolatedObject on
&gt; &gt; +        the AX thread.
&gt; 
&gt; Can we make a regression test?

The patch in https://bugs.webkit.org/show_bug.cgi?id=239398 fixes several tests in isolated tree mode. Not sure though that any of those tests covers specifically this issue. This however goes straight to the thread safety of the isolated tree mode, even though it may be difficult to write a layout tests that fails without this change and passes with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862084</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-16 15:06:42 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #6)
&gt; This however goes straight to the thread safety of
&gt; the isolated tree mode, even though it may be difficult to write a layout
&gt; tests that fails without this change and passes with it.

Sure, agreed, very important!

But the more *important* the fix is, the more value a regression test is. The test helps make sure that a future programmer doesn’t break this. I understand, though, if you can’t think of a good way to make a test.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457724</attachid>
            <date>2022-04-15 14:14:02 -0700</date>
            <delta_ts>2022-04-16 00:31:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239402-20220415171401.patch</filename>
            <type>text/plain</type>
            <size>3121</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2QxMDcyMjQxM2UxYWRl
MTYzY2ZkNDAxYWRmYTRlOWQ1NjNlNWZjZC4uMjNjMDdiZGNjMThiYzkzYTM4ZjY1MDk5MzE3ZjAw
MDJiNjllNmVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIyLTA0LTE1ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBBWElzb2xhdGVk
VHJlZTo6dXBkYXRlTm9kZSBjYW5ub3QgYXR0YWNoIHRoZSBwbGF0Zm9ybSB3cmFwcGVyIHRvIHRo
ZSByZXBsYWNlbWVudCBub2RlIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTQwMgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vOTE4Mjc5OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGUgaXMgY2FsbGVkIGZvciBleGlzdGlu
ZyBJc29sYXRlZE9iamVjdHMgdGhhdAorICAgICAgICBhcmUgYmVpbmcgYWNjZXNzZWQgb24gdGhl
IEFYIHRocmVhZCB0aHJvdWdoIHRoZWlyIHBsYXRmb3JtIHdyYXBwZXJzLgorICAgICAgICBGb3Ig
dGhhdCByZWFzb24sIHVwZGF0ZU5vZGUgY2Fubm90IGF0dGFjaCBhIG5ldyBJc29sYXRlZE9iamVj
dCB0byB0aGUKKyAgICAgICAgc2FtZSB3cmFwcGVyIG9uIHRoZSBtYWluIHRocmVhZC4gSW5zdGVh
ZCwgdGhlIHdyYXBwZXIgc2hvdWxkIGJlIGFkZGVkIHRvCisgICAgICAgIHRoZSBOb2RlQ2hhbmdl
IHN0cnVjdCBpbiBvcmRlciB0byBiZSBhdHRhY2hlZCB0byB0aGUgSXNvbGF0ZWRPYmplY3Qgb24K
KyAgICAgICAgdGhlIEFYIHRocmVhZC4KKyAgICAgICAgSW4gdGhpcyBwYXRjaCBJJ20gYWxzbyBh
ZGRpbmcgdGhlIHJvbGUgYXR0cmlidXRlIHRvIHRoZQorICAgICAgICBBWE9iamVjdENhY2hlOjp0
cmVlRGF0YSBtZXRob2QgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENh
Y2hlOjp0cmVlRGF0YSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnVwZGF0
ZU5vZGUpOgorCiAyMDIyLTA0LTE0ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBw
bGUuY29tPgogCiAgICAgICAgIFdLV2ViVmlldzogbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVn
aXN0ZXIgbWV0aG9kIGZhaWxzIGZvciBhIG5ldyB2ZXJzaW9uIG9mIGFuIGFscmVhZHkgcmVnaXN0
ZXJlZCBzZXJ2aWNlIHdvcmtlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwCmluZGV4IGZhMWU5NDNiNTIwZTlmMjE1NTQ3MTFmMDk3NzI4ODFiNGM1
YzgyYWIuLmIwMDdkNTE2MGI4YTEzNzM3ODYzNDgwMmM0NGRiMmRiN2RlY2NjYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMzU2NCw3
ICszNTY0LDcgQEAgQVhUcmVlRGF0YSBBWE9iamVjdENhY2hlOjp0cmVlRGF0YSgpCiAKICAgICBz
dHJlYW0gPDwgIlxuQVhPYmplY3RUcmVlOlxuIjsKICAgICBpZiAoYXV0byogcm9vdCA9IGdldChk
b2N1bWVudCgpLnZpZXcoKSkpIHsKLSAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxBWFN0cmVh
bU9wdGlvbnM+IG9wdGlvbnMgPSB7IEFYU3RyZWFtT3B0aW9uczo6T2JqZWN0SUQsIEFYU3RyZWFt
T3B0aW9uczo6UGFyZW50SUQgfTsKKyAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxBWFN0cmVh
bU9wdGlvbnM+IG9wdGlvbnMgPSB7IEFYU3RyZWFtT3B0aW9uczo6T2JqZWN0SUQsIEFYU3RyZWFt
T3B0aW9uczo6UGFyZW50SUQsIEFYU3RyZWFtT3B0aW9uczo6Um9sZSB9OwogICAgICAgICBzdHJl
YW1TdWJ0cmVlKHN0cmVhbSwgcm9vdCwgb3B0aW9ucyk7CiAgICAgfSBlbHNlCiAgICAgICAgIHN0
cmVhbSA8PCAiTm8gcm9vdCEiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmluZGV4IGE0NDM2MDc1
MGE2NjgyOWE0ZWMzODQ4YTU3OGM3ZWE5NzgwNjY3ZmQuLjZmMWUzYjA3YzhhMTRmMzU4ZTA3OGQ2
ZDkzMGZkNjhhYWRiYWEwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTI5Niw3ICsy
OTYsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlKEFYQ29yZU9iamVjdCYgYXhP
YmplY3QpCiAgICAgYXV0byogYXhQYXJlbnQgPSBheE9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9y
ZWQoKTsKICAgICBBWElEIHBhcmVudElEID0gYXhQYXJlbnQgPyBheFBhcmVudC0+b2JqZWN0SUQo
KSA6IEFYSUQoKTsKIAotICAgIGF1dG8gY2hhbmdlID0gbm9kZUNoYW5nZUZvck9iamVjdChheE9i
amVjdCwgcGFyZW50SUQsIHRydWUpOworICAgIGF1dG8gY2hhbmdlID0gbm9kZUNoYW5nZUZvck9i
amVjdChheE9iamVjdCwgcGFyZW50SUQsIGZhbHNlKTsKIAogICAgIC8vIFJlbW92ZSB0aGUgb2xk
IG9iamVjdCBhbmQgc2V0IHRoZSBuZXcgb25lIHRvIGJlIHVwZGF0ZWQgb24gdGhlIEFYIHRocmVh
ZC4KICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07Cg==
</data>
<flag name="review"
          id="486410"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="486434"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>