Merge "Fix NPE caused by orphaned child sessions"
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index 7c8515b..4767d3a 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -1461,8 +1461,9 @@
private TreeMap<PackageInstallerSession, TreeSet<PackageInstallerSession>> mSessionMap;
private final Comparator<PackageInstallerSession> mSessionCreationComparator =
- Comparator.comparingLong((PackageInstallerSession sess) -> sess.createdMillis)
- .thenComparingInt(sess -> sess.sessionId);
+ Comparator.comparingLong(
+ (PackageInstallerSession sess) -> sess != null ? sess.createdMillis : -1)
+ .thenComparingInt(sess -> sess != null ? sess.sessionId : -1);
ParentChildSessionMap() {
mSessionMap = new TreeMap<>(mSessionCreationComparator);
@@ -1500,10 +1501,12 @@
for (Map.Entry<PackageInstallerSession, TreeSet<PackageInstallerSession>> entry
: mSessionMap.entrySet()) {
PackageInstallerSession parentSession = entry.getKey();
- pw.print(tag + " ");
- parentSession.dump(pw);
- pw.println();
- pw.increaseIndent();
+ if (parentSession != null) {
+ pw.print(tag + " ");
+ parentSession.dump(pw);
+ pw.println();
+ pw.increaseIndent();
+ }
for (PackageInstallerSession childSession : entry.getValue()) {
pw.print(tag + " Child ");