111 lines
3.4 KiB
Diff
111 lines
3.4 KiB
Diff
From 7b6c571182661cfffa0987c1a88a2cb5a3230bcd Mon Sep 17 00:00:00 2001
|
|
From: Georg Fritzsche <georg.fritzsche@googlemail.com>
|
|
Date: Tue, 18 Aug 2015 19:21:40 +0200
|
|
Subject: [PATCH] Bug 1193038 - Purposely leak StatisticsReport object and
|
|
suppress the leak report. r=glandium,mccr8,njn, a=lizzard
|
|
|
|
--HG--
|
|
extra : source : 346b9ee524d1a704ea953ef16237f3d0c7ee56d1
|
|
extra : intermediate-source : 48b17faad125691454ebba9bdef0a5def9128f11
|
|
---
|
|
build/valgrind/cross-architecture.sup | 9 +++++++++
|
|
toolkit/xre/nsAppRunner.cpp | 22 +++++++++++++++-------
|
|
2 files changed, 24 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/build/valgrind/cross-architecture.sup b/build/valgrind/cross-architecture.sup
|
|
index 9215d3b..1e9d7ab 100644
|
|
--- a/build/valgrind/cross-architecture.sup
|
|
+++ b/build/valgrind/cross-architecture.sup
|
|
@@ -34,6 +34,15 @@
|
|
fun:_ZN13CrashReporter14SetupExtraDataEP7nsIFileRK19nsACString_internal
|
|
...
|
|
}
|
|
+{
|
|
+ We purposely leak the StatisticsReporter object
|
|
+ Memcheck:Leak
|
|
+ fun:malloc
|
|
+ fun:moz_xmalloc
|
|
+ fun:operator new
|
|
+ fun:_Z21XRE_CreateStatsObjectv
|
|
+ ...
|
|
+}
|
|
|
|
####################################
|
|
# Leaks in third party libraries #
|
|
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
|
|
index 5334a05..037aeac 100644
|
|
--- a/toolkit/xre/nsAppRunner.cpp
|
|
+++ b/toolkit/xre/nsAppRunner.cpp
|
|
@@ -20,6 +20,7 @@
|
|
#include "mozilla/Poison.h"
|
|
#include "mozilla/Preferences.h"
|
|
#include "mozilla/Telemetry.h"
|
|
+#include "mozilla/MemoryChecking.h"
|
|
|
|
#include "nsAppRunner.h"
|
|
#include "mozilla/AppData.h"
|
|
@@ -3004,7 +3005,6 @@ public:
|
|
|
|
~XREMain() {
|
|
mScopedXPCOM = nullptr;
|
|
- mStatisticsRecorder = nullptr;
|
|
mAppData = nullptr;
|
|
}
|
|
|
|
@@ -3023,7 +3023,6 @@ public:
|
|
#endif
|
|
|
|
UniquePtr<ScopedXPCOMStartup> mScopedXPCOM;
|
|
- UniquePtr<base::StatisticsRecorder> mStatisticsRecorder;
|
|
nsAutoPtr<mozilla::ScopedAppData> mAppData;
|
|
|
|
nsXREDirProvider mDirProvider;
|
|
@@ -4268,10 +4267,6 @@ XREMain::XRE_main(int argc, char* argv[], const nsXREAppData* aAppData)
|
|
|
|
NS_ENSURE_TRUE(aAppData, 2);
|
|
|
|
- // A initializer to initialize histogram collection, a chromium
|
|
- // thing used by Telemetry.
|
|
- mStatisticsRecorder = MakeUnique<base::StatisticsRecorder>();
|
|
-
|
|
mAppData = new ScopedAppData(aAppData);
|
|
if (!mAppData)
|
|
return 1;
|
|
@@ -4345,7 +4340,6 @@ XREMain::XRE_main(int argc, char* argv[], const nsXREAppData* aAppData)
|
|
}
|
|
|
|
mScopedXPCOM = nullptr;
|
|
- mStatisticsRecorder = nullptr;
|
|
|
|
// unlock the profile after ScopedXPCOMStartup object (xpcom)
|
|
// has gone out of scope. see bug #386739 for more details
|
|
@@ -4531,11 +4525,25 @@ XRE_StopLateWriteChecks(void) {
|
|
mozilla::StopLateWriteChecks();
|
|
}
|
|
|
|
+// Separate stub function to let us specifically suppress it in Valgrind
|
|
+void
|
|
+XRE_CreateStatsObject()
|
|
+{
|
|
+ // A initializer to initialize histogram collection, a chromium
|
|
+ // thing used by Telemetry (and effectively a global; it's all static).
|
|
+ // Note: purposely leaked
|
|
+ base::StatisticsRecorder* statistics_recorder = new base::StatisticsRecorder();
|
|
+ MOZ_LSAN_INTENTIONALLY_LEAK_OBJECT(statistics_recorder);
|
|
+ unused << statistics_recorder;
|
|
+}
|
|
+
|
|
int
|
|
XRE_main(int argc, char* argv[], const nsXREAppData* aAppData, uint32_t aFlags)
|
|
{
|
|
#if !defined(MOZ_METRO) || !defined(XP_WIN)
|
|
XREMain main;
|
|
+
|
|
+ XRE_CreateStatsObject();
|
|
int result = main.XRE_main(argc, argv, aAppData);
|
|
mozilla::RecordShutdownEndTimeStamp();
|
|
return result;
|
|
--
|
|
2.5.0
|
|
|