<?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>235278</bug_id>
          
          <creation_ts>2022-01-16 08:57:30 -0800</creation_ts>
          <short_desc>REGRESSION (r286603): Leak of three NSMutableDictionary objects each time rx::DisplayMtl::getMetalDeviceMatchingAttribute() is called</short_desc>
          <delta_ts>2022-04-05 12:22: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>ANGLE</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=235282</see_also>
    
    <see_also>https://bugs.chromium.org/p/angleproject/issues/detail?id=6920</see_also>
          <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>
          <dependson>220896</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>kpiddington</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1831300</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2022-01-16 08:57:30 -0800</bug_when>
    <thetext>Leak of three NSMutableDictionary objects each time rx::DisplayMtl::getMetalDeviceMatchingAttribute() is called.

These three objects are created each time the method is called, but none of them are released before the method returns:

    NSMutableArray&lt;id&lt;MTLDevice&gt;&gt; *externalGPUs   = [[NSMutableArray alloc] init];
    NSMutableArray&lt;id&lt;MTLDevice&gt;&gt; *integratedGPUs = [[NSMutableArray alloc] init];
    NSMutableArray&lt;id&lt;MTLDevice&gt;&gt; *discreteGPUs   = [[NSMutableArray alloc] init];

Found by clang static analyzer.

Regressed with this commit:

    Roll ANGLE to include upstreamed Metal backend
    &lt;https://bugs.webkit.org/show_bug.cgi?id=220896&gt;
    &lt;rdar://problem/73539682&gt;
    &lt;https://commits.webkit.org/r286603&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831302</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-16 08:57:54 -0800</bug_when>
    <thetext>&lt;rdar://problem/87653812&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831305</commentid>
    <comment_count>2</comment_count>
      <attachid>449282</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2022-01-16 09:46:17 -0800</bug_when>
    <thetext>Created attachment 449282
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831306</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2022-01-16 09:47:24 -0800</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831308</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-16 11:05:20 -0800</bug_when>
    <thetext>Can ANGLE switch to ARC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831327</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2022-01-16 13:29:55 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Can ANGLE switch to ARC?

