From 236b2b5d28f430a79d3155115b57ea8d80ad27ea Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Tue, 18 Aug 2015 14:32:14 -0700 Subject: [PATCH] Fix crashes when removing work profile This isn't specific to work profile. When multiple user deletions happen in sequence, a race causes a dying user to lose permissions prematurely. This fix delays removal of user state until the user is completely cleaned up and all the processes have been killed. Bug: 23178833 Change-Id: I1636bc2022416359a25f19a3f65d113c05289cd3 --- .../core/java/com/android/server/pm/UserManagerService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index 264170cf1f215..060752568f2e0 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -403,9 +403,10 @@ public class UserManagerService extends IUserManager.Stub { return ui; } + /** Called by PackageManagerService */ public boolean exists(int userId) { synchronized (mPackagesLock) { - return ArrayUtils.contains(mUserIds, userId); + return mUsers.get(userId) != null; } }