From 402cd201625d3bbce0e704087342d6c57d0557bc Mon Sep 17 00:00:00 2001 From: Jing Ji Date: Wed, 15 Sep 2021 14:47:47 -0700 Subject: [PATCH] Fix potential race condition due to missing lock Bug: 194991626 Test: atest ProcStatsValidationTests Test: atest ProcessStatsDumpsysTest Test: CtsIncidentHostTestCases:ProcStatsProtoTest Change-Id: I1dc7c03d031248fb945dc2cf9dd47ad590ec672c --- .../core/java/com/android/server/am/ActiveServices.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index baf5af53bc889..2b309434d1f27 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -5221,7 +5221,9 @@ public final class ActiveServices { sr.setProcess(null, null, 0, null); sr.isolatedProc = null; sr.executeNesting = 0; - sr.forceClearTracker(); + synchronized (mAm.mProcessStats.mLock) { + sr.forceClearTracker(); + } if (mDestroyingServices.remove(sr)) { if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "killServices remove destroying " + sr); } @@ -5371,7 +5373,9 @@ public final class ActiveServices { i--; ServiceRecord sr = mDestroyingServices.get(i); if (sr.app == app) { - sr.forceClearTracker(); + synchronized (mAm.mProcessStats.mLock) { + sr.forceClearTracker(); + } mDestroyingServices.remove(i); if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "killServices remove destroying " + sr); }