Bug 1253994 - Make profile collection more robust (r=mconley)
authorBill McCloskey <billm@mozilla.com>
Sun, 06 Mar 2016 15:43:29 -0800
changeset 292274 57fd0306e82e0eb3870923486f1373af82d39949
parent 292273 f211fb1746f2d9cfc49bd6806fbcd6b72800f2d5
child 292275 b79de31a7a1bff1a3d0768568c7eb71a3edeed2f
push id74799
push userwmccloskey@mozilla.com
push dateFri, 08 Apr 2016 00:15:39 +0000
treeherdermozilla-inbound@d20bb8617b25 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmconley
bugs1253994
milestone48.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1253994 - Make profile collection more robust (r=mconley)
dom/ipc/ContentParent.cpp
testing/talos/talos/pageloader/chrome/Profiler.js
testing/talos/talos/pageloader/chrome/pageloader.js
testing/talos/talos/pageloader/install.rdf
testing/talos/talos/pageloader/pageloader-signed.xpi
--- a/dom/ipc/ContentParent.cpp
+++ b/dom/ipc/ContentParent.cpp
@@ -3133,16 +3133,37 @@ ContentParent::Observe(nsISupports* aSub
     // data (e.g. telemetry) from the child before we quit.
     // This loop terminate prematurely based on mForceKillTimer.
     while (mIPCOpen && !mCalledKillHard) {
       NS_ProcessNextEvent(nullptr, true);
     }
     NS_ASSERTION(!mSubprocess, "Close should have nulled mSubprocess");
   }
 
+#ifdef MOZ_ENABLE_PROFILER_SPS
+  // Need to do this before the mIsAlive check to avoid missing profiles.
+  if (!strcmp(aTopic, "profiler-subprocess-gather")) {
+    if (mGatherer) {
+      mGatherer->WillGatherOOPProfile();
+      if (mIsAlive && mSubprocess) {
+        Unused << SendGatherProfile();
+      }
+    }
+  }
+  else if (!strcmp(aTopic, "profiler-subprocess")) {
+    nsCOMPtr<nsIProfileSaveEvent> pse = do_QueryInterface(aSubject);
+    if (pse) {
+      if (!mProfile.IsEmpty()) {
+        pse->AddSubProfile(mProfile.get());
+        mProfile.Truncate();
+      }
+    }
+  }
+#endif
+
   if (!mIsAlive || !mSubprocess)
     return NS_OK;
 
   // The Nuwa process unregisters the topics after it becomes ready except for
   // the ones listed in sNuwaSafeObserverTopics. If the topic needs to be
   // observed by the Nuwa process, either for:
   // 1. The topic is safe for the Nuwa process, either:
   // 1.1 The state can safely happen (only run on the main thread) in the Nuwa
@@ -3294,31 +3315,16 @@ ContentParent::Observe(nsISupports* aSub
     Unused << SendStopProfiler();
   }
   else if (!strcmp(aTopic, "profiler-paused")) {
     Unused << SendPauseProfiler(true);
   }
   else if (!strcmp(aTopic, "profiler-resumed")) {
     Unused << SendPauseProfiler(false);
   }
-  else if (!strcmp(aTopic, "profiler-subprocess-gather")) {
-    if (mGatherer) {
-      mGatherer->WillGatherOOPProfile();
-      Unused << SendGatherProfile();
-    }
-  }
-  else if (!strcmp(aTopic, "profiler-subprocess")) {
-    nsCOMPtr<nsIProfileSaveEvent> pse = do_QueryInterface(aSubject);
-    if (pse) {
-      if (!mProfile.IsEmpty()) {
-        pse->AddSubProfile(mProfile.get());
-        mProfile.Truncate();
-      }
-    }
-  }
 #endif
   else if (!strcmp(aTopic, "gmp-changed")) {
     Unused << SendNotifyGMPsChanged();
   }
   return NS_OK;
 }
 
 PGMPServiceParent*
--- a/testing/talos/talos/pageloader/chrome/Profiler.js
+++ b/testing/talos/talos/pageloader/chrome/Profiler.js
@@ -99,16 +99,53 @@ var Profiler;
       }
     },
     finishTest: function Profiler__finishTest () {
       if (_profiler && enabled) {
         _profiler.dumpProfileToFile(profiler_dir + "/" + currentTest + ".sps");
         _profiler.StopProfiler();
       }
     },
+    finishTestAsync: function Profiler__finishTest () {
+      if (!(_profiler && enabled)) {
+        return;
+      }
+      return new Promise((resolve, reject) => {
+        Services.profiler.getProfileDataAsync().then((profile) => {
+          let profileFile = profiler_dir + "/" + currentTest + ".sps";
+
+          Components.utils.import("resource://gre/modules/NetUtil.jsm");
+          Components.utils.import("resource://gre/modules/FileUtils.jsm");
+
+          var file = Components.classes["@mozilla.org/file/local;1"].
+           createInstance(Components.interfaces.nsILocalFile);
+          file.initWithPath(profileFile);
+
+          var ostream = FileUtils.openSafeFileOutputStream(file);
+
+          var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].
+              createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
+          converter.charset = "UTF-8";
+          var istream = converter.convertToInputStream(JSON.stringify(profile));
+
+          // The last argument (the callback) is optional.
+          NetUtil.asyncCopy(istream, ostream, function(status) {
+            if (!Components.isSuccessCode(status)) {
+              reject();
+              return;
+            }
+
+            resolve();
+          });
+        }, (error) => {
+          Cu.reportError("Failed to gather profile: " + error);
+          reject();
+        });
+      });
+    },
     finishStartupProfiling: function Profiler__finishStartupProfiling () {
       if (_profiler && enabled) {
         _profiler.dumpProfileToFile(profiler_dir + "/startup.sps");
         _profiler.StopProfiler();
       }
     },
     resume: function Profiler__resume (name, explicit) {
       if (_profiler) {
--- a/testing/talos/talos/pageloader/chrome/pageloader.js
+++ b/testing/talos/talos/pageloader/chrome/pageloader.js
@@ -461,17 +461,17 @@ function loadFail() {
 
 var plNextPage = Task.async(function*() {
   var doNextPage = false;
   if (pageCycle < numPageCycles) {
     pageCycle++;
     doNextPage = true;
   } else {
     if (profilingInfo) {
-      Profiler.finishTest();
+      yield Profiler.finishTestAsync();
     }
 
     if (pageIndex < pages.length-1) {
       pageIndex++;
       if (profilingInfo) {
         Profiler.beginTest(getCurrentPageShortName());
       }
       recordedName = null;
--- a/testing/talos/talos/pageloader/install.rdf
+++ b/testing/talos/talos/pageloader/install.rdf
@@ -1,15 +1,15 @@
 <?xml version="1.0"?>
 
 <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:em="http://www.mozilla.org/2004/em-rdf#">
   <Description about="urn:mozilla:install-manifest">
     <em:id>pageloader@mozilla.org</em:id>
-    <em:version>1.0.4</em:version>
+    <em:version>1.0.5</em:version>
     <em:targetApplication>
       <Description>
         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
         <em:minVersion>44.0</em:minVersion>
         <em:maxVersion>*</em:maxVersion>
       </Description>
     </em:targetApplication>
     <!-- Front End MetaData -->
index bf473edae2e93dd7b020e945c675a471011bbfa1..8d55f65cb9a740528b8dfc0d567eb66877778b21
GIT binary patch
literal 28863
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