OSDN Git Service

Introduce RescueParty.
authorJeff Sharkey <jsharkey@android.com>
Fri, 20 Jan 2017 17:42:57 +0000 (10:42 -0700)
committerJeff Sharkey <jsharkey@android.com>
Sat, 21 Jan 2017 00:36:38 +0000 (17:36 -0700)
commitfe6f85cac9e823fd33a134f7129fdf7310703293
tree97518a64d3759b88becf3c326ac017f359cc1a6e
parent063c454b07f7d4079731c60cff1ba4bf97d1f7ef
Introduce RescueParty.

When a device gets stuck in a crash loop, it's pretty much unusable
and impossible for users to recover from.

To help rescue devices from this state, this change introduces a new
feature that watches for runtime restart loops and persistent app
crash loops, and escalates through a series of increasingly
aggressive rescue operations.  Currently these rescue levels walk
through clearing any experiments in SettingsProvider before finally
rebooting and prompting the user to wipe data.

Crash loops are detected based on a number of events in a specific
window of time.  App stats can be stored in memory, but boot stats
need to be stored in system properties to be more robust.

Start up RecoveryService much earlier during the boot so we can
reboot into recovery when needed.

Add properties tha push system_server or SystemUI into a crash loops
for testing purposes.

Test: builds, boots, forced crashing walks through modes
Bug: 2487245730951331
Change-Id: I6cdd37682973fe18de0f08521e88f70ee7d7728b
core/java/android/app/ContextImpl.java
core/java/android/os/RecoverySystem.java
packages/SystemUI/src/com/android/systemui/SystemUIService.java
services/core/java/com/android/server/EventLogTags.logtags
services/core/java/com/android/server/RescueParty.java [new file with mode: 0644]
services/core/java/com/android/server/am/ActivityManagerService.java
services/core/java/com/android/server/am/AppErrors.java
services/core/java/com/android/server/power/PowerManagerService.java
services/java/com/android/server/SystemServer.java