Loading proto/src/criticalevents/critical_event_log.proto +6 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,12 @@ message CriticalEventProto { NativeCrash native_crash = 6; SystemServerStarted system_server_started = 7; InstallPackages install_packages = 8; ExcessiveBinderCalls excessive_binder_calls = 9; } message ExcessiveBinderCalls { // The uid sending many calls. optional int32 uid = 1; } message InstallPackages {} Loading services/core/java/com/android/server/am/ActivityManagerService.java +1 −0 Original line number Diff line number Diff line Loading @@ -9028,6 +9028,7 @@ public class ActivityManagerService extends IActivityManager.Stub Slog.wtf(TAG, "Uid " + uid + " sent too many Binders to uid " + Process.myUid()); BinderProxy.dumpProxyDebugInfo(); CriticalEventLog.getInstance().logExcessiveBinderCalls(uid); if (uid == Process.SYSTEM_UID) { Slog.i(TAG, "Skipping kill (uid is SYSTEM)"); } else { Loading services/core/java/com/android/server/criticalevents/CriticalEventLog.java +10 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import com.android.server.criticalevents.nano.CriticalEventProto; import com.android.server.criticalevents.nano.CriticalEventProto.AppNotResponding; import com.android.server.criticalevents.nano.CriticalEventProto.HalfWatchdog; import com.android.server.criticalevents.nano.CriticalEventProto.InstallPackages; import com.android.server.criticalevents.nano.CriticalEventProto.ExcessiveBinderCalls; import com.android.server.criticalevents.nano.CriticalEventProto.JavaCrash; import com.android.server.criticalevents.nano.CriticalEventProto.NativeCrash; import com.android.server.criticalevents.nano.CriticalEventProto.SystemServerStarted; Loading Loading @@ -143,6 +144,15 @@ public class CriticalEventLog { return System.currentTimeMillis(); } /** Logs when a uid sends an excessive number of binder calls. */ public void logExcessiveBinderCalls(int uid) { CriticalEventProto event = new CriticalEventProto(); ExcessiveBinderCalls calls = new ExcessiveBinderCalls(); calls.uid = uid; event.setExcessiveBinderCalls(calls); log(event); } /** Logs when one or more packages are installed. */ public void logInstallPackagesStarted() { CriticalEventProto event = new CriticalEventProto(); Loading Loading
proto/src/criticalevents/critical_event_log.proto +6 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,12 @@ message CriticalEventProto { NativeCrash native_crash = 6; SystemServerStarted system_server_started = 7; InstallPackages install_packages = 8; ExcessiveBinderCalls excessive_binder_calls = 9; } message ExcessiveBinderCalls { // The uid sending many calls. optional int32 uid = 1; } message InstallPackages {} Loading
services/core/java/com/android/server/am/ActivityManagerService.java +1 −0 Original line number Diff line number Diff line Loading @@ -9028,6 +9028,7 @@ public class ActivityManagerService extends IActivityManager.Stub Slog.wtf(TAG, "Uid " + uid + " sent too many Binders to uid " + Process.myUid()); BinderProxy.dumpProxyDebugInfo(); CriticalEventLog.getInstance().logExcessiveBinderCalls(uid); if (uid == Process.SYSTEM_UID) { Slog.i(TAG, "Skipping kill (uid is SYSTEM)"); } else { Loading
services/core/java/com/android/server/criticalevents/CriticalEventLog.java +10 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import com.android.server.criticalevents.nano.CriticalEventProto; import com.android.server.criticalevents.nano.CriticalEventProto.AppNotResponding; import com.android.server.criticalevents.nano.CriticalEventProto.HalfWatchdog; import com.android.server.criticalevents.nano.CriticalEventProto.InstallPackages; import com.android.server.criticalevents.nano.CriticalEventProto.ExcessiveBinderCalls; import com.android.server.criticalevents.nano.CriticalEventProto.JavaCrash; import com.android.server.criticalevents.nano.CriticalEventProto.NativeCrash; import com.android.server.criticalevents.nano.CriticalEventProto.SystemServerStarted; Loading Loading @@ -143,6 +144,15 @@ public class CriticalEventLog { return System.currentTimeMillis(); } /** Logs when a uid sends an excessive number of binder calls. */ public void logExcessiveBinderCalls(int uid) { CriticalEventProto event = new CriticalEventProto(); ExcessiveBinderCalls calls = new ExcessiveBinderCalls(); calls.uid = uid; event.setExcessiveBinderCalls(calls); log(event); } /** Logs when one or more packages are installed. */ public void logInstallPackagesStarted() { CriticalEventProto event = new CriticalEventProto(); Loading