DO NOT MERGE: Fix deadlock in AcitivityManagerService. am: b59e73613b am: 2f44f906a6
am: f4844b3416
Change-Id: Ic9c96ac3d030ebb0ac53a48686b541a0182795cb
This commit is contained in:
@@ -3429,16 +3429,19 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
app.killed = false;
|
||||
app.killedByAm = false;
|
||||
checkTime(startTime, "startProcess: starting to update pids map");
|
||||
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);
|
||||
if (isActivityProcess) {
|
||||
Message msg = mHandler.obtainMessage(PROC_START_TIMEOUT_MSG);
|
||||
|
||||
Reference in New Issue
Block a user