<?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>233014</bug_id>
          
          <creation_ts>2021-11-11 14:12:38 -0800</creation_ts>
          <short_desc>Fix for crash in LayoutTests in isolated tree mode.</short_desc>
          <delta_ts>2021-11-15 16:50:52 -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="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Andres Gonzalez">andresg_22</assigned_to>
          <cc>andresg_22</cc>
    
    <cc>cfleizach</cc>
    
    <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1814219</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-11-11 14:12:38 -0800</bug_when>
    <thetext>Fix for crash in LayoutTests in isolated tree mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814220</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-11 14:12:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/85315168&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814222</commentid>
    <comment_count>2</comment_count>
      <attachid>444000</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-11-11 14:18:05 -0800</bug_when>
    <thetext>Created attachment 444000
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814272</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-11 15:38:41 -0800</bug_when>
    <thetext>Committed r285677 (244160@main): &lt;https://commits.webkit.org/244160@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444000.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814287</commentid>
    <comment_count>4</comment_count>
      <attachid>444000</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-11 16:18:35 -0800</bug_when>
    <thetext>Comment on attachment 444000
Patch

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

&gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:582
&gt; -        NSString *value = descriptionOfValue(attributeValue(attribute).get());
&gt; -        [values appendFormat:@&quot;%@: %@\n&quot;, attribute, value];
&gt; +        RetainPtr&lt;NSString&gt; value = descriptionOfValue(attributeValue(attribute).get());
&gt; +        [values appendFormat:@&quot;%@: %@\n&quot;, attribute, value.get()];

I don’t understand this. Why do we need to retain the string?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815282</commentid>
    <comment_count>5</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-11-15 16:50:52 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 444000 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=444000&amp;action=review
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:582
&gt; &gt; -        NSString *value = descriptionOfValue(attributeValue(attribute).get());
&gt; &gt; -        [values appendFormat:@&quot;%@: %@\n&quot;, attribute, value];
&gt; &gt; +        RetainPtr&lt;NSString&gt; value = descriptionOfValue(attributeValue(attribute).get());
&gt; &gt; +        [values appendFormat:@&quot;%@: %@\n&quot;, attribute, value.get()];
&gt; 
&gt; I don’t understand this. Why do we need to retain the string?

Darin, I don&apos;t have a good explanation for this, but this doesn&apos;t crash any longer. The other way I found to avoid this crash is as follows:

-    NSString *description = descriptionOfValue(attributeValue(NSAccessibilityValueAttribute).get()); 

// the above crashes when you dereference description in any way, like description.length.

+    auto value = attributeValue(NSAccessibilityValueAttribute);
+    NSString *description = descriptionOfValue(value.get()); 

// doesn&apos;t crash if you description.length.

attributeValue is doing some threading trickery because it is dispatching to a secondary, mocked thread and waiting, and then spinning the main thread run loop until the dispatched block is executed on the secondary thread. My hypothesis is that this is allowing the garbage collector to kick in and release the return value of attributeValue, unless is assigned to an lvalue.

The stack trace of the crash is not inside descriptionOfValue though, but when dereferencing the description string which makes no much sense to me...

would greatly appreciate it if you had any suggestion. Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444000</attachid>
            <date>2021-11-11 14:18:05 -0800</date>
            <delta_ts>2021-11-11 15:38:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233014-20211111171804.patch</filename>
            <type>text/plain</type>
            <size>1964</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NTIxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmU0ZTkwNTg1ODRkNTEyNDljMTM0NWM2YjY4ZTVmMTZj
Mjg2OWQ1ZC4uY2MyMWU5MzlkNmYwYjE5NGMwZjliZTZjZjdlMWQyYjUyZDliZDkzZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDIxLTExLTExICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4K
KworICAgICAgICBGaXggZm9yIGNyYXNoIGluIExheW91dFRlc3RzIGluIGlzb2xhdGVkIHRyZWUg
bW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzAxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgZml4ZXMgdGhlIGZvbGxvd2luZyB0ZXN0cyBpbiBpc29sYXRlZCB0cmVlIG1vZGU6CisgICAg
ICAgIGFjY2Vzc2liaWxpdHkvaW1hZ2UtbGluay1pbmxpbmUtY29udC5odG1sIFsgQ3Jhc2ggXQor
ICAgICAgICBhY2Nlc3NpYmlsaXR5L2ltYWdlLWxpbmsuaHRtbCBbIENyYXNoIF0KKyAgICAgICAg
YWNjZXNzaWJpbGl0eS9pbnRlcm5hbC1saW5rLWFuY2hvcnMyLmh0bWwgWyBDcmFzaCBdCisKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
bGxBdHRyaWJ1dGVzKToKKyAgICAgICAgTmVlZCB0byByZXRhaW4gdGhlIHBvaW50ZXIgcmV0dXJu
ZWQgYnkKKyAgICAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb25PZlZhbHVl
LgorCiAyMDIxLTExLTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgTmV3IHNwZWM6IEJsb2NrIGV4dGVybmFsIHByb3RvY29sIGhhbmRsZXIgaW4gc2FuZGJveGVk
IGZyYW1lcwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXgg
OGZmOWQ3ZjBiYWJkZWVhYjFiNDI1NTE3ZDQ4ZjllNDE1YTk1NzcxMS4uNjRkNTFjMWE0ZjhhMjY4
ZTMxZmY4ZDQ1MTU4OWViYTAxODVmYWU3ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tCkBAIC01NzgsOCArNTc4LDggQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXMoKQogICAgICAgICAgICAg
fHwgW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFJlbGF0aXZlRnJhbWUiXSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE5TU3RyaW5nICp2YWx1ZSA9IGRlc2NyaXB0aW9u
T2ZWYWx1ZShhdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUpLmdldCgpKTsKLSAgICAgICAgW3ZhbHVl
cyBhcHBlbmRGb3JtYXQ6QCIlQDogJUBcbiIsIGF0dHJpYnV0ZSwgdmFsdWVdOworICAgICAgICBS
ZXRhaW5QdHI8TlNTdHJpbmc+IHZhbHVlID0gZGVzY3JpcHRpb25PZlZhbHVlKGF0dHJpYnV0ZVZh
bHVlKGF0dHJpYnV0ZSkuZ2V0KCkpOworICAgICAgICBbdmFsdWVzIGFwcGVuZEZvcm1hdDpAIiVA
OiAlQFxuIiwgYXR0cmlidXRlLCB2YWx1ZS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIFt2
YWx1ZXMgY3JlYXRlSlNTdHJpbmdSZWZdOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>