From dc2ddd7e3e1b6a4f3ecc24a0a05d17a4e89cef28 Mon Sep 17 00:00:00 2001 From: Dan Sandler Date: Wed, 24 Jan 2018 16:09:53 -0500 Subject: [PATCH] Add BinderProxy tracking code to SysUI. Bug: 71353150 Test: runtest systemui Change-Id: I48fbee833fb1c9e70c6efa8c0b232abbc340dce3 --- .../android/systemui/SystemUIApplication.java | 2 +- .../com/android/systemui/SystemUIService.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java index 3538327130d43..2c0e95b5af264 100644 --- a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java +++ b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java @@ -61,7 +61,7 @@ import java.util.Map; */ public class SystemUIApplication extends Application implements SysUiServiceProvider { - private static final String TAG = "SystemUIService"; + public static final String TAG = "SystemUIService"; private static final boolean DEBUG = false; /** diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIService.java b/packages/SystemUI/src/com/android/systemui/SystemUIService.java index 11e0f289e6a46..ddf0bd0cbab40 100644 --- a/packages/SystemUI/src/com/android/systemui/SystemUIService.java +++ b/packages/SystemUI/src/com/android/systemui/SystemUIService.java @@ -20,11 +20,15 @@ import android.app.Service; import android.content.Intent; import android.os.Build; import android.os.IBinder; +import android.os.Process; import android.os.SystemProperties; +import android.util.Slog; import java.io.FileDescriptor; import java.io.PrintWriter; +import com.android.internal.os.BinderInternal; + public class SystemUIService extends Service { @Override @@ -36,6 +40,21 @@ public class SystemUIService extends Service { if (Build.IS_DEBUGGABLE && SystemProperties.getBoolean("debug.crash_sysui", false)) { throw new RuntimeException(); } + + if (Build.IS_DEBUGGABLE) { + // b/71353150 - looking for leaked binder proxies + BinderInternal.nSetBinderProxyCountEnabled(true); + BinderInternal.nSetBinderProxyCountWatermarks(1000,900); + BinderInternal.setBinderProxyCountCallback( + new BinderInternal.BinderProxyLimitListener() { + @Override + public void onLimitReached(int uid) { + Slog.w(SystemUIApplication.TAG, + "uid " + uid + " sent too many Binder proxies to uid " + + Process.myUid()); + } + }, Dependency.get(Dependency.MAIN_HANDLER)); + } } @Override