<?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>83752</bug_id>
          
          <creation_ts>2012-04-12 00:45:36 -0700</creation_ts>
          <short_desc>[GTK] Use GRefPtr to delete the default web context in WebKit2 GTK+</short_desc>
          <delta_ts>2012-04-15 23:38:02 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>600955</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-12 00:45:36 -0700</bug_when>
    <thetext>Default web context is global and never freed. We can use atexit() like we do in webkit1 to make usre it&apos;s finalized before the process finishes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600957</commentid>
    <comment_count>1</comment_count>
      <attachid>136839</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-12 00:48:51 -0700</bug_when>
    <thetext>Created attachment 136839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600959</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-12 00:52:16 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601239</commentid>
    <comment_count>3</comment_count>
      <attachid>136839</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-12 08:12:41 -0700</bug_when>
    <thetext>Comment on attachment 136839
Patch

It might be cleaner to use GRefPtr and DECLARE_STATIC_LOCAL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601862</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-12 23:59:51 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 136839 [details])
&gt; It might be cleaner to use GRefPtr and DECLARE_STATIC_LOCAL

That doesn&apos;t help, we want to make sure finalize is called before the process finishes. Static variables declared with DEFINE_STATIC_LOCAL are leaked, the destructor of the GRefPtr is not called at exit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601870</commentid>
    <comment_count>5</comment_count>
      <attachid>137049</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-13 00:10:12 -0700</bug_when>
    <thetext>Created attachment 137049
Use GRefPtr instead of atexit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602063</commentid>
    <comment_count>6</comment_count>
      <attachid>137049</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-13 08:04:33 -0700</bug_when>
    <thetext>Comment on attachment 137049
Use GRefPtr instead of atexit

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602067</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-13 08:08:04 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 136839 [details] [details])
&gt; &gt; It might be cleaner to use GRefPtr and DECLARE_STATIC_LOCAL
&gt; 
&gt; That doesn&apos;t help, we want to make sure finalize is called before the process finishes. Static variables declared with DEFINE_STATIC_LOCAL are leaked, the destructor of the GRefPtr is not called at exit.

From what I understand the point of DEFINE_STATIC_LOCAL is to work around a compiler bug to ensure that the variables contained are cleaned up at exit. If that&apos;s not happening it seems like a bug in DEFINE_STATIC_LOCAL. So GRefPtr may work here, but perhaps not for all compilers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602095</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-13 08:32:02 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; (From update of attachment 136839 [details] [details] [details])
&gt; &gt; &gt; It might be cleaner to use GRefPtr and DECLARE_STATIC_LOCAL
&gt; &gt; 
&gt; &gt; That doesn&apos;t help, we want to make sure finalize is called before the process finishes. Static variables declared with DEFINE_STATIC_LOCAL are leaked, the destructor of the GRefPtr is not called at exit.
&gt; 
&gt; From what I understand the point of DEFINE_STATIC_LOCAL is to work around a compiler bug to ensure that the variables contained are cleaned up at exit. If that&apos;s not happening it seems like a bug in DEFINE_STATIC_LOCAL. So GRefPtr may work here, but perhaps not for all compilers.

// Use these to declare and define a static local variable (static T;) so that                                                                                                               
//  it is leaked so that its destructors are not called at exit. Using this                                                                                                                  
//  macro also allows workarounds a compiler bug present in Apple&apos;s version of GCC 4.0.1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602920</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-15 23:38:02 -0700</bug_when>
    <thetext>Committed r114226: &lt;http://trac.webkit.org/changeset/114226&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136839</attachid>
            <date>2012-04-12 00:48:51 -0700</date>
            <delta_ts>2012-04-13 00:10:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-delete-web-context.diff</filename>
            <type>text/plain</type>
            <size>1999</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzZTU3MTEyLi44MDgxZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTItMDQtMTIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFVzZSBhdGV4aXQgdG8gZGVsZXRlIHRoZSBkZWZhdWx0IHdlYiBj
