[WK2][EFL][WTR] Regression(r141836): WTR crashes on exit
authormikhail.pozdnyakov@intel.com <mikhail.pozdnyakov@intel.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 13 Feb 2013 15:57:14 +0000 (15:57 +0000)
committermikhail.pozdnyakov@intel.com <mikhail.pozdnyakov@intel.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 13 Feb 2013 15:57:14 +0000 (15:57 +0000)
https://bugs.webkit.org/show_bug.cgi?id=109456

Reviewed by Anders Carlsson.

Source/WebKit2:

WebView destructor now considers the situation if its WebPageProxy
instance had been closed from outside the class (explicitly
by client code).

* UIProcess/efl/WebView.cpp:
(WebKit::WebView::~WebView):

Tools:

WebView instance must not live longer than EwkView, as EwkView owns
objects that page proxy refers to, doing otherwise leads to a crash.

Test controller has own ptr containing WebView. Invoking of ewk_shutdown()
leads to evas objects deletion. So, the problem was that test controller was
deleted after ewk_shutdown() had been called in main() function causing
crashes on WTR exit.

The patch introduces a scope for test controller so that it is deleted first.

* WebKitTestRunner/efl/main.cpp:
(main):

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

Source/WebKit2/ChangeLog
Source/WebKit2/UIProcess/efl/WebView.cpp
Tools/ChangeLog
Tools/WebKitTestRunner/efl/main.cpp

index 903b0e4..f7dc857 100644 (file)
@@ -1,3 +1,17 @@
+2013-02-13  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
+
+        [WK2][EFL][WTR] Regression(r141836): WTR crashes on exit
+        https://bugs.webkit.org/show_bug.cgi?id=109456
+
+        Reviewed by Anders Carlsson.
+
+        WebView destructor now considers the situation if its WebPageProxy
+        instance had been closed from outside the class (explicitly
+        by client code).
+
+        * UIProcess/efl/WebView.cpp:
+        (WebKit::WebView::~WebView):
+
 2013-02-13  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
 
         [WK2] Remove web intents callbacks
index 649f0fb..50b67fd 100644 (file)
@@ -51,6 +51,9 @@ WebView::WebView(WebContext* context, PageClient* pageClient, WebPageGroup* page
 
 WebView::~WebView()
 {
+    if (m_webPageProxy->isClosed())
+        return;
+
     m_webPageProxy->close();
 }
 
index 3fe1a03..5020fd4 100644 (file)
@@ -1,3 +1,23 @@
+2013-02-13  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
+
+        [WK2][EFL][WTR] Regression(r141836): WTR crashes on exit
+        https://bugs.webkit.org/show_bug.cgi?id=109456
+
+        Reviewed by Anders Carlsson.
+
+        WebView instance must not live longer than EwkView, as EwkView owns
+        objects that page proxy refers to, doing otherwise leads to a crash.
+
+        Test controller has own ptr containing WebView. Invoking of ewk_shutdown()
+        leads to evas objects deletion. So, the problem was that test controller was
+        deleted after ewk_shutdown() had been called in main() function causing
+        crashes on WTR exit.
+
+        The patch introduces a scope for test controller so that it is deleted first.
+
+        * WebKitTestRunner/efl/main.cpp:
+        (main):
+
 2013-02-13  Ilya Tikhonovsky  <loislo@chromium.org>
 
         Web Inspector: Native Memory Instrumentation: reportLeaf method doesn't report the leaf node properly.
index b02ff35..6b50669 100644 (file)
@@ -45,8 +45,12 @@ int main(int argc, char** argv)
     if (!ewk_init())
         return 1;
 
-    // Prefer the not installed web and plugin processes.
-    WTR::TestController controller(argc, const_cast<const char**>(argv));
+    {
+        // Test controller has own ptr containing WebView and WebView must be deleted
+        // before its evas object is deleted. Call of ewk_shutdown() leads to evas objects deletion.
+
+        WTR::TestController controller(argc, const_cast<const char**>(argv));
+    }
 
     ewk_shutdown();