Merge "Dump proxy debug info when exceeding proxy limit." into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
879d09f946
@@ -137,6 +137,15 @@ public class Binder implements IBinder {
|
||||
sTracingEnabled = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dump proxy debug information.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static void dumpProxyDebugInfo() {
|
||||
BinderProxy.dumpProxyDebugInfo();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if binder transaction tracing is enabled.
|
||||
*
|
||||
@@ -941,8 +950,7 @@ final class BinderProxy implements IBinder {
|
||||
// about to crash.
|
||||
final int totalUnclearedSize = unclearedSize();
|
||||
if (totalUnclearedSize >= CRASH_AT_SIZE) {
|
||||
dumpProxyInterfaceCounts();
|
||||
dumpPerUidProxyCounts();
|
||||
dumpProxyDebugInfo();
|
||||
Runtime.getRuntime().gc();
|
||||
throw new AssertionError("Binder ProxyMap has too many entries: "
|
||||
+ totalSize + " (total), " + totalUnclearedSize + " (uncleared), "
|
||||
@@ -1026,6 +1034,14 @@ final class BinderProxy implements IBinder {
|
||||
|
||||
private static ProxyMap sProxyMap = new ProxyMap();
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
public static void dumpProxyDebugInfo() {
|
||||
sProxyMap.dumpProxyInterfaceCounts();
|
||||
sProxyMap.dumpPerUidProxyCounts();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a BinderProxy for IBinder.
|
||||
* This method is thread-hostile! The (native) caller serializes getInstance() calls using
|
||||
|
||||
@@ -15305,6 +15305,7 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
public void onLimitReached(int uid) {
|
||||
Slog.wtf(TAG, "Uid " + uid + " sent too many Binders to uid "
|
||||
+ Process.myUid());
|
||||
Binder.dumpProxyDebugInfo();
|
||||
if (uid == Process.SYSTEM_UID) {
|
||||
Slog.i(TAG, "Skipping kill (uid is SYSTEM)");
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user