summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/ApplicationExitInfo.java30
-rw-r--r--services/core/java/com/android/server/am/CachedAppOptimizer.java8
2 files changed, 34 insertions, 4 deletions
diff --git a/core/java/android/app/ApplicationExitInfo.java b/core/java/android/app/ApplicationExitInfo.java
index 4f94c9b5045b..d54452fb3004 100644
--- a/core/java/android/app/ApplicationExitInfo.java
+++ b/core/java/android/app/ApplicationExitInfo.java
@@ -334,6 +334,26 @@ public final class ApplicationExitInfo implements Parcelable {
*/
public static final int SUBREASON_CACHED_IDLE_FORCED_APP_STANDBY = 18;
+ /**
+ * The process was killed because it fails to freeze/unfreeze binder
+ * or query binder frozen info while being frozen.
+ * this would be set only when the reason is {@link #REASON_FREEZER}.
+ *
+ * For internal use only.
+ * @hide
+ */
+ public static final int SUBREASON_FREEZER_BINDER_IOCTL = 19;
+
+ /**
+ * The process was killed because it receives sync binder transactions
+ * while being frozen.
+ * this would be set only when the reason is {@link #REASON_FREEZER}.
+ *
+ * For internal use only.
+ * @hide
+ */
+ public static final int SUBREASON_FREEZER_BINDER_TRANSACTION = 20;
+
// If there is any OEM code which involves additional app kill reasons, it should
// be categorized in {@link #REASON_OTHER}, with subreason code starting from 1000.
@@ -491,6 +511,8 @@ public final class ApplicationExitInfo implements Parcelable {
SUBREASON_IMPERCEPTIBLE,
SUBREASON_REMOVE_LRU,
SUBREASON_ISOLATED_NOT_NEEDED,
+ SUBREASON_FREEZER_BINDER_IOCTL,
+ SUBREASON_FREEZER_BINDER_TRANSACTION,
})
@Retention(RetentionPolicy.SOURCE)
public @interface SubReason {}
@@ -1032,6 +1054,8 @@ public final class ApplicationExitInfo implements Parcelable {
pw.println(prefix + " user=" + UserHandle.getUserId(mPackageUid));
pw.println(prefix + " process=" + mProcessName);
pw.println(prefix + " reason=" + mReason + " (" + reasonCodeToString(mReason) + ")");
+ pw.println(prefix + " subreason=" + mSubReason + " (" + subreasonToString(mSubReason)
+ + ")");
pw.println(prefix + " status=" + mStatus);
pw.println(prefix + " importance=" + mImportance);
pw.print(prefix + " pss="); DebugUtils.printSizeValue(pw, mPss << 10); pw.println();
@@ -1055,6 +1079,8 @@ public final class ApplicationExitInfo implements Parcelable {
sb.append(" process=").append(mProcessName);
sb.append(" reason=").append(mReason).append(" (")
.append(reasonCodeToString(mReason)).append(")");
+ sb.append(" subreason=").append(mSubReason).append(" (")
+ .append(subreasonToString(mSubReason)).append(")");
sb.append(" status=").append(mStatus);
sb.append(" importance=").append(mImportance);
sb.append(" pss="); DebugUtils.sizeValueToString(mPss << 10, sb);
@@ -1137,6 +1163,10 @@ public final class ApplicationExitInfo implements Parcelable {
return "REMOVE LRU";
case SUBREASON_ISOLATED_NOT_NEEDED:
return "ISOLATED NOT NEEDED";
+ case SUBREASON_FREEZER_BINDER_IOCTL:
+ return "FREEZER BINDER IOCTL";
+ case SUBREASON_FREEZER_BINDER_TRANSACTION:
+ return "FREEZER BINDER TRANSACTION";
default:
return "UNKNOWN";
}
diff --git a/services/core/java/com/android/server/am/CachedAppOptimizer.java b/services/core/java/com/android/server/am/CachedAppOptimizer.java
index 1ddd899505b0..966e746b3c73 100644
--- a/services/core/java/com/android/server/am/CachedAppOptimizer.java
+++ b/services/core/java/com/android/server/am/CachedAppOptimizer.java
@@ -927,7 +927,7 @@ public final class CachedAppOptimizer {
+ " received sync transactions while frozen, killing");
app.killLocked("Sync transaction while in frozen state",
ApplicationExitInfo.REASON_OTHER,
- ApplicationExitInfo.SUBREASON_INVALID_STATE, true);
+ ApplicationExitInfo.SUBREASON_FREEZER_BINDER_TRANSACTION, true);
processKilled = true;
}
@@ -940,7 +940,7 @@ public final class CachedAppOptimizer {
+ app.processName + ". Killing it. Exception: " + e);
app.killLocked("Unable to query binder frozen stats",
ApplicationExitInfo.REASON_OTHER,
- ApplicationExitInfo.SUBREASON_INVALID_STATE, true);
+ ApplicationExitInfo.SUBREASON_FREEZER_BINDER_IOCTL, true);
processKilled = true;
}
@@ -957,7 +957,7 @@ public final class CachedAppOptimizer {
+ ". Killing it");
app.killLocked("Unable to unfreeze",
ApplicationExitInfo.REASON_OTHER,
- ApplicationExitInfo.SUBREASON_INVALID_STATE, true);
+ ApplicationExitInfo.SUBREASON_FREEZER_BINDER_IOCTL, true);
return;
}
@@ -1342,7 +1342,7 @@ public final class CachedAppOptimizer {
synchronized (mAm) {
proc.killLocked("Unable to freeze binder interface",
ApplicationExitInfo.REASON_OTHER,
- ApplicationExitInfo.SUBREASON_INVALID_STATE, true);
+ ApplicationExitInfo.SUBREASON_FREEZER_BINDER_IOCTL, true);
}
});
}