diff options
| author | 2022-06-13 10:22:36 +0800 | |
|---|---|---|
| committer | 2022-06-16 06:53:10 +0000 | |
| commit | a2461a3faa1566fff7825a9404f628bfcd3f4a99 (patch) | |
| tree | 108cef124f1f589524f54b9772943a4d8998f2ac | |
| parent | 030c47cbfb8f2f46cd0a5a0e772b2a794cf586d8 (diff) | |
Recheck the condition before really killing
Since the kill is asynchronously scheduled in the Handler, logically,
before scheduling, the process may be operated by the user to the
foreground or raising to an important ADJ and then be killed abnormally.
Bug: 235565625
Change-Id: Ied40d3ad22caa4d6c89055fdf85affb905d44d23
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index fd109ff12ba6..291b0d725a3b 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -14349,6 +14349,10 @@ public class ActivityManagerService extends IActivityManager.Stub app.processName, app.toShortString(), cpuLimit, app)) { mHandler.post(() -> { synchronized (ActivityManagerService.this) { + if (app.getThread() == null + || app.mState.getSetProcState() < ActivityManager.PROCESS_STATE_HOME) { + return; + } app.killLocked("excessive cpu " + cpuTimeUsed + " during " + uptimeSince + " dur=" + checkDur + " limit=" + cpuLimit, ApplicationExitInfo.REASON_EXCESSIVE_RESOURCE_USAGE, @@ -14374,6 +14378,10 @@ public class ActivityManagerService extends IActivityManager.Stub app.processName, r.toString(), cpuLimit, app)) { mHandler.post(() -> { synchronized (ActivityManagerService.this) { + if (app.getThread() == null + || app.mState.getSetProcState() < ActivityManager.PROCESS_STATE_HOME) { + return; + } mPhantomProcessList.killPhantomProcessGroupLocked(app, r, ApplicationExitInfo.REASON_EXCESSIVE_RESOURCE_USAGE, ApplicationExitInfo.SUBREASON_EXCESSIVE_CPU, |