Changeset 70346 in webkit


Ignore:
Timestamp:
Oct 22, 2010 2:47:22 PM (14 years ago)
Author:
jberlin@webkit.org
Message:

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.

Location:
trunk/WebKit2
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit2/ChangeLog

    r70336 r70346  
     12010-10-22  Jessie Berlin  <jberlin@apple.com>
     2
     3        Reviewed by Anders Carlsson.
     4
     5        Crash in Connection::isValid when called in response to
     6        VisitedLinksProvider::pendingVisitedLinksTimerFired after WebProcessProxy::didClose was
     7        already called.
     8        https://bugs.webkit.org/show_bug.cgi?id=48153
     9
     10        * UIProcess/VisitedLinkProvider.cpp:
     11        (WebKit::VisitedLinkProvider::stopVisitedLinksTimer):
     12        * UIProcess/VisitedLinkProvider.h:
     13
     14        * UIProcess/WebContext.cpp:
     15        (WebKit::WebContext::processDidClose):
     16        Stop the pendingVisitedLinksTimer and null out the process.
     17        * UIProcess/WebContext.h:
     18
     19        * UIProcess/WebProcessProxy.cpp:
     20        (WebKit::WebProcessProxy::didClose):
     21        Tell the WebContext that the WebProcess did close.
     22
    1232010-10-22  Sam Weinig  <sam@webkit.org>
    224
  • trunk/WebKit2/UIProcess/VisitedLinkProvider.cpp

    r69029 r70346  
    6262    if (!m_pendingVisitedLinksTimer.isActive())
    6363        m_pendingVisitedLinksTimer.startOneShot(0);
     64}
     65
     66void VisitedLinkProvider::stopVisitedLinksTimer()
     67{
     68    m_pendingVisitedLinksTimer.stop();
    6469}
    6570
  • trunk/WebKit2/UIProcess/VisitedLinkProvider.h

    r65021 r70346  
    4545    void addVisitedLink(WebCore::LinkHash);
    4646
     47    void stopVisitedLinksTimer();
     48
    4749private:
    4850    void pendingVisitedLinksTimerFired();
  • trunk/WebKit2/UIProcess/WebContext.cpp

    r70109 r70346  
    195195}
    196196
     197void WebContext::processDidClose(WebProcessProxy* process)
     198{
     199    // FIXME: Once we support multiple processes per context, this assertion won't hold.
     200    ASSERT(process == m_process);
     201
     202    m_visitedLinkProvider.stopVisitedLinksTimer();
     203
     204    m_process = 0;
     205}
     206
    197207WebPageProxy* WebContext::createWebPage(WebPageNamespace* pageNamespace)
    198208{
  • trunk/WebKit2/UIProcess/WebContext.h

    r70109 r70346  
    6969
    7070    void processDidFinishLaunching(WebProcessProxy*);
     71    void processDidClose(WebProcessProxy*);
    7172
    7273    WebPageProxy* createWebPage(WebPageNamespace*);
  • trunk/WebKit2/UIProcess/WebProcessProxy.cpp

    r70329 r70346  
    415415        pages[i]->processDidCrash();
    416416
     417    m_context->processDidClose(this);
     418
    417419    // This may cause us to be deleted.
    418420    WebProcessManager::shared().processDidClose(this, m_context);
Note: See TracChangeset for help on using the changeset viewer.