From 2322128fd565825a013bf7bac5ba6cc3043928d0 Mon Sep 17 00:00:00 2001 From: Olivier Gaillard <gaillard@google.com> Date: Fri, 3 Nov 2023 17:30:48 +0000 Subject: [PATCH] Log when system server started time and add it to the ANR dumps Change-Id: I7b8584580fefd41f5654de47e76b20929f5ab28b --- proto/src/criticalevents/critical_event_log.proto | 3 +++ .../android/server/criticalevents/CriticalEventLog.java | 8 ++++++++ services/java/com/android/server/SystemServer.java | 2 ++ 3 files changed, 13 insertions(+) diff --git a/proto/src/criticalevents/critical_event_log.proto b/proto/src/criticalevents/critical_event_log.proto index 25814eca9a85..9cda2672eab0 100644 --- a/proto/src/criticalevents/critical_event_log.proto +++ b/proto/src/criticalevents/critical_event_log.proto @@ -59,8 +59,11 @@ message CriticalEventProto { AppNotResponding anr = 4; JavaCrash java_crash = 5; NativeCrash native_crash = 6; + SystemServerStarted system_server_started = 7; } + message SystemServerStarted {} + message Watchdog { // The watchdog subject. // Required. diff --git a/services/core/java/com/android/server/criticalevents/CriticalEventLog.java b/services/core/java/com/android/server/criticalevents/CriticalEventLog.java index ab480e8e8852..08143759fab4 100644 --- a/services/core/java/com/android/server/criticalevents/CriticalEventLog.java +++ b/services/core/java/com/android/server/criticalevents/CriticalEventLog.java @@ -31,6 +31,7 @@ import com.android.server.criticalevents.nano.CriticalEventProto.AppNotRespondin import com.android.server.criticalevents.nano.CriticalEventProto.HalfWatchdog; import com.android.server.criticalevents.nano.CriticalEventProto.JavaCrash; import com.android.server.criticalevents.nano.CriticalEventProto.NativeCrash; +import com.android.server.criticalevents.nano.CriticalEventProto.SystemServerStarted; import com.android.server.criticalevents.nano.CriticalEventProto.Watchdog; import java.io.File; @@ -141,6 +142,13 @@ public class CriticalEventLog { return System.currentTimeMillis(); } + /** Logs when system server started. */ + public void logSystemServerStarted() { + CriticalEventProto event = new CriticalEventProto(); + event.setSystemServerStarted(new SystemServerStarted()); + log(event); + } + /** Logs a watchdog. */ public void logWatchdog(String subject, UUID uuid) { Watchdog watchdog = new Watchdog(); diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 56e385d535a0..0a2e80606e96 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -129,6 +129,7 @@ import com.android.server.connectivity.PacProxyService; import com.android.server.contentcapture.ContentCaptureManagerInternal; import com.android.server.coverage.CoverageService; import com.android.server.cpu.CpuMonitorService; +import com.android.server.criticalevents.CriticalEventLog; import com.android.server.devicepolicy.DevicePolicyManagerService; import com.android.server.devicestate.DeviceStateManagerService; import com.android.server.display.DisplayManagerService; @@ -964,6 +965,7 @@ public final class SystemServer implements Dumpable { // Only update the timeout after starting all the services so that we use // the default timeout to start system server. updateWatchdogTimeout(t); + CriticalEventLog.getInstance().logSystemServerStarted(); } catch (Throwable ex) { Slog.e("System", "******************************************"); Slog.e("System", "************ Failure starting system services", ex); -- GitLab