Changeset 245339 in webkit


Ignore:
Timestamp:
May 15, 2019 12:50:54 PM (5 years ago)
Author:
sihui_liu@apple.com
Message:

Add assertions to help diagnose crash at WebProcessProxy::processPool()
https://bugs.webkit.org/show_bug.cgi?id=197856
<rdar://problem/49341366>

Reviewed by Chris Dumez.

  • UIProcess/WebProcessCache.cpp:

(WebKit::WebProcessCache::CachedProcess::CachedProcess):

  • UIProcess/WebProcessLifetimeObserver.cpp:

(WebKit::WebProcessLifetimeObserver::addWebPage):
(WebKit::WebProcessLifetimeObserver::removeWebPage):

  • UIProcess/WebProcessLifetimeObserver.h:

(WebKit::WebProcessLifetimeObserver::hasProcess const):

Location:
trunk/Source/WebKit
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r245338 r245339  
     12019-05-15  Sihui Liu  <sihui_liu@apple.com>
     2
     3        Add assertions to help diagnose crash at WebProcessProxy::processPool()
     4        https://bugs.webkit.org/show_bug.cgi?id=197856
     5        <rdar://problem/49341366>
     6
     7        Reviewed by Chris Dumez.
     8
     9        * UIProcess/WebProcessCache.cpp:
     10        (WebKit::WebProcessCache::CachedProcess::CachedProcess):
     11        * UIProcess/WebProcessLifetimeObserver.cpp:
     12        (WebKit::WebProcessLifetimeObserver::addWebPage):
     13        (WebKit::WebProcessLifetimeObserver::removeWebPage):
     14        * UIProcess/WebProcessLifetimeObserver.h:
     15        (WebKit::WebProcessLifetimeObserver::hasProcess const):
     16
    1172019-05-15  Wenson Hsieh  <wenson_hsieh@apple.com>
    218
  • trunk/Source/WebKit/UIProcess/WebProcessCache.cpp

    r243163 r245339  
    247247    , m_evictionTimer(RunLoop::main(), this, &CachedProcess::evictionTimerFired)
    248248{
     249    RELEASE_ASSERT(!m_process->pageCount());
     250    RELEASE_ASSERT_WITH_MESSAGE(!m_process->websiteDataStore().hasProcess(process.ptr()), "Only processes with pages should be registered with the data store");
    249251    m_process->setIsInProcessCache(true);
    250252    m_evictionTimer.startOneShot(cachedProcessLifetime);
  • trunk/Source/WebKit/UIProcess/WebProcessLifetimeObserver.cpp

    r242182 r245339  
    2727#include "WebProcessLifetimeObserver.h"
    2828
     29#include "Logging.h"
    2930#include "WebPageProxy.h"
    3031#include "WebProcessProxy.h"
     
    4344{
    4445    ASSERT(process.state() == WebProcessProxy::State::Running);
     46    RELEASE_ASSERT(!process.isInProcessCache());
     47    RELEASE_ASSERT(!process.isPrewarmed());
    4548
    46     if (m_processes.add(&process).isNewEntry)
     49    if (m_processes.add(&process).isNewEntry) {
     50        RELEASE_LOG(Loading, "%p - WebProcessLifetimeObserver::addWebPage: webPID = %i, pageID = %" PRIu64, this, process.processIdentifier(), webPageProxy.pageID());
    4751        webProcessWillOpenConnection(process, *process.connection());
     52    }
    4853
    4954    webPageWillOpenConnection(webPageProxy, *process.connection());
     
    5863    webPageDidCloseConnection(webPageProxy, *process.connection());
    5964
    60     if (m_processes.remove(&process))
     65    if (m_processes.remove(&process)) {
     66        RELEASE_LOG(Loading, "%p - WebProcessLifetimeObserver::removeWebPage: webPID = %i, pageID = %" PRIu64, this, process.processIdentifier(), webPageProxy.pageID());
    6167        webProcessDidCloseConnection(process, *process.connection());
     68    }
    6269}
    6370
  • trunk/Source/WebKit/UIProcess/WebProcessLifetimeObserver.h

    r242182 r245339  
    4949    WTF::IteratorRange<HashCountedSet<WebProcessProxy*>::const_iterator::Keys> processes() const;
    5050
     51    bool hasProcess(WebProcessProxy* process) const { return m_processes.contains(process); }
     52
    5153private:
    5254    friend class WebProcessLifetimeTracker;
Note: See TracChangeset for help on using the changeset viewer.