History log of /frameworks/base/services/core/java/com/android/server/RescueParty.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
8231146d4ede7f0c0767da2bfdea58745611417c 03-Apr-2017 Jeff Sharkey <jsharkey@android.com> Lower-level user enumeration; fix disabled bug.

UserManager may not have been started yet, so discover users by
looking at filesystem.

Fix disabled bug where default should be "false."

Test: builds, boots
Bug: 36794413
Change-Id: If91fd27b955175072228a93aab4b8ac3b27df0bf
/frameworks/base/services/core/java/com/android/server/RescueParty.java
bc9caa1a2a38e23f7a6b61bcda81b5759e45ec66 12-Mar-2017 Jeff Sharkey <jsharkey@android.com> Switch RescueParty to PMS.logCriticalInfo().

When RescueParty is triggered, we could end up in recovery before a
bugreport can be taken. To help understand why RescueParty was
triggered after the fact, this change switches a handful of critical
log messages to use PMS.logCriticalInfo().

These logs then go into our persistent log on disk, which is also
included in all future bugreports.

Bug: 35805331, 36033178
Test: builds, boots, forced crashing recorded in persistent log
Change-Id: Ic71206b25c4b0b703e464ff1d07c5e0b31549257
/frameworks/base/services/core/java/com/android/server/RescueParty.java
1bec44836ed6b29e128849b7be34dc7b2a214e76 23-Feb-2017 Jeff Sharkey <jsharkey@android.com> Take another pass at detecting USB connections.

For some odd reason, devices with ADB connections in test harnesses
are reporting that they're connected over an AC charger instead of
USB charger.

So switch to reading a sysfs file to detect an active USB connection.

Test: builds, boots, rescue disabled when USB connection present
Bug: 34872406
Change-Id: I4c2cb9ed7e51b9692ce81eb0ef4945dae0036212
/frameworks/base/services/core/java/com/android/server/RescueParty.java
d9574c7bbf23ca282b93b1297e936a3d2e98e78a 20-Feb-2017 Jeff Sharkey <jsharkey@android.com> Suppress RescueParty when active USB connection.

When there is a very early system server runtime restart, we may not
yet have a published BatteryManagerInternal, so we need to go directly
to the "batteryproperties" native service to detect the USB state.

Test: builds, rescue is suppressed when USB is connected
Bug: 34872406
Change-Id: I949984cb95495c77de85ac322075177cff07b8b6
/frameworks/base/services/core/java/com/android/server/RescueParty.java
5fb405ba60dc6daca54d507909b68b5ad8144920 27-Jan-2017 Svetoslav Ganov <svetoslavganov@google.com> Ensure settings provider joins the rescue party

The settings provider has logic to incrementally reset state
in an effort to recover from pushing a bad value putting the
system in a bad state. The settings provider was not force
persisting its state after a reset so after the reboot we
lost the reset changes. Also while resetting we were also
resetting the package name leading to a promotion of the reset
value to being set by the system. Updated the tests and while at
this added logic to synchronously persist critical settings
such as device provisioned.

Test: All tests pass. Manually tested end-to-end rescue party

bug:34677175

Change-Id: Ib240072df2fa549dae39c301008adf48cdf1573a
/frameworks/base/services/core/java/com/android/server/RescueParty.java
cdee83a6147bf1601424d5451c30f0dfb8d0e2a6 26-Jan-2017 Jeff Sharkey <jsharkey@android.com> Disable RescueParty in debug/lab environments.

We need to strike a balance between rescuing devices of real users
in the field, while also not interfering with debugging or testing
use-cases.

This change uses "charging via USB" as a signal that the device is
under active development, or is in a lab environment. We could try
checking for an adb connection, but UsbDebuggingManager isn't
started until much later in the boot, so BatteryManager is our best
chance of detecting this case.

Note that we continue to always recover "user" builds, and we never
recover "eng" builds.

Test: builds, boots, skips when plugged in over USB
Bug: 34722552
Change-Id: Ib095482a2ed84e8c5dfb3c71d5f9b88457c2b5e6
/frameworks/base/services/core/java/com/android/server/RescueParty.java
8773a8d0be66aca6cef6706d0ae9bd72054d72ba 25-Jan-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Make SettingsProvider reset no-op for now."
d67ab923fb05201b0e7068a0a9fad164541da609 24-Jan-2017 Jeff Sharkey <jsharkey@android.com> Make SettingsProvider reset no-op for now.

Something is funky with how settings are being reset, so disable it
for now. We still eventually offer to reboot and wipe data.

Test: builds, boots
Bug: 34677175
Change-Id: Ied943a04d2a4bab8e5c77e622c56ebf6d4181393
/frameworks/base/services/core/java/com/android/server/RescueParty.java
9f1fc2d78743ce2d4de546c80d4f93c2ffcc8804 24-Jan-2017 Jeff Sharkey <jsharkey@android.com> Disable RescueParty on -eng builds, or with flag.

For development devices, RescueParty can be a little too helpful, so
offer a way to disable it.

Test: builds, boots
Bug: 34669556
Change-Id: I401e8e7a99bdde6c0fe09880f0190384b4b0a3de
/frameworks/base/services/core/java/com/android/server/RescueParty.java
fe6f85cac9e823fd33a134f7129fdf7310703293 20-Jan-2017 Jeff Sharkey <jsharkey@android.com> 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: 24872457, 30951331
Change-Id: I6cdd37682973fe18de0f08521e88f70ee7d7728b
/frameworks/base/services/core/java/com/android/server/RescueParty.java