<?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>210888</bug_id>
          
          <creation_ts>2020-04-22 16:38:08 -0700</creation_ts>
          <short_desc>[Cocoa] REGRESSION (r260485): Crash in Legacy WebKit createMenu item function (reproducible under Asan)</short_desc>
          <delta_ts>2020-04-22 17:51:49 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>Lawrence.j</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1644572</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-22 16:38:08 -0700</bug_when>
    <thetext>[Cocoa] REGRESSION (r260485): Crash in Legacy WebKit createMenu item function (reproducible under Asan)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644573</commentid>
    <comment_count>1</comment_count>
      <attachid>397287</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-22 16:39:07 -0700</bug_when>
    <thetext>Created attachment 397287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644574</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-22 16:39:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/62207161&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644596</commentid>
    <comment_count>3</comment_count>
      <attachid>397287</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-22 17:25:53 -0700</bug_when>
    <thetext>Comment on attachment 397287
Patch

I verified this fixes the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644597</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-22 17:28:02 -0700</bug_when>
    <thetext>Committed r260545: &lt;https://trac.webkit.org/changeset/260545&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 397287.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644598</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-22 17:31:41 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=397287&amp;action=review

&gt; Source/WebKitLegacy/mac/ChangeLog:11
&gt; +        (createMenuItem): Speculative fix: Go back to using a local variable. Apparently
&gt; +        the Objective-C for loop doesn&apos;t extend the lifetime of its argument the way the
&gt; +        C++ range-based for loop does, so the local variable is needed.

You can actually replace this ObjC for-in loop with a C++ range-based for loop and that doesn&apos;t fix the bug.  The bug is that the RetainPtr is a temporary that goes out of scope immediately.  The for loop (C++ or ObjC) iterates over the result of .get() so it keeps a raw NSMutableArray * in scope for the entirety of the iteration, but it&apos;s pointing to an array that has been freed.  Just another bug that ARC would fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644605</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-22 17:51:49 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; You can actually replace this ObjC for-in loop with a C++ range-based for
&gt; loop and that doesn&apos;t fix the bug.

Oh, right, because of the &quot;.get()&quot; because C++ extends the life of the expression, but not the subexpression before &quot;.get()&quot;.

Darn, frustrated I got that wrong!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397287</attachid>
            <date>2020-04-22 16:39:07 -0700</date>
            <delta_ts>2020-04-22 17:28:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210888-20200422163906.patch</filename>
            <type>text/plain</type>
            <size>1910</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5k
ZXggZTdlNWFmYTM0YTk4NWJiZGM4YTVmNzBlMDNlMTc1MjQzNjI5NjM0ZS4uNjliYzVlYzg3NmY3
N2U4ZGQwZTQzZWFhMDRiOGY1ZDJlMjA4ODNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA0LTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBbQ29jb2FdIFJFR1JFU1NJT04gKHIyNjA0ODUpOiBDcmFzaCBpbiBM
ZWdhY3kgV2ViS2l0IGNyZWF0ZU1lbnUgaXRlbSBmdW5jdGlvbiAocmVwcm9kdWNpYmxlIHVuZGVy
IEFzYW4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTA4ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjcmVhdGVNZW51SXRlbSk6IFNwZWN1
bGF0aXZlIGZpeDogR28gYmFjayB0byB1c2luZyBhIGxvY2FsIHZhcmlhYmxlLiBBcHBhcmVudGx5
CisgICAgICAgIHRoZSBPYmplY3RpdmUtQyBmb3IgbG9vcCBkb2Vzbid0IGV4dGVuZCB0aGUgbGlm
ZXRpbWUgb2YgaXRzIGFyZ3VtZW50IHRoZSB3YXkgdGhlCisgICAgICAgIEMrKyByYW5nZS1iYXNl
ZCBmb3IgbG9vcCBkb2VzLCBzbyB0aGUgbG9jYWwgdmFyaWFibGUgaXMgbmVlZGVkLgorCiAyMDIw
LTA0LTIxICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IE1B
Q0NBVEFMWVNUIGJ1aWxkIGZhaWx1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA0YjZhMTE1ZmM5MzYzN2QzODNlYWRjZGU1OGRlYmM5
ZDVhZmVkOWE2Li5hYzZiNzEzOGI4ODk3YzM4OTI1M2UyNTI0NTA0ZDM0MGUwNjY5YjdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM2
NzIsOSArMzY3MiwxMSBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZU1lbnVJ
dGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGhpdFRlcwogCiAgICAgY2FzZSBXZWJD
b3JlOjpTdWJtZW51VHlwZTogewogICAgICAgICBhdXRvIG1lbnUgPSBhZG9wdE5TKFtbTlNNZW51
IGFsbG9jXSBpbml0XSk7Ci0KLSAgICAgICAgZm9yIChOU01lbnVJdGVtICptZW51SXRlbSBpbiBj
cmVhdGVNZW51SXRlbXMoaGl0VGVzdFJlc3VsdCwgaXRlbS5zdWJNZW51SXRlbXMoKSkuZ2V0KCkp
Ci0gICAgICAgICAgICBbbWVudSBhZGRJdGVtOm1lbnVJdGVtXTsKKyAgICAgICAgeworICAgICAg
ICAgICAgYXV0byBzdWJtZW51SXRlbXMgPSBjcmVhdGVNZW51SXRlbXMoaGl0VGVzdFJlc3VsdCwg
aXRlbS5zdWJNZW51SXRlbXMoKSk7CisgICAgICAgICAgICBmb3IgKE5TTWVudUl0ZW0gKm1lbnVJ
dGVtIGluIHN1Ym1lbnVJdGVtcy5nZXQoKSkKKyAgICAgICAgICAgICAgICBbbWVudSBhZGRJdGVt
Om1lbnVJdGVtXTsKKyAgICAgICAgfQogCiAgICAgICAgIGF1dG8gbWVudUl0ZW0gPSBhZG9wdE5T
KFtbTlNNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTppdGVtLnRpdGxlKCkgYWN0aW9uOm51
bGxwdHIga2V5RXF1aXZhbGVudDpAIiJdKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>