From 7326979bcdf0bfd85c46a0186b4eb025e8e695a5 Mon Sep 17 00:00:00 2001 From: Louis Chang Date: Tue, 9 Jun 2020 16:02:42 +0800 Subject: [PATCH] Prevent NPE while finishing activity Activity was finished and removed from history before entering global lock and caused NPE when accessing its task. Bug: 158299941 Test: existing tests Change-Id: Iac49bb631653137785edff48c46e2263adbbda64 --- .../com/android/server/wm/ActivityTaskManagerService.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index 5f591b54b067c..88b1ac31b26b3 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -1685,6 +1685,11 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { final NeededUriGrants resultGrants = collectGrants(resultData, r.resultTo); synchronized (mGlobalLock) { + // Sanity check in case activity was removed before entering global lock. + if (!r.isInHistory()) { + return true; + } + // Keep track of the root activity of the task before we finish it final Task tr = r.getTask(); final ActivityRecord rootR = tr.getRootActivity();