Regression(ProcessPrewarming) Assertion hit in NetworkProcessProxy destructor
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 17 Nov 2018 06:46:55 +0000 (06:46 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 17 Nov 2018 06:46:55 +0000 (06:46 +0000)
https://bugs.webkit.org/show_bug.cgi?id=191800

Reviewed by Ryosuke Niwa.

Make sure the NetworkProcessProxy destructor calls its remaining m_pendingConnectionReplies
completion handlers to avoid hitting an assertion in the CompletionHandler destructor.

Prewarmed WebProcess do not keep the ProcessPool alive and thus not the NetworkProcessProxy
either. As a result, it is possible for NetworkProcessProxy to have pending connection
requests from those prewarmed processes when it is destroyed. Similar story for the
suspended page processes when they are destroyed.

* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::~NetworkProcessProxy):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@238343 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit/ChangeLog
Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp

index d90dd27..2a0fb71 100644 (file)
@@ -1,3 +1,21 @@
+2018-11-16  Chris Dumez  <cdumez@apple.com>
+
+        Regression(ProcessPrewarming) Assertion hit in NetworkProcessProxy destructor
+        https://bugs.webkit.org/show_bug.cgi?id=191800
+
+        Reviewed by Ryosuke Niwa.
+
+        Make sure the NetworkProcessProxy destructor calls its remaining m_pendingConnectionReplies
+        completion handlers to avoid hitting an assertion in the CompletionHandler destructor.
+
+        Prewarmed WebProcess do not keep the ProcessPool alive and thus not the NetworkProcessProxy
+        either. As a result, it is possible for NetworkProcessProxy to have pending connection
+        requests from those prewarmed processes when it is destroyed. Similar story for the
+        suspended page processes when they are destroyed.
+
+        * UIProcess/Network/NetworkProcessProxy.cpp:
+        (WebKit::NetworkProcessProxy::~NetworkProcessProxy):
+
 2018-11-16  Alex Christensen  <achristensen@webkit.org>
 
         Tweak _showSafeBrowsingWarningWithTitle SPI
index f0b6132..4c713ad 100644 (file)
@@ -89,6 +89,9 @@ NetworkProcessProxy::~NetworkProcessProxy()
     for (auto* proxy : m_webUserContentControllerProxies)
         proxy->removeNetworkProcess(*this);
 #endif
+
+    for (auto& reply : m_pendingConnectionReplies)
+        reply.second({ });
 }
 
 void NetworkProcessProxy::getLaunchOptions(ProcessLauncher::LaunchOptions& launchOptions)