multiuser: postpone user cleanup to systemready

User cleanup was too early and causing exceptions during boot.

Bug: 20826665
Change-Id: Idace66d41cefaff1d80f490c161f8868e91d36d9
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index e79a2061..e6f5e3d 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -234,6 +234,14 @@
                 mUserListFile = new File(mUsersDir, USER_LIST_FILENAME);
                 initDefaultGuestRestrictions();
                 readUserListLocked();
+                sInstance = this;
+            }
+        }
+    }
+
+    void systemReady() {
+        synchronized (mInstallLock) {
+            synchronized (mPackagesLock) {
                 // Prune out any partially created/partially removed users.
                 ArrayList<UserInfo> partials = new ArrayList<UserInfo>();
                 for (int i = 0; i < mUsers.size(); i++) {
@@ -248,12 +256,8 @@
                             + " (name=" + ui.name + ")");
                     removeUserStateLocked(ui.id);
                 }
-                sInstance = this;
             }
         }
-    }
-
-    void systemReady() {
         userForeground(UserHandle.USER_OWNER);
         mAppOpsService = IAppOpsService.Stub.asInterface(
                 ServiceManager.getService(Context.APP_OPS_SERVICE));