From 22242ab29a5be21c5248d0cb366de3d5fcb554e8 Mon Sep 17 00:00:00 2001 From: riddle_hsu Date: Fri, 12 Dec 2014 20:01:29 +0800 Subject: [PATCH] [ActivityManager] Fix process record leakage. Symptom: Remain dead process record in mLruProcesses. Root cause: When a process dies and needs to restart immediately. The process record will not be removed from mLruProcesses in handleAppDiedLocked (return kept=true). If the restarting process start timeout, the record in mLruProcesses will not be removed. Solution: Call removeLruProcessLocked in processStartTimedOutLocked. Change-Id: I1935ccc586016cb4e90dfdfac96cc88931553d5f --- .../core/java/com/android/server/am/ActivityManagerService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index e3f7fb3c91200..0b82b3cc8ce16 100755 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -6018,6 +6018,7 @@ public final class ActivityManagerService extends ActivityManagerNative // Take care of any services that are waiting for the process. mServices.processStartTimedOutLocked(app); app.kill("start timeout", true); + removeLruProcessLocked(app); if (mBackupTarget != null && mBackupTarget.app.pid == pid) { Slog.w(TAG, "Unattached app died before backup, skipping"); try {