[GTK] [Stable] deadlock in gobject introspection
authorcarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 12 Mar 2014 14:01:26 +0000 (14:01 +0000)
committercarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 12 Mar 2014 14:01:26 +0000 (14:01 +0000)
https://bugs.webkit.org/show_bug.cgi?id=125651

Reviewed by Sergio Villar Senin.

Source/WebCore:

Make the default SoupNetworkSession a destroyable object to ensure
the wrapped SoupSession is finalized when the process finishes. This
is important because soup cancels any ongoing connection when finalized.

* platform/network/soup/SoupNetworkSession.cpp:
(WebCore::SoupNetworkSession::defaultSession): Do not use NeverDestroyed.
* platform/network/soup/SoupNetworkSession.h:

Source/WebKit/gtk:

* webkit/webkitglobals.cpp:
(webkitExit): Dot not try to unref the default network session, it
will be finalized automatically when the process finishes.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@165467 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/network/soup/SoupNetworkSession.cpp
Source/WebCore/platform/network/soup/SoupNetworkSession.h
Source/WebKit/gtk/ChangeLog
Source/WebKit/gtk/webkit/webkitglobals.cpp

index e3529cb..afd6563 100644 (file)
@@ -1,3 +1,18 @@
+2014-03-12  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [GTK] [Stable] deadlock in gobject introspection
+        https://bugs.webkit.org/show_bug.cgi?id=125651
+
+        Reviewed by Sergio Villar Senin.
+
+        Make the default SoupNetworkSession a destroyable object to ensure
+        the wrapped SoupSession is finalized when the process finishes. This
+        is important because soup cancels any ongoing connection when finalized.
+
+        * platform/network/soup/SoupNetworkSession.cpp:
+        (WebCore::SoupNetworkSession::defaultSession): Do not use NeverDestroyed.
+        * platform/network/soup/SoupNetworkSession.h:
+
 2014-03-12  Antti Koivisto  <antti@apple.com>
 
         Don't use NodeRenderingTraversal for pseudo elements
index 1393de0..715e39f 100644 (file)
@@ -50,7 +50,7 @@ inline static void soupLogPrinter(SoupLogger*, SoupLoggerLogLevel, char directio
 
 SoupNetworkSession& SoupNetworkSession::defaultSession()
 {
-    static NeverDestroyed<SoupNetworkSession> networkSession(soupCookieJar());
+    static SoupNetworkSession networkSession(soupCookieJar());
     return networkSession;
 }
 
index 235816e..b9801f9 100644 (file)
@@ -26,7 +26,6 @@
 #ifndef SoupNetworkSession_h
 #define SoupNetworkSession_h
 
-#include <wtf/NeverDestroyed.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/Vector.h>
 #include <wtf/gobject/GRefPtr.h>
@@ -40,7 +39,6 @@ namespace WebCore {
 
 class SoupNetworkSession {
     WTF_MAKE_NONCOPYABLE(SoupNetworkSession); WTF_MAKE_FAST_ALLOCATED;
-    friend class NeverDestroyed<SoupNetworkSession>;
 public:
     ~SoupNetworkSession();
 
index 271b496..98ceb06 100644 (file)
@@ -1,3 +1,14 @@
+2014-03-12  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [GTK] [Stable] deadlock in gobject introspection
+        https://bugs.webkit.org/show_bug.cgi?id=125651
+
+        Reviewed by Sergio Villar Senin.
+
+        * webkit/webkitglobals.cpp:
+        (webkitExit): Dot not try to unref the default network session, it
+        will be finalized automatically when the process finishes.
+
 2014-03-07  Zan Dobersek  <zdobersek@igalia.com>
 
         Move GTK WebKit1 code to std::unique_ptr
index 463532d..2d038ba 100644 (file)
@@ -251,7 +251,6 @@ static GRefPtr<WebKitSpellChecker> textChecker = 0;
 
 static void webkitExit()
 {
-    g_object_unref(webkit_get_default_session());
 #if ENABLE(ICONDATABASE)
     g_object_unref(webkit_get_favicon_database());
 #endif