Modified: trunk/Source/WebKit/ChangeLog (240345 => 240346)
--- trunk/Source/WebKit/ChangeLog 2019-01-23 18:39:37 UTC (rev 240345)
+++ trunk/Source/WebKit/ChangeLog 2019-01-23 18:44:34 UTC (rev 240346)
@@ -1,3 +1,17 @@
+2019-01-23 Brent Fulgham <[email protected]>
+
+ REGRESSION (r240243): CrashTracer: WebKitTestRunnerApp at com.apple.WebKit: WebKit::WebResourceLoadStatisticsStore::sendDiagnosticMessageWithValue const + 32
+ https://bugs.webkit.org/show_bug.cgi?id=193723
+ <rdar://problem/47476802>
+
+ Reviewed by David Kilzer.
+
+ The new code added in r240243 could attempt to submit telemetry after the relevant
+ WebResourceLoadStatisticsStore was destroyed. We should guard against this possibility.
+
+ * NetworkProcess/Classifier/WebResourceLoadStatisticsTelemetry.cpp:
+ (WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):
+
2019-01-23 Antti Koivisto <[email protected]>
[PSON] Flash on back navigation on Mac
Modified: trunk/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsTelemetry.cpp (240345 => 240346)
--- trunk/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsTelemetry.cpp 2019-01-23 18:39:37 UTC (rev 240345)
+++ trunk/Source/WebKit/NetworkProcess/Classifier/WebResourceLoadStatisticsTelemetry.cpp 2019-01-23 18:44:34 UTC (rev 240346)
@@ -241,16 +241,19 @@
}
// Dispatch on the main thread to make sure the WebPageProxy we're using doesn't go away.
- RunLoop::main().dispatch([sortedPrevalentResources = WTFMove(sortedPrevalentResources), sortedPrevalentResourcesWithoutUserInteraction = WTFMove(sortedPrevalentResourcesWithoutUserInteraction), prevalentResourcesDaysSinceUserInteraction = WTFMove(prevalentResourcesDaysSinceUserInteraction), &resourceLoadStatisticsStore] () {
+ RunLoop::main().dispatch([sortedPrevalentResources = WTFMove(sortedPrevalentResources), sortedPrevalentResourcesWithoutUserInteraction = WTFMove(sortedPrevalentResourcesWithoutUserInteraction), prevalentResourcesDaysSinceUserInteraction = WTFMove(prevalentResourcesDaysSinceUserInteraction), resourceLoadStatisticsStore = makeWeakPtr(resourceLoadStatisticsStore)] () {
+ if (!resourceLoadStatisticsStore)
+ return;
+
auto webPageProxy = WebPageProxy::nonEphemeralWebPageProxy();
if (!webPageProxy) {
if (notifyPagesWhenTelemetryWasCaptured)
- notifyPages(0, 0, 0, resourceLoadStatisticsStore.store());
+ notifyPages(0, 0, 0, resourceLoadStatisticsStore->store());
return;
}
if (notifyPagesWhenTelemetryWasCaptured) {
- notifyPages(sortedPrevalentResources, sortedPrevalentResourcesWithoutUserInteraction, prevalentResourcesDaysSinceUserInteraction.size(), resourceLoadStatisticsStore.store());
+ notifyPages(sortedPrevalentResources, sortedPrevalentResourcesWithoutUserInteraction, prevalentResourcesDaysSinceUserInteraction.size(), resourceLoadStatisticsStore->store());
// The notify pages function is for testing so we don't need to do an actual submission.
return;
}
@@ -263,7 +266,7 @@
if (prevalentResourcesDaysSinceUserInteraction.size() > 1)
webPageProxy->logDiagnosticMessageWithValue(DiagnosticLoggingKeys::resourceLoadStatisticsTelemetryKey(), "medianPrevalentResourcesWithUserInteractionDaysSinceUserInteraction"_s, median(prevalentResourcesDaysSinceUserInteraction), significantFiguresForLoggedValues, ShouldSample::No);
- submitTopLists(sortedPrevalentResources, sortedPrevalentResourcesWithoutUserInteraction, resourceLoadStatisticsStore.store());
+ submitTopLists(sortedPrevalentResources, sortedPrevalentResourcesWithoutUserInteraction, resourceLoadStatisticsStore->store());
});
}