Bug 1221846 - Avoid assertions from Task Tracer due to reentry on profiler init and shutdown. r?cyu draft
authorMike Conley <mconley@mozilla.com>
Tue, 15 Dec 2015 19:12:36 -0500
changeset 315789 c8493cca90c2df8556b0959853e2d392f3c0554c
parent 315788 6c56397020b96a8cc70e7ca9142bfec9e544d3d0
child 512085 63bc6ad9632fb91383f887324c9647e7eb749686
push id8463
push usermconley@mozilla.com
push dateWed, 16 Dec 2015 16:48:37 +0000
reviewerscyu
bugs1221846
milestone45.0a1
Bug 1221846 - Avoid assertions from Task Tracer due to reentry on profiler init and shutdown. r?cyu
tools/profiler/tasktracer/GeckoTaskTracer.cpp
--- 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