Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dc2ddd7e authored by Dan Sandler's avatar Dan Sandler
Browse files

Add BinderProxy tracking code to SysUI.

Bug: 71353150
Test: runtest systemui
Change-Id: I48fbee833fb1c9e70c6efa8c0b232abbc340dce3
parent 3351da1d
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -61,7 +61,7 @@ import java.util.Map;
 */
 */
public class SystemUIApplication extends Application implements SysUiServiceProvider {
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;
    private static final boolean DEBUG = false;


    /**
    /**
+19 −0
Original line number Original line Diff line number Diff line
@@ -20,11 +20,15 @@ import android.app.Service;
import android.content.Intent;
import android.content.Intent;
import android.os.Build;
import android.os.Build;
import android.os.IBinder;
import android.os.IBinder;
import android.os.Process;
import android.os.SystemProperties;
import android.os.SystemProperties;
import android.util.Slog;


import java.io.FileDescriptor;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.io.PrintWriter;


import com.android.internal.os.BinderInternal;

public class SystemUIService extends Service {
public class SystemUIService extends Service {


    @Override
    @Override
@@ -36,6 +40,21 @@ public class SystemUIService extends Service {
        if (Build.IS_DEBUGGABLE && SystemProperties.getBoolean("debug.crash_sysui", false)) {
        if (Build.IS_DEBUGGABLE && SystemProperties.getBoolean("debug.crash_sysui", false)) {
            throw new RuntimeException();
            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
    @Override