Title: [245339] trunk/Source/WebKit
Revision
245339
Author
[email protected]
Date
2019-05-15 12:50:54 -0700 (Wed, 15 May 2019)

Log 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):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (245338 => 245339)


--- trunk/Source/WebKit/ChangeLog	2019-05-15 19:24:16 UTC (rev 245338)
+++ trunk/Source/WebKit/ChangeLog	2019-05-15 19:50:54 UTC (rev 245339)
@@ -1,3 +1,19 @@
+2019-05-15  Sihui Liu  <[email protected]>
+
+        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):
+
 2019-05-15  Wenson Hsieh  <[email protected]>
 
         inputmode="numeric" should show a number pad with digits 0-9, instead of the numeric keyplane

Modified: trunk/Source/WebKit/UIProcess/WebProcessCache.cpp (245338 => 245339)


--- trunk/Source/WebKit/UIProcess/WebProcessCache.cpp	2019-05-15 19:24:16 UTC (rev 245338)
+++ trunk/Source/WebKit/UIProcess/WebProcessCache.cpp	2019-05-15 19:50:54 UTC (rev 245339)
@@ -246,6 +246,8 @@
     : m_process(WTFMove(process))
     , m_evictionTimer(RunLoop::main(), this, &CachedProcess::evictionTimerFired)
 {
+    RELEASE_ASSERT(!m_process->pageCount());
+    RELEASE_ASSERT_WITH_MESSAGE(!m_process->websiteDataStore().hasProcess(process.ptr()), "Only processes with pages should be registered with the data store");
     m_process->setIsInProcessCache(true);
     m_evictionTimer.startOneShot(cachedProcessLifetime);
 }

Modified: trunk/Source/WebKit/UIProcess/WebProcessLifetimeObserver.cpp (245338 => 245339)


--- trunk/Source/WebKit/UIProcess/WebProcessLifetimeObserver.cpp	2019-05-15 19:24:16 UTC (rev 245338)
+++ trunk/Source/WebKit/UIProcess/WebProcessLifetimeObserver.cpp	2019-05-15 19:50:54 UTC (rev 245339)
@@ -26,6 +26,7 @@
 #include "config.h"
 #include "WebProcessLifetimeObserver.h"
 
+#include "Logging.h"
 #include "WebPageProxy.h"
 #include "WebProcessProxy.h"
 
@@ -42,9 +43,13 @@
 void WebProcessLifetimeObserver::addWebPage(WebPageProxy& webPageProxy, WebProcessProxy& process)
 {
     ASSERT(process.state() == WebProcessProxy::State::Running);
+    RELEASE_ASSERT(!process.isInProcessCache());
+    RELEASE_ASSERT(!process.isPrewarmed());
 
-    if (m_processes.add(&process).isNewEntry)
+    if (m_processes.add(&process).isNewEntry) {
+        RELEASE_LOG(Loading, "%p - WebProcessLifetimeObserver::addWebPage: webPID = %i, pageID = %" PRIu64, this, process.processIdentifier(), webPageProxy.pageID());
         webProcessWillOpenConnection(process, *process.connection());
+    }
 
     webPageWillOpenConnection(webPageProxy, *process.connection());
 }
@@ -57,8 +62,10 @@
 
     webPageDidCloseConnection(webPageProxy, *process.connection());
 
-    if (m_processes.remove(&process))
+    if (m_processes.remove(&process)) {
+        RELEASE_LOG(Loading, "%p - WebProcessLifetimeObserver::removeWebPage: webPID = %i, pageID = %" PRIu64, this, process.processIdentifier(), webPageProxy.pageID());
         webProcessDidCloseConnection(process, *process.connection());
+    }
 }
 
 WTF::IteratorRange<HashCountedSet<WebProcessProxy*>::const_iterator::Keys> WebProcessLifetimeObserver::processes() const

Modified: trunk/Source/WebKit/UIProcess/WebProcessLifetimeObserver.h (245338 => 245339)


--- trunk/Source/WebKit/UIProcess/WebProcessLifetimeObserver.h	2019-05-15 19:24:16 UTC (rev 245338)
+++ trunk/Source/WebKit/UIProcess/WebProcessLifetimeObserver.h	2019-05-15 19:50:54 UTC (rev 245339)
@@ -48,6 +48,8 @@
 
     WTF::IteratorRange<HashCountedSet<WebProcessProxy*>::const_iterator::Keys> processes() const;
 
+    bool hasProcess(WebProcessProxy* process) const { return m_processes.contains(process); }
+
 private:
     friend class WebProcessLifetimeTracker;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to