Loading services/core/java/com/android/server/RescueParty.java +22 −5 Original line number Original line Diff line number Diff line Loading @@ -253,10 +253,7 @@ public class RescueParty { logCriticalInfo(Log.DEBUG, logCriticalInfo(Log.DEBUG, "Finished rescue level " + levelToString(level)); "Finished rescue level " + levelToString(level)); } catch (Throwable t) { } catch (Throwable t) { final String msg = ExceptionUtils.getCompleteMessage(t); logRescueException(level, t); EventLogTags.writeRescueFailure(level, msg); logCriticalInfo(Log.ERROR, "Failed rescue level " + levelToString(level) + ": " + msg); } } } } Loading @@ -274,11 +271,31 @@ public class RescueParty { resetAllSettings(context, Settings.RESET_MODE_TRUSTED_DEFAULTS, failedPackage); resetAllSettings(context, Settings.RESET_MODE_TRUSTED_DEFAULTS, failedPackage); break; break; case LEVEL_FACTORY_RESET: case LEVEL_FACTORY_RESET: // Request the reboot from a separate thread to avoid deadlock on PackageWatchdog // when device shutting down. Runnable runnable = new Runnable() { @Override public void run() { try { RecoverySystem.rebootPromptAndWipeUserData(context, TAG); RecoverySystem.rebootPromptAndWipeUserData(context, TAG); } catch (Throwable t) { logRescueException(level, t); } } }; Thread thread = new Thread(runnable); thread.start(); break; break; } } } } private static void logRescueException(int level, Throwable t) { final String msg = ExceptionUtils.getCompleteMessage(t); EventLogTags.writeRescueFailure(level, msg); logCriticalInfo(Log.ERROR, "Failed rescue level " + levelToString(level) + ": " + msg); } private static int mapRescueLevelToUserImpact(int rescueLevel) { private static int mapRescueLevelToUserImpact(int rescueLevel) { switch(rescueLevel) { switch(rescueLevel) { case LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS: case LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS: Loading Loading
services/core/java/com/android/server/RescueParty.java +22 −5 Original line number Original line Diff line number Diff line Loading @@ -253,10 +253,7 @@ public class RescueParty { logCriticalInfo(Log.DEBUG, logCriticalInfo(Log.DEBUG, "Finished rescue level " + levelToString(level)); "Finished rescue level " + levelToString(level)); } catch (Throwable t) { } catch (Throwable t) { final String msg = ExceptionUtils.getCompleteMessage(t); logRescueException(level, t); EventLogTags.writeRescueFailure(level, msg); logCriticalInfo(Log.ERROR, "Failed rescue level " + levelToString(level) + ": " + msg); } } } } Loading @@ -274,11 +271,31 @@ public class RescueParty { resetAllSettings(context, Settings.RESET_MODE_TRUSTED_DEFAULTS, failedPackage); resetAllSettings(context, Settings.RESET_MODE_TRUSTED_DEFAULTS, failedPackage); break; break; case LEVEL_FACTORY_RESET: case LEVEL_FACTORY_RESET: // Request the reboot from a separate thread to avoid deadlock on PackageWatchdog // when device shutting down. Runnable runnable = new Runnable() { @Override public void run() { try { RecoverySystem.rebootPromptAndWipeUserData(context, TAG); RecoverySystem.rebootPromptAndWipeUserData(context, TAG); } catch (Throwable t) { logRescueException(level, t); } } }; Thread thread = new Thread(runnable); thread.start(); break; break; } } } } private static void logRescueException(int level, Throwable t) { final String msg = ExceptionUtils.getCompleteMessage(t); EventLogTags.writeRescueFailure(level, msg); logCriticalInfo(Log.ERROR, "Failed rescue level " + levelToString(level) + ": " + msg); } private static int mapRescueLevelToUserImpact(int rescueLevel) { private static int mapRescueLevelToUserImpact(int rescueLevel) { switch(rescueLevel) { switch(rescueLevel) { case LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS: case LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS: Loading