From acaed3d29e9f8a929415850b82a58498e8c11002 Mon Sep 17 00:00:00 2001 From: pengzhicai Date: Tue, 29 Nov 2016 19:01:44 +0800 Subject: Fix the deadlock problem https://code.google.com/p/android/issues/detail?id=229020 Change-Id: Ib08f62dd916d09e666e58fb583555170d1e51da6 Signed-off-by: pengzhicai --- .../com/android/server/backup/BackupManagerService.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java index e6f99c15ab66..6541252ccac1 100644 --- a/services/backup/java/com/android/server/backup/BackupManagerService.java +++ b/services/backup/java/com/android/server/backup/BackupManagerService.java @@ -2383,16 +2383,15 @@ public class BackupManagerService { } catch (InterruptedException e) { // just bail Slog.w(TAG, "Interrupted: " + e); - mActivityManager.clearPendingBackup(); - return null; + mConnecting = false; + mConnectedAgent = null; } } // if we timed out with no connect, abort and move on if (mConnecting == true) { Slog.w(TAG, "Timeout waiting for agent " + app); - mActivityManager.clearPendingBackup(); - return null; + mConnectedAgent = null; } if (DEBUG) Slog.i(TAG, "got agent " + mConnectedAgent); agent = mConnectedAgent; @@ -2401,6 +2400,13 @@ public class BackupManagerService { // can't happen - ActivityManager is local } } + if (agent == null) { + try { + mActivityManager.clearPendingBackup(); + } catch (RemoteException e) { + // can't happen - ActivityManager is local + } + } return agent; } -- cgit v1.2.3-59-g8ed1b