Bug 1221846 - Avoid assertions from Task Tracer due to reentry on profiler init and shutdown. r?cyu
--- a/tools/profiler/tasktracer/GeckoTaskTracer.cpp
+++ b/tools/profiler/tasktracer/GeckoTaskTracer.cpp
@@ -165,17 +165,20 @@ inline static bool
IsStartLogging()
{
return sStarted;
}
static void
SetLogStarted(bool aIsStartLogging)
{
- MOZ_ASSERT(aIsStartLogging != IsStartLogging());
+ if (aIsStartLogging == IsStartLogging()) {
+ return;
+ }
+
sStarted = aIsStartLogging;
StaticMutexAutoLock lock(sMutex);
if (!aIsStartLogging) {
for (uint32_t i = 0; i < sTraceInfos->Length(); ++i) {
(*sTraceInfos)[i]->mObsolete = true;
}
}
@@ -222,17 +225,20 @@ TraceInfo::MoveLogsInto(TraceInfoLogsTyp
void
InitTaskTracer(uint32_t aFlags)
{
if (aFlags & FORKED_AFTER_NUWA) {
ObsoleteCurrentTraceInfos();
return;
}
- MOZ_ASSERT(!sTraceInfos);
+ if (sTraceInfos) {
+ return;
+ }
+
sTraceInfos = new nsTArray<nsAutoPtr<TraceInfo>>();
if (!sTraceInfoTLS.initialized()) {
Unused << sTraceInfoTLS.init();
}
}
void