diff --git a/services/core/java/com/android/server/am/AppExitInfoTracker.java b/services/core/java/com/android/server/am/AppExitInfoTracker.java index abb8243955788..979a9eed14aab 100644 --- a/services/core/java/com/android/server/am/AppExitInfoTracker.java +++ b/services/core/java/com/android/server/am/AppExitInfoTracker.java @@ -430,7 +430,13 @@ public final class AppExitInfoTracker { final ApplicationExitInfo info = new ApplicationExitInfo(raw); final String[] packages = raw.getPackageList(); - final int uid = raw.getPackageUid(); + int uid = raw.getRealUid(); + if (UserHandle.isIsolated(uid)) { + Integer k = mIsolatedUidRecords.getUidByIsolatedUid(uid); + if (k != null) { + uid = k; + } + } for (int i = 0; i < packages.length; i++) { addExitInfoInnerLocked(packages[i], uid, info); } @@ -833,14 +839,14 @@ public final class AppExitInfoTracker { pw.println(prefix + "package: " + packageName); int size = array.size(); for (int i = 0; i < size; i++) { - pw.println(prefix + " Historical Process Exit for userId=" + array.keyAt(i)); + pw.println(prefix + " Historical Process Exit for uid=" + array.keyAt(i)); array.valueAt(i).dumpLocked(pw, prefix + " ", sdf); } } @GuardedBy("mLock") - private void addExitInfoInnerLocked(String packageName, int userId, ApplicationExitInfo info) { - AppExitInfoContainer container = mData.get(packageName, userId); + private void addExitInfoInnerLocked(String packageName, int uid, ApplicationExitInfo info) { + AppExitInfoContainer container = mData.get(packageName, uid); if (container == null) { container = new AppExitInfoContainer(mAppExitInfoHistoryListSize); if (UserHandle.isIsolated(info.getRealUid())) { @@ -851,7 +857,7 @@ public final class AppExitInfoTracker { } else { container.mUid = info.getRealUid(); } - mData.put(packageName, userId, container); + mData.put(packageName, uid, container); } container.addExitInfoLocked(info); } @@ -997,7 +1003,7 @@ public final class AppExitInfoTracker { info.setPackageList(app.getPackageList()); info.setReason(ApplicationExitInfo.REASON_UNKNOWN); info.setStatus(0); - info.setImportance(procStateToImportance(app.mState.getSetProcState())); + info.setImportance(procStateToImportance(app.mState.getReportedProcState())); info.setPss(app.mProfile.getLastPss()); info.setRss(app.mProfile.getLastRss()); info.setTimestamp(timestamp); diff --git a/services/core/java/com/android/server/am/ProcessStateRecord.java b/services/core/java/com/android/server/am/ProcessStateRecord.java index 7520d88fcd164..dc6bcd8ab9dea 100644 --- a/services/core/java/com/android/server/am/ProcessStateRecord.java +++ b/services/core/java/com/android/server/am/ProcessStateRecord.java @@ -1086,7 +1086,7 @@ final class ProcessStateRecord { mCurRawAdj = mSetRawAdj = mCurAdj = mSetAdj = mVerifiedAdj = ProcessList.INVALID_ADJ; mCurCapability = mSetCapability = PROCESS_CAPABILITY_NONE; mCurSchedGroup = mSetSchedGroup = ProcessList.SCHED_GROUP_BACKGROUND; - mCurProcState = mRepProcState = mCurRawProcState = mSetProcState = mAllowStartFgsState = + mCurProcState = mCurRawProcState = mSetProcState = mAllowStartFgsState = PROCESS_STATE_NONEXISTENT; } diff --git a/services/tests/mockingservicestests/src/com/android/server/am/ApplicationExitInfoTest.java b/services/tests/mockingservicestests/src/com/android/server/am/ApplicationExitInfoTest.java index 803a0c10fe1c2..26b5218d2ab4f 100644 --- a/services/tests/mockingservicestests/src/com/android/server/am/ApplicationExitInfoTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/am/ApplicationExitInfoTest.java @@ -1003,7 +1003,7 @@ public class ApplicationExitInfoTest { dummyPackageName, dummyClassName), "", definingUid)); } app.mServices.setConnectionGroup(connectionGroup); - app.mState.setSetProcState(procState); + app.mState.setReportedProcState(procState); app.mProfile.setLastMemInfo(spy(new Debug.MemoryInfo())); app.mProfile.setLastPss(pss); app.mProfile.setLastRss(rss);