Merge "Don't dump binder proxies with the lock held." into rvc-qpr-dev am: 2ba3c1cfba
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12685845 Change-Id: Ibafe080ad19dfd50ca0e83dc52fdaa44f6a745f3
This commit is contained in:
@@ -10530,7 +10530,7 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
|
||||
private void dumpEverything(FileDescriptor fd, PrintWriter pw, String[] args, int opti,
|
||||
boolean dumpAll, String dumpPackage, boolean dumpClient, boolean dumpNormalPriority,
|
||||
int dumpAppId) {
|
||||
int dumpAppId, boolean dumpProxies) {
|
||||
|
||||
ActiveServices.ServiceDumper sdumper;
|
||||
|
||||
@@ -10589,7 +10589,7 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
}
|
||||
sdumper.dumpWithClient();
|
||||
}
|
||||
if (dumpPackage == null) {
|
||||
if (dumpPackage == null && dumpProxies) {
|
||||
// Intentionally dropping the lock for this, because dumpBinderProxies() will make many
|
||||
// outgoing binder calls to retrieve interface descriptors; while that is system code,
|
||||
// there is nothing preventing an app from overriding this implementation by talking to
|
||||
@@ -10998,13 +10998,14 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
// dumpEverything() will take the lock when needed, and momentarily drop
|
||||
// it for dumping client state.
|
||||
dumpEverything(fd, pw, args, opti, dumpAll, dumpPackage, dumpClient,
|
||||
dumpNormalPriority, dumpAppId);
|
||||
dumpNormalPriority, dumpAppId, true /* dumpProxies */);
|
||||
} else {
|
||||
// Take the lock here, so we get a consistent state for the entire dump;
|
||||
// dumpEverything() will take the lock as well, but that is fine.
|
||||
// dumpEverything() will take the lock as well, which is fine for everything
|
||||
// except dumping proxies, which can take a long time; exclude them.
|
||||
synchronized(this) {
|
||||
dumpEverything(fd, pw, args, opti, dumpAll, dumpPackage, dumpClient,
|
||||
dumpNormalPriority, dumpAppId);
|
||||
dumpNormalPriority, dumpAppId, false /* dumpProxies */);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user