DO NOT MERGE: Fix deadlock in AcitivityManagerService.
Don't hold mPidsSelfLocked lock when calling cleanUpApplicationRecordLocked. Bug: 31463143 Change-Id: I1fddd06f5e35b67fea041741f5746c57a39208ba
This commit is contained in:
@ -2818,16 +2818,19 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
app.setPid(startResult.pid);
|
||||
app.usingWrapper = startResult.usingWrapper;
|
||||
app.removed = false;
|
||||
ProcessRecord oldApp;
|
||||
synchronized (mPidsSelfLocked) {
|
||||
oldApp = mPidsSelfLocked.get(startResult.pid);
|
||||
}
|
||||
// If there is already an app occupying that pid that hasn't been cleaned up
|
||||
if (oldApp != null && !app.isolated) {
|
||||
// Clean up anything relating to this pid first
|
||||
Slog.w(TAG, "Reusing pid " + startResult.pid
|
||||
+ " while app is still mapped to it");
|
||||
cleanUpApplicationRecordLocked(oldApp, false, false, -1,
|
||||
true /*replacingPid*/);
|
||||
}
|
||||
synchronized (mPidsSelfLocked) {
|
||||
ProcessRecord oldApp;
|
||||
// If there is already an app occupying that pid that hasn't been cleaned up
|
||||
if ((oldApp = mPidsSelfLocked.get(startResult.pid)) != null && !app.isolated) {
|
||||
// Clean up anything relating to this pid first
|
||||
Slog.w(TAG, "Reusing pid " + startResult.pid
|
||||
+ " while app is still mapped to it");
|
||||
cleanUpApplicationRecordLocked(oldApp, false, false, -1,
|
||||
true /*replacingPid*/);
|
||||
}
|
||||
this.mPidsSelfLocked.put(startResult.pid, app);
|
||||
Message msg = mHandler.obtainMessage(PROC_START_TIMEOUT_MSG);
|
||||
msg.obj = app;
|
||||
|
Reference in New Issue
Block a user