diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index a02f83f992a23..800e55bacf435 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -2528,7 +2528,12 @@ public class UserManagerService extends IUserManager.Stub { if (name.equals(TAG_USER)) { String id = parser.getAttributeValue(null, ATTR_ID); - UserData userData = readUserLP(Integer.parseInt(id)); + int userId = Integer.parseInt(id); + UserData userData = readUserLP(userId); + if (userData == null && userId == UserHandle.USER_SYSTEM) { + fallbackToSingleUserLP(); + return; + } if (userData != null) { synchronized (mUsersLock) { @@ -2994,10 +2999,8 @@ public class UserManagerService extends IUserManager.Stub { new AtomicFile(new File(mUsersDir, Integer.toString(id) + XML_SUFFIX)); fis = userFile.openRead(); return readUserLP(id, fis); - } catch (IOException ioe) { - Slog.e(LOG_TAG, "Error reading user list"); - } catch (XmlPullParserException pe) { - Slog.e(LOG_TAG, "Error reading user list"); + } catch (IOException | XmlPullParserException e) { + Slog.e(LOG_TAG, "Error reading user " + id + ": " + e); } finally { IoUtils.closeQuietly(fis); }