Yes.  In fact, it would probably better align with upstream because I&apos;m pretty sure Google builds ANGLE with ARC enabled today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831328</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-16 13:33:45 -0800</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #5)
&gt; (In reply to Darin Adler from comment #4)
&gt; &gt; Can ANGLE switch to ARC?
&gt; 
&gt; Yes.  In fact, it would probably better align with upstream because I&apos;m
&gt; pretty sure Google builds ANGLE with ARC enabled today.

Let’s make that change, then, as soon as practical. I’d be happy to make the change and have you review, or you could make the change and I’d be happy to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831329</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-16 13:35:23 -0800</bug_when>
    <thetext>Committed r288074 (246094@main): &lt;https://commits.webkit.org/246094@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449282.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831338</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2022-01-16 14:04:46 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #5)
&gt; &gt; (In reply to Darin Adler from comment #4)
&gt; &gt; &gt; Can ANGLE switch to ARC?
&gt; &gt; 
&gt; &gt; Yes.  In fact, it would probably better align with upstream because I&apos;m
&gt; &gt; pretty sure Google builds ANGLE with ARC enabled today.
&gt; 
&gt; Let’s make that change, then, as soon as practical. I’d be happy to make the
&gt; change and have you review, or you could make the change and I’d be happy to
&gt; review.

I&apos;m not 100% sure about upstream building with ARC now.  Filed this to track:

Bug 235282: ANGLE should build with ARC enabled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831528</commentid>
    <comment_count>9</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2022-01-17 10:30:52 -0800</bug_when>
    <thetext>(In reply to EWS from comment #7)
&gt; Committed r288074 (246094@main): &lt;https://commits.webkit.org/246094@main&gt;
&gt; 
&gt; All reviewed patches have been landed. Closing bug and clearing flags on
&gt; attachment 449282 [details].

Follow-up fix based on Bug 235281, Comment #5:

Committed r288097: &lt;https://commits.webkit.org/r288097&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858347</commentid>
    <comment_count>10</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-05 05:11:33 -0700</bug_when>
    <thetext>https://bugs.chromium.org/p/angleproject/issues/detail?id=6920</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449282</attachid>
            <date>2022-01-16 09:46:17 -0800</date>
            <delta_ts>2022-01-16 13:35:24 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-235278-20220116094617.patch</filename>
            <type>text/plain</type>
            <size>4009</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggYmVjNjRlOTk3ZjI4N2IzM2MwOTk3M2Q4YzBkOGFiZWNhOTQyYjY2NS4uMTJhNGVjZDQ4MTNl
Yzk1ODU1ZTIwZDQ5OGY4NzlhZGRkNjhjZjBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAxLTE2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI4NjYwMyk6IExlYWsgb2YgdGhyZWUg
TlNNdXRhYmxlRGljdGlvbmFyeSBvYmplY3RzIGVhY2ggdGltZSByeDo6RGlzcGxheU10bDo6Z2V0
TWV0YWxEZXZpY2VNYXRjaGluZ0F0dHJpYnV0ZSgpIGlzIGNhbGxlZAorICAgICAgICA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMjM1Mjc4PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODc2NTM4MTI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMv
bGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5tbToKKyAgICAgICAgKHJ4OjpEaXNw
bGF5TXRsOjpnZXRNZXRhbERldmljZU1hdGNoaW5nQXR0cmlidXRlKToKKyAgICAgICAgLSBNYWtl
IHVzZSBvZiBtdGw6OmFkb3B0T2JqQ09iajw+IHNvIHRoZXNlIG9iamVjdHMgYXJlIHJlbGFzZWVk
CisgICAgICAgICAgd2hlbiB0aGUgbWV0aG9kIHJldHVybnMuCisKIDIwMjItMDEtMTQgIEt5bGUg
UGlkZGluZ3RvbiAgPGtwaWRkaW5ndG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBBTkdMRTogU3Vw
cG9ydHMzMkJpdEZsb2F0RmlsdGVyaW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gVFZPUwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFs
L0Rpc3BsYXlNdGwubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbWV0YWwvRGlzcGxheU10bC5tbQppbmRleCAxODQwZTE2YjBiOGI2N2JhZjk3ZDY1YWFi
ZTZhYjJlZDRlNjFmNDFkLi4wZTA0NDliYjUzYzNkNDA0MDVlNzZiNzZkM2UxOGRjOTBiNzhhZDU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbWV0YWwvRGlzcGxheU10bC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvRGlzcGxheU10bC5tbQpAQCAtMjM4LDIyICsyMzgsMjIg
QEAgbXRsOjpBdXRvT2JqQ1B0cjxpZDxNVExEZXZpY2U+PiBEaXNwbGF5TXRsOjpnZXRNZXRhbERl
dmljZU1hdGNoaW5nQXR0cmlidXRlKAogI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fTUFDT1Mp
IHx8IGRlZmluZWQoQU5HTEVfUExBVEZPUk1fTUFDQ0FUQUxZU1QpCiAgICAgYXV0byBkZXZpY2VM
aXN0ID0gbXRsOjphZG9wdE9iakNPYmooTVRMQ29weUFsbERldmljZXMoKSk7CiAKLSAgICBOU011
dGFibGVBcnJheTxpZDxNVExEZXZpY2U+PiAqZXh0ZXJuYWxHUFVzICAgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XTsKLSAgICBOU011dGFibGVBcnJheTxpZDxNVExEZXZpY2U+PiAqaW50
ZWdyYXRlZEdQVXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKLSAgICBOU011dGFi
bGVBcnJheTxpZDxNVExEZXZpY2U+PiAqZGlzY3JldGVHUFVzICAgPSBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIGV4dGVybmFsR1BVcyA9IG10bDo6YWRvcHRPYmpDT2Jq
PE5TTXV0YWJsZUFycmF5PGlkPE1UTERldmljZT4+PihbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0XSk7CisgICAgYXV0byBpbnRlZ3JhdGVkR1BVcyA9IG10bDo6YWRvcHRPYmpDT2JqPE5TTXV0
YWJsZUFycmF5PGlkPE1UTERldmljZT4+PihbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7
CisgICAgYXV0byBkaXNjcmV0ZUdQVXMgPSBtdGw6OmFkb3B0T2JqQ09iajxOU011dGFibGVBcnJh
eTxpZDxNVExEZXZpY2U+Pj4oW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIGZv
ciAoaWQ8TVRMRGV2aWNlPiBkZXZpY2UgaW4gZGV2aWNlTGlzdC5nZXQoKSkKICAgICB7CiAgICAg
ICAgIGlmIChkZXZpY2UucmVtb3ZhYmxlKQogICAgICAgICB7Ci0gICAgICAgICAgICBbZXh0ZXJu
YWxHUFVzIGFkZE9iamVjdDpkZXZpY2VdOworICAgICAgICAgICAgW2V4dGVybmFsR1BVcy5nZXQo
KSBhZGRPYmplY3Q6ZGV2aWNlXTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChkZXZpY2Uu
bG93UG93ZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFtpbnRlZ3JhdGVkR1BVcyBhZGRPYmpl
Y3Q6ZGV2aWNlXTsKKyAgICAgICAgICAgIFtpbnRlZ3JhdGVkR1BVcy5nZXQoKSBhZGRPYmplY3Q6
ZGV2aWNlXTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAg
IFtkaXNjcmV0ZUdQVXMgYWRkT2JqZWN0OmRldmljZV07CisgICAgICAgICAgICBbZGlzY3JldGVH
UFVzLmdldCgpIGFkZE9iamVjdDpkZXZpY2VdOwogICAgICAgICB9CiAgICAgfQogICAgIC8vIFRP
RE8oa3BpZGRpbmd0b246IEV4dGVybmFsIEdQVSBzdXBwb3J0LiBEbyB3ZSBwcmVmZXIgaGlnaCBw
b3dlciAvIGxvdyBiYW5kd2lkdGggZm9yIGdlbmVyYWwKQEAgLTI2Miw3ICsyNjIsNyBAQCBtdGw6
OkF1dG9PYmpDUHRyPGlkPE1UTERldmljZT4+IERpc3BsYXlNdGw6OmdldE1ldGFsRGV2aWNlTWF0
Y2hpbmdBdHRyaWJ1dGUoCiAgICAgaWYgKGF0dHJpYnMuZ2V0KEVHTF9QT1dFUl9QUkVGRVJFTkNF
X0FOR0xFLCAwKSA9PSBFR0xfSElHSF9QT1dFUl9BTkdMRSkKICAgICB7CiAgICAgICAgIC8vIFNl
YXJjaCBmb3IgYSBkaXNjcmV0ZSBHUFUgZmlyc3QuCi0gICAgICAgIGZvciAoaWQ8TVRMRGV2aWNl
PiBkZXZpY2UgaW4gZGlzY3JldGVHUFVzKQorICAgICAgICBmb3IgKGlkPE1UTERldmljZT4gZGV2
aWNlIGluIGRpc2NyZXRlR1BVcy5nZXQoKSkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFb
ZGV2aWNlIGlzSGVhZGxlc3NdKQogICAgICAgICAgICAgICAgIHJldHVybiBkZXZpY2U7CkBAIC0y
NzEsNyArMjcxLDcgQEAgbXRsOjpBdXRvT2JqQ1B0cjxpZDxNVExEZXZpY2U+PiBEaXNwbGF5TXRs
OjpnZXRNZXRhbERldmljZU1hdGNoaW5nQXR0cmlidXRlKAogICAgIGVsc2UgaWYgKGF0dHJpYnMu
Z2V0KEVHTF9QT1dFUl9QUkVGRVJFTkNFX0FOR0xFLCAwKSA9PSBFR0xfTE9XX1BPV0VSX0FOR0xF
KQogICAgIHsKICAgICAgICAgLy8gSWYgd2UndmUgc2VsZWN0ZWQgYSBsb3cgcG93ZXIgZGV2aWNl
LCBsb29rIHRocm91Z2ggaW50ZWdyYXRlZCBkZXZpY2VzLgotICAgICAgICBmb3IgKGlkPE1UTERl
dmljZT4gZGV2aWNlIGluIGludGVncmF0ZWRHUFVzKQorICAgICAgICBmb3IgKGlkPE1UTERldmlj
ZT4gZGV2aWNlIGluIGludGVncmF0ZWRHUFVzLmdldCgpKQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoIVtkZXZpY2UgaXNIZWFkbGVzc10pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGRldmlj
ZTsKQEAgLTI5NSw3ICsyOTUsNyBAQCBtdGw6OkF1dG9PYmpDUHRyPGlkPE1UTERldmljZT4+IERp
c3BsYXlNdGw6OmdldE1ldGFsRGV2aWNlTWF0Y2hpbmdBdHRyaWJ1dGUoCiAgICAgfQogCiAgICAg
Ly8gRGVmYXVsdCB0byB1c2UgYSBsb3cgcG93ZXIgZGV2aWNlLCBsb29rIHRocm91Z2ggaW50ZWdy
YXRlZCBkZXZpY2VzLgotICAgIGZvciAoaWQ8TVRMRGV2aWNlPiBkZXZpY2UgaW4gaW50ZWdyYXRl
ZEdQVXMpCisgICAgZm9yIChpZDxNVExEZXZpY2U+IGRldmljZSBpbiBpbnRlZ3JhdGVkR1BVcy5n
ZXQoKSkKICAgICB7CiAgICAgICAgIGlmICghW2RldmljZSBpc0hlYWRsZXNzXSkKICAgICAgICAg
ICAgIHJldHVybiBkZXZpY2U7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>