diff options
| author | 2022-03-31 10:06:06 +0800 | |
|---|---|---|
| committer | 2022-04-05 19:50:59 +0000 | |
| commit | f562aadd77298ec019dc410e395a512bbb57c720 (patch) | |
| tree | 98b472e35d3e58a71c9eda52af3efbcc0bc6296f | |
| parent | 6923c0d102d62a4fd416d56e607c925a4f551f7d (diff) | |
Fix NPE
NPE happens when there is an orphaned session which we've
tried to prevent in all cases.
Log an error message if this situation happens.
Bug: 227342978
Test: atest CtsRootPackageInstallerHostTestCases
Change-Id: Ia21323926bd9db1a6f05461904deb45b4c3dd0bc
(cherry picked from commit 07e31dfb1efabc8110d64819f26a06e12a35e020)
Merged-In: Ia21323926bd9db1a6f05461904deb45b4c3dd0bc
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageInstallerService.java | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java index 7c1ac2737469..3f6ebecdcf0f 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -332,7 +332,10 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements // Their staging dirs will be removed too PackageInstallerSession root = !session.hasParentSessionId() ? session : mSessions.get(session.getParentSessionId()); - if (!root.isDestroyed() && + if (root == null) { + Slog.e(TAG, "freeStageDirs: found an orphaned session: " + + session.sessionId + " parent=" + session.getParentSessionId()); + } else if (!root.isDestroyed() && (!root.isStaged() || (root.isStaged() && root.isStagedSessionReady()))) { root.abandon(); |