[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