Bug 731613 - Don't track startup crashes when XRE_PROFILE_PATH is set (from restart or profile manager). r=Mossop
authorMatthew Noorenberghe <mozilla@noorenberghe.ca>
Wed, 14 Mar 2012 17:08:59 -0700
changeset 89938 610a13a580503646b59600eaae18baeb5753833b
parent 89937 3b06cfee48cdce15fe6936f2223e7cb078b92280
child 89939 8e9c49a3983393429f784e481c1222cc7e666f13
push id7395
push usermozilla@noorenberghe.ca
push dateWed, 21 Mar 2012 20:30:46 +0000
treeherdermozilla-inbound@610a13a58050 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersMossop
bugs731613
milestone14.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 731613 - Don't track startup crashes when XRE_PROFILE_PATH is set (from restart or profile manager). r=Mossop
toolkit/components/startup/nsAppStartup.cpp
--- a/toolkit/components/startup/nsAppStartup.cpp
+++ b/toolkit/components/startup/nsAppStartup.cpp
@@ -867,16 +867,25 @@ nsAppStartup::TrackStartupCrashBegin(boo
   PRInt32 maxResumedCrashes = -1;
   rv = Preferences::GetInt(kPrefMaxResumedCrashes, &maxResumedCrashes);
   NS_ENSURE_SUCCESS(rv, NS_OK);
 
   PRInt32 recentCrashes = 0;
   Preferences::GetInt(kPrefRecentCrashes, &recentCrashes);
   mIsSafeModeNecessary = (recentCrashes > maxResumedCrashes && maxResumedCrashes != -1);
 
+  // Bug 731613 - Don't check if the last startup was a crash if XRE_PROFILE_PATH is set.  After
+  // profile manager, the profile lock's mod. time has been changed so can't be used on this startup.
+  // After a restart, it's safe to assume the last startup was successful.
+  char *xreProfilePath = PR_GetEnv("XRE_PROFILE_PATH");
+  if (xreProfilePath) {
+    GetAutomaticSafeModeNecessary(aIsSafeModeNecessary);
+    return NS_ERROR_NOT_AVAILABLE;
+  }
+
   // time of last successful startup
   PRInt32 lastSuccessfulStartup;
   rv = Preferences::GetInt(kPrefLastSuccess, &lastSuccessfulStartup);
   NS_ENSURE_SUCCESS(rv, rv);
 
   PRInt32 lockSeconds = (PRInt32)(replacedLockTime / PR_MSEC_PER_SEC);
 
   // started close enough to good startup so call it good