<?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>141564</bug_id>
          
          <creation_ts>2015-02-13 07:21:21 -0800</creation_ts>
          <short_desc>[GTK] Memory leak from webkit_web_policy_decision_new()</short_desc>
          <delta_ts>2015-04-07 06:10:57 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Milan Crha">mcrha</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>tpopela</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1068912</commentid>
    <comment_count>0</comment_count>
    <who name="Milan Crha">mcrha</who>
    <bug_when>2015-02-13 07:21:21 -0800</bug_when>
    <thetext>I just noticed this memory leak warning when just running and closing wk-leaks.c from bug #118788 comment #5.

==8716== 8 bytes in 1 blocks are definitely lost in loss record 462 of 9,467
==8716==    at 0x4A070D7: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==8716==    by 0x5A49A4D: std::_Function_base::_Base_manager&lt;WebCore::PolicyChecker::checkNavigationPolicy(WebCore::ResourceRequest const&amp;, WebCore::DocumentLoader*, WTF::PassRefPtr&lt;WebCore::FormState&gt;, std::function&lt;void (WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool)&gt;)::{lambda(WebCore::PolicyAction)#1}&gt;::_M_clone(std::_Any_data&amp;, std::_Function_base::_Base_manager&lt;WebCore::PolicyChecker::checkNavigationPolicy(WebCore::ResourceRequest const&amp;, WebCore::DocumentLoader*, WTF::PassRefPtr&lt;WebCore::FormState&gt;, std::function&lt;void (WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool)&gt;)::{lambda(WebCore::PolicyAction)#1}&gt; const&amp;, std::integral_constant&lt;bool, false&gt;) (functional:1878)
==8716==    by 0x5A49750: std::_Function_base::_Base_manager&lt;WebCore::PolicyChecker::checkNavigationPolicy(WebCore::ResourceRequest const&amp;, WebCore::DocumentLoader*, WTF::PassRefPtr&lt;WebCore::FormState&gt;, std::function&lt;void (WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool)&gt;)::{lambda(WebCore::PolicyAction)#1}&gt;::_M_manager(std::_Any_data&amp;, std::_Function_base::_Base_manager&lt;WebCore::PolicyChecker::checkNavigationPolicy(WebCore::ResourceRequest const&amp;, WebCore::DocumentLoader*, WTF::PassRefPtr&lt;WebCore::FormState&gt;, std::function&lt;void (WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool)&gt;)::{lambda(WebCore::PolicyAction)#1}&gt; const&amp;, std::_Manager_operation) (functional:1914)
==8716==    by 0x5118AF1: std::function&lt;void (WebCore::PolicyAction)&gt;::function(std::function&lt;void (WebCore::PolicyAction)&gt; const&amp;) (functional:2412)
==8716==    by 0x513FB98: std::function&lt;void (WebCore::PolicyAction)&gt;::operator=(std::function&lt;void (WebCore::PolicyAction)&gt; const&amp;) (functional:2243)
==8716==    by 0x513F883: webkit_web_policy_decision_new (webkitwebpolicydecision.cpp:67)
==8716==    by 0x5113D06: WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction(WebCore::NavigationAction const&amp;, WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, std::function&lt;void (WebCore::PolicyAction)&gt;) (FrameLoaderClientGtk.cpp:446)
==8716==    by 0x5A48B2B: WebCore::PolicyChecker::checkNavigationPolicy(WebCore::ResourceRequest const&amp;, WebCore::DocumentLoader*, WTF::PassRefPtr&lt;WebCore::FormState&gt;, std::function&lt;void (WebCore::ResourceRequest const&amp;, WTF::PassRefPtr&lt;WebCore::FormState&gt;, bool)&gt;) (PolicyChecker.cpp:124)
==8716==    by 0x5A12713: WebCore::FrameLoader::loadWithDocumentLoader(WebCore::DocumentLoader*, WebCore::FrameLoadType, WTF::PassRefPtr&lt;WebCore::FormState&gt;) (FrameLoader.cpp:1489)
==8716==    by 0x5A12052: WebCore::FrameLoader::load(WebCore::DocumentLoader*) (FrameLoader.cpp:1425)
==8716==    by 0x5A11B69: WebCore::FrameLoader::load(WebCore::FrameLoadRequest const&amp;) (FrameLoader.cpp:1375)
==8716==    by 0x5139C26: webkit_web_frame_load_data(_WebKitWebFrame*, char const*, char const*, char const*, char const*, char const*) (webkitwebframe.cpp:699)
==8716==    by 0x5139D76: webkit_web_frame_load_string (webkitwebframe.cpp:724)
==8716==    by 0x51503B2: webkit_web_view_load_string (webkitwebview.cpp:4332)
==8716==    by 0x40245F: load_page (wk-leaks.c:280)
==8716==    by 0x4025C2: main (wk-leaks.c:313)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069404</commentid>
    <comment_count>1</comment_count>
      <attachid>246642</attachid>
    <who name="Milan Crha">mcrha</who>
    <bug_when>2015-02-16 04:07:32 -0800</bug_when>
    <thetext>Created attachment 246642
proposed patch

The problem is that the priv-&gt;framePolicyFunction is not properly freed on GObject&apos;s finalize(), because it&apos;s a class inside a strucutre which is freed by GLib, not by C++.

This is WebKit1 related, I didn&apos;t find webkit_web_policy_decision_new() in the git master, but as it&apos;s still relevant, then it&apos;ll be nice to have this fixed there.

It would be also good to check WebKit2 code, whether it doesn&apos;t contain any similar issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069405</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-16 04:08:43 -0800</bug_when>
    <thetext>Attachment 246642 did not pass style-queue:


Total errors found: 0 in 0 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069407</commentid>
    <comment_count>3</comment_count>
      <attachid>246642</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-02-16 04:26:29 -0800</bug_when>
    <thetext>Comment on attachment 246642
proposed patch

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

Do not ask cq+ for wk1 patches since they will never apply in trunk.

&gt; webkitgtk-2.4.8/Source/WebKit/gtk/webkit/webkitwebpolicydecision.cpp:53
&gt; +    decision-&gt;priv-&gt;framePolicyFunction = 0;

This should use nullptr instead of 0, I&apos;ll fix this before merging the patch in 2.4 branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083299</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-07 06:10:57 -0700</bug_when>
    <thetext>Committed: &lt;http://trac.webkit.org/changeset/182469&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246642</attachid>
            <date>2015-02-16 04:07:32 -0800</date>
            <delta_ts>2015-02-16 04:26:29 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>wk.patch</filename>
            <type>text/plain</type>
            <size>1742</size>
            <attacher name="Milan Crha">mcrha</attacher>
            
              <data encoding="base64">ZGlmZiAtVTAgd2Via2l0Z3RrLTIuNC44L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZy5tZW0t
bGVhayB3ZWJraXRndGstMi40LjgvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCi0tLSB3ZWJr
aXRndGstMi40LjgvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nLm1lbS1sZWFrCTIwMTUtMDIt
MTYgMTM6MDQ6MjguMDQyNDcyOTMzICswMTAwCisrKyB3ZWJraXRndGstMi40LjgvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCTIwMTUtMDItMTYgMTM6MDY6MDEuMzEwNDY4OTgxICswMTAwCkBA
IC0wLDAgKzEsOSBAQAorMjAxNS0wMi0xNiAgTWlsYW4gQ3JoYSAgPG1jcmhhQHJlZGhhdC5jb20+
CisKKyAgICAgICAgW0dUS10gTWVtb3J5IGxlYWsgZnJvbSB3ZWJraXRfd2ViX3BvbGljeV9kZWNp
c2lvbl9uZXcoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQxNTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3BwOgorCmRpZmYgLXVwIHdlYmtp
dGd0ay0yLjQuOC9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicG9saWN5ZGVjaXNp
b24uY3BwLm1lbS1sZWFrIHdlYmtpdGd0ay0yLjQuOC9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2VicG9saWN5ZGVjaXNpb24uY3BwCi0tLSB3ZWJraXRndGstMi40LjgvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBvbGljeWRlY2lzaW9uLmNwcC5tZW0tbGVhawkyMDE1
LTAyLTE2IDEyOjU5OjA1LjkzNzQ4NjU4MSArMDEwMAorKysgd2Via2l0Z3RrLTIuNC44L1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJwb2xpY3lkZWNpc2lvbi5jcHAJMjAxNS0wMi0x
NiAxMjo0NzoyNi4zNTg1MTYyMjQgKzAxMDAKQEAgLTQ2LDkgKzQ2LDIzIEBAIHN0cnVjdCBfV2Vi
S2l0V2ViUG9saWN5RGVjaXNpb25Qcml2YXRlIHsKICAgICBnYm9vbGVhbiBpc0NhbmNlbGxlZDsK
IH07CiAKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2ZpbmFsaXplKEdP
YmplY3QgKm9iamVjdCkKK3sKKyAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiAqZGVjaXNpb24g
PSBXRUJLSVRfV0VCX1BPTElDWV9ERUNJU0lPTiAob2JqZWN0KTsKKworICAgIGRlY2lzaW9uLT5w
cml2LT5mcmFtZVBvbGljeUZ1bmN0aW9uID0gMDsKKworICAgIEdfT0JKRUNUX0NMQVNTICh3ZWJr
aXRfd2ViX3BvbGljeV9kZWNpc2lvbl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsK
K30KKwogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fY2xhc3NfaW5pdChX
ZWJLaXRXZWJQb2xpY3lEZWNpc2lvbkNsYXNzKiBkZWNpc2lvbkNsYXNzKQogeworICAgIEdPYmpl
Y3RDbGFzcyAqb2JqZWN0X2NsYXNzOworCiAgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGRl
Y2lzaW9uQ2xhc3MsIHNpemVvZihXZWJLaXRXZWJQb2xpY3lEZWNpc2lvblByaXZhdGUpKTsKKwor
ICAgIG9iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChkZWNpc2lvbkNsYXNzKTsKKyAgICBv
YmplY3RfY2xhc3MtPmZpbmFsaXplID0gd2Via2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fZmluYWxp
emU7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2luaXQoV2Vi
S2l0V2ViUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uKQo=
</data>
<flag name="review"
          id="271578"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
    <flag name="commit-queue"
          id="271579"
          type_id="3"
          status="-"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>