From a63d57ab65eea9c74c12fde7fd970fd6f67579ae Mon Sep 17 00:00:00 2001 From: Todd Kennedy Date: Tue, 17 Apr 2018 10:40:58 -0700 Subject: [PATCH] Load fallback categories earlier At the end of the package manager constructor, we are prepare the data directories for all installed applications. This creates ApplicationInfo objects which needs to load categories from the fallback categories provider. If we're populating the fallback categories during this time, there's a subtle timing issue where we may return a 'null' category instead of an Integer. Change-Id: I974a39029d6c15d3986571e610eb0cd106fdc05c Fixes: 78128442 Test: Manual. System boots and no crash --- .../java/com/android/server/pm/PackageManagerService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 26d4037b46561..cfe7e4b139980 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -2499,6 +2499,10 @@ public class PackageManagerService extends IPackageManager.Stub SELinuxMMAC.readInstallPolicy(); + Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "loadFallbacks"); + FallbackCategoryProvider.loadFallbacks(); + Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); + Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "read user settings"); mFirstBoot = !mSettings.readLPw(sUserManager.getUsers(false)); Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); @@ -3239,10 +3243,6 @@ public class PackageManagerService extends IPackageManager.Stub Runtime.getRuntime().gc(); Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); - Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "loadFallbacks"); - FallbackCategoryProvider.loadFallbacks(); - Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); - // The initial scanning above does many calls into installd while // holding the mPackages lock, but we're mostly interested in yelling // once we have a booted system.