Title: [240089] trunk/Source/WebKit
- Revision
- 240089
- Author
- you...@apple.com
- Date
- 2019-01-16 15:50:26 -0800 (Wed, 16 Jan 2019)
Log Message
ASSERTION FAILED: m_networkLoadInformationByID.contains(identifier) in WebKit::NetworkConnectionToWebProcess::addNetworkLoadInformationMetrics
https://bugs.webkit.org/show_bug.cgi?id=189097
<rdar://problem/43856423>
Reviewed by Alex Christensen.
In case where the inspector is launched, it will instruct the NetworkConnectionToWebProcess to start capturing network metrics.
If this happens in the middle of a load, addNetworkLoadInformationMetrics might fail since addNetworkLoadInformation will not be called.
To fix this issue, store whether to capture metrics at NetworkResourceLoader level.
To ensure that the case of switching back and forth capture of metrics, disable loader capture of metrics whenver NetworkConnectionToWebProcess is asked to.
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::setCaptureExtraNetworkLoadMetricsEnabled):
* NetworkProcess/NetworkConnectionToWebProcess.h:
(WebKit::NetworkConnectionToWebProcess::addNetworkLoadInformationMetrics):
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::m_shouldCaptureExtraNetworkLoadMetrics):
(WebKit::NetworkResourceLoader::shouldCaptureExtraNetworkLoadMetrics const):
* NetworkProcess/NetworkResourceLoader.h:
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (240088 => 240089)
--- trunk/Source/WebKit/ChangeLog 2019-01-16 23:50:17 UTC (rev 240088)
+++ trunk/Source/WebKit/ChangeLog 2019-01-16 23:50:26 UTC (rev 240089)
@@ -1,3 +1,26 @@
+2019-01-16 Youenn Fablet <you...@apple.com>
+
+ ASSERTION FAILED: m_networkLoadInformationByID.contains(identifier) in WebKit::NetworkConnectionToWebProcess::addNetworkLoadInformationMetrics
+ https://bugs.webkit.org/show_bug.cgi?id=189097
+ <rdar://problem/43856423>
+
+ Reviewed by Alex Christensen.
+
+ In case where the inspector is launched, it will instruct the NetworkConnectionToWebProcess to start capturing network metrics.
+ If this happens in the middle of a load, addNetworkLoadInformationMetrics might fail since addNetworkLoadInformation will not be called.
+ To fix this issue, store whether to capture metrics at NetworkResourceLoader level.
+
+ To ensure that the case of switching back and forth capture of metrics, disable loader capture of metrics whenver NetworkConnectionToWebProcess is asked to.
+
+ * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+ (WebKit::NetworkConnectionToWebProcess::setCaptureExtraNetworkLoadMetricsEnabled):
+ * NetworkProcess/NetworkConnectionToWebProcess.h:
+ (WebKit::NetworkConnectionToWebProcess::addNetworkLoadInformationMetrics):
+ * NetworkProcess/NetworkResourceLoader.cpp:
+ (WebKit::m_shouldCaptureExtraNetworkLoadMetrics):
+ (WebKit::NetworkResourceLoader::shouldCaptureExtraNetworkLoadMetrics const):
+ * NetworkProcess/NetworkResourceLoader.h:
+
2019-01-16 Alex Christensen <achristen...@webkit.org>
Revert r239938
Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (240088 => 240089)
--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2019-01-16 23:50:17 UTC (rev 240088)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2019-01-16 23:50:26 UTC (rev 240089)
@@ -545,8 +545,12 @@
void NetworkConnectionToWebProcess::setCaptureExtraNetworkLoadMetricsEnabled(bool enabled)
{
m_captureExtraNetworkLoadMetricsEnabled = enabled;
- if (!m_captureExtraNetworkLoadMetricsEnabled)
- m_networkLoadInformationByID.clear();
+ if (m_captureExtraNetworkLoadMetricsEnabled)
+ return;
+
+ m_networkLoadInformationByID.clear();
+ for (auto& loader : m_networkResourceLoaders.values())
+ loader->disableExtraNetworkLoadMetricsCapture();
}
void NetworkConnectionToWebProcess::ensureLegacyPrivateBrowsingSession()
Modified: trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp (240088 => 240089)
--- trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp 2019-01-16 23:50:17 UTC (rev 240088)
+++ trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp 2019-01-16 23:50:26 UTC (rev 240089)
@@ -96,6 +96,7 @@
, m_isAllowedToAskUserForCredentials { m_parameters.clientCredentialPolicy == ClientCredentialPolicy::MayAskClientForCredentials }
, m_bufferingTimer { *this, &NetworkResourceLoader::bufferingTimerFired }
, m_cache { sessionID().isEphemeral() ? nullptr : connection.networkProcess().cache() }
+ , m_shouldCaptureExtraNetworkLoadMetrics(m_connection->captureExtraNetworkLoadMetricsEnabled())
{
ASSERT(RunLoop::isMain());
// FIXME: This is necessary because of the existence of EmptyFrameLoaderClient in WebCore.
@@ -944,7 +945,7 @@
bool NetworkResourceLoader::shouldCaptureExtraNetworkLoadMetrics() const
{
- return m_connection->captureExtraNetworkLoadMetricsEnabled();
+ return m_shouldCaptureExtraNetworkLoadMetrics;
}
#if ENABLE(RESOURCE_LOAD_STATISTICS) && !RELEASE_LOG_DISABLED
Modified: trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.h (240088 => 240089)
--- trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.h 2019-01-16 23:50:17 UTC (rev 240088)
+++ trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.h 2019-01-16 23:50:26 UTC (rev 240089)
@@ -113,6 +113,8 @@
static void logCookieInformation(NetworkConnectionToWebProcess&, const String& label, const void* loggedObject, const WebCore::NetworkStorageSession&, const URL& firstParty, const WebCore::SameSiteInfo&, const URL&, const String& referrer, Optional<uint64_t> frameID, Optional<uint64_t> pageID, Optional<uint64_t> identifier);
#endif
+ void disableExtraNetworkLoadMetricsCapture() { m_shouldCaptureExtraNetworkLoadMetrics = false; }
+
private:
NetworkResourceLoader(NetworkResourceLoadParameters&&, NetworkConnectionToWebProcess&, Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply&&);
@@ -205,6 +207,7 @@
std::unique_ptr<NetworkLoadChecker> m_networkLoadChecker;
bool m_shouldRestartLoad { false };
ResponseCompletionHandler m_responseCompletionHandler;
+ bool m_shouldCaptureExtraNetworkLoadMetrics { false };
Optional<NetworkActivityTracker> m_networkActivityTracker;
};
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes