summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Louis Chang <louischang@google.com> 2020-06-09 16:02:42 +0800
committer Louis Chang <louischang@google.com> 2020-06-09 16:02:42 +0800
commit7326979bcdf0bfd85c46a0186b4eb025e8e695a5 (patch)
treeb27223ea76c43fbfe940644487d22acd2f04ff4c
parentf04e437777cf372d8531ac905729a317ae536e98 (diff)
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
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskManagerService.java5
1 files changed, 5 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 5f591b54b067..88b1ac31b26b 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();