DO NOT MERGE: Fix deadlock in AcitivityManagerService.

am: e8340a9ed5

Change-Id: I52277ddde0b68b3be1764f325d04601e48a1cb1e
This commit is contained in:
Sudheer Shanka
2016-09-19 20:47:35 +00:00
committed by android-build-merger

View File

@@ -3067,16 +3067,19 @@ public final class ActivityManagerService extends ActivityManagerNative
app.killed = false; app.killed = false;
app.killedByAm = false; app.killedByAm = false;
checkTime(startTime, "startProcess: starting to update pids map"); 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) { 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); this.mPidsSelfLocked.put(startResult.pid, app);
if (isActivityProcess) { if (isActivityProcess) {
Message msg = mHandler.obtainMessage(PROC_START_TIMEOUT_MSG); Message msg = mHandler.obtainMessage(PROC_START_TIMEOUT_MSG);