[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

jberlin at webkit.org jberlin at webkit.org
Wed Dec 22 14:52:39 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 76a0aef952555f7f3a798ec42a638c4f55419f12
Author: jberlin at webkit.org <jberlin at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Oct 22 21:47:22 2010 +0000

    Crash in Connection::isValid when called in response to
    VisitedLinksProvider::pendingVisitedLinksTimerFired after WebProcessProxy::didClose was
    already called.
    https://bugs.webkit.org/show_bug.cgi?id=48153
    
    Reviewed by Anders Carlsson.
    
    * UIProcess/VisitedLinkProvider.cpp:
    (WebKit::VisitedLinkProvider::stopVisitedLinksTimer):
    * UIProcess/VisitedLinkProvider.h:
    
    * UIProcess/WebContext.cpp:
    (WebKit::WebContext::processDidClose):
    Stop the pendingVisitedLinksTimer and null out the process.
    * UIProcess/WebContext.h:
    
    * UIProcess/WebProcessProxy.cpp:
    (WebKit::WebProcessProxy::didClose):
    Tell the WebContext that the WebProcess did close.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@70346 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 1f24d16..2b9fd24 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,25 @@
+2010-10-22  Jessie Berlin  <jberlin at apple.com>
+
+        Reviewed by Anders Carlsson.
+
+        Crash in Connection::isValid when called in response to
+        VisitedLinksProvider::pendingVisitedLinksTimerFired after WebProcessProxy::didClose was
+        already called.
+        https://bugs.webkit.org/show_bug.cgi?id=48153
+
+        * UIProcess/VisitedLinkProvider.cpp:
+        (WebKit::VisitedLinkProvider::stopVisitedLinksTimer):
+        * UIProcess/VisitedLinkProvider.h:
+
+        * UIProcess/WebContext.cpp:
+        (WebKit::WebContext::processDidClose):
+        Stop the pendingVisitedLinksTimer and null out the process.
+        * UIProcess/WebContext.h:
+
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::didClose):
+        Tell the WebContext that the WebProcess did close.
+
 2010-10-22  Sam Weinig  <sam at webkit.org>
 
         Fix Qt build.
diff --git a/WebKit2/UIProcess/VisitedLinkProvider.cpp b/WebKit2/UIProcess/VisitedLinkProvider.cpp
index 83b5414..4d1871d 100644
--- a/WebKit2/UIProcess/VisitedLinkProvider.cpp
+++ b/WebKit2/UIProcess/VisitedLinkProvider.cpp
@@ -63,6 +63,11 @@ void VisitedLinkProvider::addVisitedLink(LinkHash linkHash)
         m_pendingVisitedLinksTimer.startOneShot(0);
 }
 
+void VisitedLinkProvider::stopVisitedLinksTimer()
+{
+    m_pendingVisitedLinksTimer.stop();
+}
+
 static unsigned nextPowerOf2(unsigned v)
 {
     // Taken from http://www.cs.utk.edu/~vose/c-stuff/bithacks.html
diff --git a/WebKit2/UIProcess/VisitedLinkProvider.h b/WebKit2/UIProcess/VisitedLinkProvider.h
index f095ba5..b8d53f1 100644
--- a/WebKit2/UIProcess/VisitedLinkProvider.h
+++ b/WebKit2/UIProcess/VisitedLinkProvider.h
@@ -44,6 +44,8 @@ public:
     void populateVisitedLinksIfNeeded();
     void addVisitedLink(WebCore::LinkHash);
 
+    void stopVisitedLinksTimer();
+
 private:
     void pendingVisitedLinksTimerFired();
 
diff --git a/WebKit2/UIProcess/WebContext.cpp b/WebKit2/UIProcess/WebContext.cpp
index 1a3f047..28fe68f 100644
--- a/WebKit2/UIProcess/WebContext.cpp
+++ b/WebKit2/UIProcess/WebContext.cpp
@@ -194,6 +194,16 @@ void WebContext::processDidFinishLaunching(WebProcessProxy* process)
     m_visitedLinkProvider.populateVisitedLinksIfNeeded();
 }
 
+void WebContext::processDidClose(WebProcessProxy* process)
+{
+    // FIXME: Once we support multiple processes per context, this assertion won't hold.
+    ASSERT(process == m_process);
+
+    m_visitedLinkProvider.stopVisitedLinksTimer();
+
+    m_process = 0;
+}
+
 WebPageProxy* WebContext::createWebPage(WebPageNamespace* pageNamespace)
 {
     ensureWebProcess();
diff --git a/WebKit2/UIProcess/WebContext.h b/WebKit2/UIProcess/WebContext.h
index 6834703..709c351 100644
--- a/WebKit2/UIProcess/WebContext.h
+++ b/WebKit2/UIProcess/WebContext.h
@@ -68,6 +68,7 @@ public:
     WebProcessProxy* process() const { return m_process.get(); }
 
     void processDidFinishLaunching(WebProcessProxy*);
+    void processDidClose(WebProcessProxy*);
 
     WebPageProxy* createWebPage(WebPageNamespace*);
 
diff --git a/WebKit2/UIProcess/WebProcessProxy.cpp b/WebKit2/UIProcess/WebProcessProxy.cpp
index 89d9651..58ad2cc 100644
--- a/WebKit2/UIProcess/WebProcessProxy.cpp
+++ b/WebKit2/UIProcess/WebProcessProxy.cpp
@@ -414,6 +414,8 @@ void WebProcessProxy::didClose(CoreIPC::Connection*)
     for (size_t i = 0, size = pages.size(); i < size; ++i)
         pages[i]->processDidCrash();
 
+    m_context->processDidClose(this);
+
     // This may cause us to be deleted.
     WebProcessManager::shared().processDidClose(this, m_context);
 }

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list