Default web context is global and never freed. We can use atexit() like we do in webkit1 to make usre it's finalized before the process finishes.
Created attachment 136839 [details] Patch
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
Comment on attachment 136839 [details] Patch It might be cleaner to use GRefPtr and DECLARE_STATIC_LOCAL
(In reply to comment #3) > (From update of attachment 136839 [details]) > It might be cleaner to use GRefPtr and DECLARE_STATIC_LOCAL That doesn'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.
Created attachment 137049 [details] Use GRefPtr instead of atexit
Comment on attachment 137049 [details] Use GRefPtr instead of atexit Thanks!
(In reply to comment #4) > (In reply to comment #3) > > (From update of attachment 136839 [details] [details]) > > It might be cleaner to use GRefPtr and DECLARE_STATIC_LOCAL > > That doesn'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's not happening it seems like a bug in DEFINE_STATIC_LOCAL. So GRefPtr may work here, but perhaps not for all compilers.
(In reply to comment #7) > (In reply to comment #4) > > (In reply to comment #3) > > > (From update of attachment 136839 [details] [details] [details]) > > > It might be cleaner to use GRefPtr and DECLARE_STATIC_LOCAL > > > > That doesn'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'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's version of GCC 4.0.1.
Committed r114226: <http://trac.webkit.org/changeset/114226>