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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user