From 9193fa1c9353f4bb45f7379dc0ff700e226fdbd4 Mon Sep 17 00:00:00 2001 From: qinyige1 Date: Fri, 21 Jan 2022 15:09:28 +0800 Subject: [PATCH] [AMS] Fix race condition in ProcessList. ProcessList.noteAppKill should be called with lock but AppErrors.crashApplicationInner doesn't. So fix it. Bug: 215575163 Test: Manual Change-Id: I594256a8989f6bf79ac0b12ff5069cc895872b22 --- .../core/java/com/android/server/am/AppErrors.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/am/AppErrors.java b/services/core/java/com/android/server/am/AppErrors.java index bcb42bb384952..e6966ce428f66 100644 --- a/services/core/java/com/android/server/am/AppErrors.java +++ b/services/core/java/com/android/server/am/AppErrors.java @@ -575,12 +575,14 @@ class AppErrors { mPackageWatchdog.onPackageFailure(r.getPackageListWithVersionCode(), PackageWatchdog.FAILURE_REASON_APP_CRASH); - mService.mProcessList.noteAppKill(r, (crashInfo != null - && "Native crash".equals(crashInfo.exceptionClassName)) - ? ApplicationExitInfo.REASON_CRASH_NATIVE - : ApplicationExitInfo.REASON_CRASH, - ApplicationExitInfo.SUBREASON_UNKNOWN, - "crash"); + synchronized (mService) { + mService.mProcessList.noteAppKill(r, (crashInfo != null + && "Native crash".equals(crashInfo.exceptionClassName)) + ? ApplicationExitInfo.REASON_CRASH_NATIVE + : ApplicationExitInfo.REASON_CRASH, + ApplicationExitInfo.SUBREASON_UNKNOWN, + "crash"); + } } final int relaunchReason = r != null