Merge "Do not reuse the same ProcessRecord if it's not fully gone yet" into udc-dev am: 32db01a1a0

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23638571

Change-Id: I519da06d1b4eb10fb4b5f88b4ec8b425a16d3ce2
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Jing Ji
2023-06-09 23:48:15 +00:00
committed by Automerger Merge Worker

View File

@@ -2572,9 +2572,14 @@ public final class ProcessList {
// and did the cleanup before the actual death notification. Check the dying processes.
predecessor = mDyingProcesses.get(processName, info.uid);
if (predecessor != null) {
if (app != null) {
// The process record could have existed but its pid is set to 0. In this case,
// the 'app' and 'predecessor' could end up pointing to the same instance;
// so make sure we check this case here.
if (app != null && app != predecessor) {
app.mPredecessor = predecessor;
predecessor.mSuccessor = app;
} else {
app = null;
}
Slog.w(TAG_PROCESSES, predecessor.toString() + " is attached to a previous process "
+ predecessor.getDyingPid());
@@ -5195,6 +5200,8 @@ public final class ProcessList {
mDyingProcesses.remove(app.processName, app.uid);
app.setDyingPid(0);
handlePrecedingAppDiedLocked(app);
// Remove from the LRU list if it's still there.
removeLruProcessLocked(app);
return true;
}
return false;