b250ZXh0IGluIFdlYktpdDIgR1RLKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODM3NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwOgor
ICAgICAgICAoZGVsZXRlRGVmYXVsdFdlYkNvbnRleHQpOiBVbnJlZiB0aGUgZGVmYXVsdCB3ZWIg
Y29udGV4dC4KKyAgICAgICAgKGNyZWF0ZURlZmF1bHRXZWJDb250ZXh0KTogUmVnaXN0ZXIgZGVs
ZXRlRGVmYXVsdFdlYkNvbnRleHQgd2l0aAorICAgICAgICBhdGV4aXQoKSB0byBiZSBjYWxsZWQg
YmVmb3JlIHRoZSBVSSBwcm9jZXNzIGZpbmlzaGVzLgorCiAyMDEyLTA0LTExICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYW4gYXV0b3JlbGVhc2UgcG9v
bCBtYWRlIHJlZHVuZGFudCBieSByMTEzOTIzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAzMGRiYmQ4Li4wM2Jm
MjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIldlYktpdERvd25s
b2FkUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJDb250ZXh0UHJpdmF0ZS5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTg1LDYgKzg2LDExIEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfY29udGV4dF9jbGFzc19pbml0KFdlYktpdFdlYkNvbnRleHRDbGFzcyogd2ViQ29udGV4
dENsYXNzCiAgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHdlYkNvbnRleHRDbGFzcywgc2l6
ZW9mKFdlYktpdFdlYkNvbnRleHRQcml2YXRlKSk7CiB9CiAKK3N0YXRpYyB2b2lkIGRlbGV0ZURl
ZmF1bHRXZWJDb250ZXh0KCkKK3sKKyAgICBnX29iamVjdF91bnJlZih3ZWJraXRfd2ViX2NvbnRl
eHRfZ2V0X2RlZmF1bHQoKSk7Cit9CisKIHN0YXRpYyBncG9pbnRlciBjcmVhdGVEZWZhdWx0V2Vi
Q29udGV4dChncG9pbnRlcikKIHsKICAgICBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0ID0g
V0VCS0lUX1dFQl9DT05URVhUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwg
TlVMTCkpOwpAQCAtOTIsNiArOTgsOCBAQCBzdGF0aWMgZ3BvaW50ZXIgY3JlYXRlRGVmYXVsdFdl
YkNvbnRleHQoZ3BvaW50ZXIpCiAgICAgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbCh3ZWJDb250ZXh0
LT5wcml2LT5jb250ZXh0LmdldCgpLCBrV0tDYWNoZU1vZGVsUHJpbWFyeVdlYkJyb3dzZXIpOwog
ICAgIGF0dGFjaERvd25sb2FkQ2xpZW50VG9Db250ZXh0KHdlYkNvbnRleHQpOwogCisgICAgYXRl
eGl0KGRlbGV0ZURlZmF1bHRXZWJDb250ZXh0KTsKKwogICAgIHJldHVybiB3ZWJDb250ZXh0Owog
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137049</attachid>
            <date>2012-04-13 00:10:12 -0700</date>
            <delta_ts>2012-04-13 08:04:33 -0700</delta_ts>
            <desc>Use GRefPtr instead of atexit</desc>
            <filename>wk2-grefptr-web-context.diff</filename>
            <type>text/plain</type>
            <size>1620</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlMWE1MzJhLi44YzQyODA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTItMDQtMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFVzZSBHUmVmUHRyIHRvIGRlbGV0ZSB0aGUgZGVmYXVsdCB3ZWIg
Y29udGV4dCBpbiBXZWJLaXQyIEdUSysKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgzNzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDoK
KyAgICAgICAgKGNyZWF0ZURlZmF1bHRXZWJDb250ZXh0KToKKwogMjAxMi0wNC0xMiAgQWxleGV5
IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmVwcm9jZXNzaW5nIHRl
eHQgZmlsZXMgd2l0aCBtb2Rlcm4gY2xhbmcgdHJlYXRzIGRvdWJsZSBzbGFzaGVzIGluIGNvbW1l
bnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YkNvbnRleHQuY3BwCmluZGV4IDMwZGJiZDguLjBiNjhjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC04Nywx
MiArODcsMTEgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X2NsYXNzX2luaXQoV2Vi
S2l0V2ViQ29udGV4dENsYXNzKiB3ZWJDb250ZXh0Q2xhc3MKIAogc3RhdGljIGdwb2ludGVyIGNy
ZWF0ZURlZmF1bHRXZWJDb250ZXh0KGdwb2ludGVyKQogewotICAgIFdlYktpdFdlYkNvbnRleHQq
IHdlYkNvbnRleHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBF
X1dFQl9DT05URVhULCBOVUxMKSk7CisgICAgc3RhdGljIEdSZWZQdHI8V2ViS2l0V2ViQ29udGV4
dD4gd2ViQ29udGV4dCA9IGFkb3B0R1JlZihXRUJLSVRfV0VCX0NPTlRFWFQoZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX1dFQl9DT05URVhULCBOVUxMKSkpOwogICAgIHdlYkNvbnRleHQtPnByaXYt
PmNvbnRleHQgPSBXS0NvbnRleHRHZXRTaGFyZWRQcm9jZXNzQ29udGV4dCgpOwogICAgIFdLQ29u
dGV4dFNldENhY2hlTW9kZWwod2ViQ29udGV4dC0+cHJpdi0+Y29udGV4dC5nZXQoKSwga1dLQ2Fj
aGVNb2RlbFByaW1hcnlXZWJCcm93c2VyKTsKLSAgICBhdHRhY2hEb3dubG9hZENsaWVudFRvQ29u
dGV4dCh3ZWJDb250ZXh0KTsKLQotICAgIHJldHVybiB3ZWJDb250ZXh0OworICAgIGF0dGFjaERv
d25sb2FkQ2xpZW50VG9Db250ZXh0KHdlYkNvbnRleHQuZ2V0KCkpOworICAgIHJldHVybiB3ZWJD
b250ZXh0LmdldCgpOwogfQogCiAvKioK
</data>
<flag name="review"
          id="142018"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>