<?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>210643</bug_id>
          
          <creation_ts>2020-04-17 02:32:00 -0700</creation_ts>
          <short_desc>REGRESSION (r162729): [iOS] WebKitTestRunner over-releases UITextField in WTR::PlatformWebView::removeChromeInputField()</short_desc>
          <delta_ts>2020-04-17 07:57:20 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</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=189228</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=189464</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>127448</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>ap</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1642612</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-04-17 02:32:00 -0700</bug_when>
    <thetext>WebKitTestRunner over-releases UITextField in WTR::PlatformWebView::removeChromeInputField()

This regressed in r162729 for Bug 127448: &lt;https://trac.webkit.org/r162729&gt;

Briefly fixed by r189228 for Bug 189228 before that commit was reverted in r235832 for Bug 189464.

Found by clang static analyzer.

void PlatformWebView::addChromeInputField()
{
    UITextField* textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 100, 20)];
    textField.tag = 1;
    [m_window addSubview:textField];
    [textField release];
}

void PlatformWebView::removeChromeInputField()
{
    UITextField* textField = (UITextField*)[m_window viewWithTag:1];
    if (textField) {
        [textField removeFromSuperview];
        makeWebViewFirstResponder();
        [textField release];  // Over-release.
    }
}

NOTE: This may be the cause of some of the autoreleasePool crashes in WebKitTestRunner that we see occasionally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642613</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-17 02:32:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/61927190&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642615</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-04-17 02:38:13 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #0)
&gt; NOTE: This may be the cause of some of the autoreleasePool crashes in
&gt; WebKitTestRunner that we see occasionally.

The reason I say that is because this line will return an autoreleased object from UIKit under ARC:

    UITextField* textField = (UITextField*)[m_window viewWithTag:1];

And then the -release call over-releases the object.

But we won&apos;t crash until the autoreleasePool containing the UITextField object is drained, which apparently doesn&apos;t happen consistently during test runs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642616</commentid>
    <comment_count>3</comment_count>
      <attachid>396749</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-04-17 02:38:52 -0700</bug_when>
    <thetext>Created attachment 396749
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642670</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-17 07:57:19 -0700</bug_when>
    <thetext>Committed r260250: &lt;https://trac.webkit.org/changeset/260250&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 396749.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396749</attachid>
            <date>2020-04-17 02:38:52 -0700</date>
            <delta_ts>2020-04-17 07:57:19 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-210643-20200417024007.patch</filename>
            <type>text/plain</type>
            <size>1307</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMjI5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTU4OGI4ZDI0ZDI5YWNhZGE3MzRjMzNiNDNlNGM4YTk4
MzA4NDM3ZC4uZjJjZGQ5NTRkNWYyMGQ2MDFjY2JiMDNkMGY1NWY4MjQxNjU1Zjc3NCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIwLTA0LTE3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAg
ICAgICAgUkVHUkVTU0lPTiAocjE2MjcyOSk6IFtpT1NdIFdlYktpdFRlc3RSdW5uZXIgb3Zlci1y
ZWxlYXNlcyBVSVRleHRGaWVsZCBpbiBXVFI6OlBsYXRmb3JtV2ViVmlldzo6cmVtb3ZlQ2hyb21l
SW5wdXRGaWVsZCgpCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTA2NDM+CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82MTkyNzE5MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2Vi
Vmlld0lPUy5tbToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpyZW1vdmVDaHJvbWVJ
bnB1dEZpZWxkKToKKyAgICAgICAgLSBSZW1vdmUgdW5uZWNlc3NhcnkgLXJlbGVhc2UuCisKIDIw
MjAtMDQtMTYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSB1bnVzZWQgLV9mb2N1c1RleHRJbnB1dENvbnRleHQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbSBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQppbmRleCBkZDI3MTJmYTI5OWY4M2Mx
ZDAzOTUzZDgyMzMzNjBhYjBkNzk1NjI1Li5kY2VhMzhjZGFjZTc2ODI2NTIwYjBiMWZkOGNlMDA4
YmEzYmM3YTY0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9y
bVdlYlZpZXdJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1X
ZWJWaWV3SU9TLm1tCkBAIC0yODUsNyArMjg1LDYgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJl
bW92ZUNocm9tZUlucHV0RmllbGQoKQogICAgIGlmICh0ZXh0RmllbGQpIHsKICAgICAgICAgW3Rl
eHRGaWVsZCByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICAgICAgbWFrZVdlYlZpZXdGaXJzdFJl
c3BvbmRlcigpOwotICAgICAgICBbdGV4dEZpZWxkIHJlbGVhc2VdOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>