Fix issue #22487155: Device unresponsive (deadlock in system_server)

Using my magic potion, Deadlock-B-Gone!

Change-Id: If5c0a2b18134dc95444f3782ab5aa475414b5839
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 37aa408..1582037 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -10801,6 +10801,8 @@
         }
 
         // We are now ready to launch the assist activity.
+        IResultReceiver sendReceiver = null;
+        Bundle sendBundle = null;
         synchronized (this) {
             buildAssistBundleLocked(pae, extras);
             boolean exists = mPendingAssistExtras.remove(pae);
@@ -10809,19 +10811,21 @@
                 // Timed out.
                 return;
             }
-            if (pae.receiver != null) {
+            if ((sendReceiver=pae.receiver) != null) {
                 // Caller wants result sent back to them.
-                Bundle topBundle = new Bundle();
-                topBundle.putBundle("data", pae.extras);
-                topBundle.putParcelable("structure", pae.structure);
-                topBundle.putParcelable("content", pae.content);
-                try {
-                    pae.receiver.send(0, topBundle);
-                } catch (RemoteException e) {
-                }
-                return;
+                sendBundle = new Bundle();
+                sendBundle.putBundle("data", pae.extras);
+                sendBundle.putParcelable("structure", pae.structure);
+                sendBundle.putParcelable("content", pae.content);
             }
         }
+        if (sendReceiver != null) {
+            try {
+                sendReceiver.send(0, sendBundle);
+            } catch (RemoteException e) {
+            }
+            return;
+        }
 
         long ident = Binder.clearCallingIdentity();
         try {