summaryrefslogtreecommitdiff
path: root/core/java/android/os/BinderProxy.java
diff options
context:
space:
mode:
authorMartijn Coenen <maco@google.com>2020-04-01 16:37:51 +0200
committerMartijn Coenen <maco@google.com>2020-04-01 16:37:51 +0200
commit956c1333a4b4113ee017207ff3dd36a011681262 (patch)
tree79ce903a02ebd60f97ef8b96c91ae57536c50015 /core/java/android/os/BinderProxy.java
parent7f212788d1fb42f4ef970f169a672e519abae351 (diff)
Disable the freezer while we're collecting binder interface descriptors.
These are synchronous calls out from system_server to many processes; make sure we don't get hung up on them. Bug: 152294322 Test: N/A Change-Id: Ie6f9da6c7f5df346cc28e0968f70a898bcd52adf
Diffstat (limited to 'core/java/android/os/BinderProxy.java')
-rw-r--r--core/java/android/os/BinderProxy.java6
1 files changed, 6 insertions, 0 deletions
diff --git a/core/java/android/os/BinderProxy.java b/core/java/android/os/BinderProxy.java
index 20e5f243163f..683993f762c0 100644
--- a/core/java/android/os/BinderProxy.java
+++ b/core/java/android/os/BinderProxy.java
@@ -251,6 +251,11 @@ public final class BinderProxy implements IBinder {
}
}
}
+ // For gathering this debug output, we're making synchronous binder calls
+ // out of system_server to all processes hosting binder objects it holds a reference to;
+ // since some of those processes might be frozen, we don't want to block here
+ // forever. Disable the freezer.
+ Process.enableFreezer(false);
for (WeakReference<BinderProxy> weakRef : proxiesToQuery) {
BinderProxy bp = weakRef.get();
String key;
@@ -273,6 +278,7 @@ public final class BinderProxy implements IBinder {
counts.put(key, i + 1);
}
}
+ Process.enableFreezer(true);
Map.Entry<String, Integer>[] sorted = counts.entrySet().toArray(
new Map.Entry[counts.size()]);