From 99d97b2682ef0345a0a1bdb5cd1865aeec637580 Mon Sep 17 00:00:00 2001 From: Yandry Perez Clemente Date: Mon, 22 Nov 2021 12:29:53 +0000 Subject: [PATCH] Add ANR/Watchdog subject to trace. Test: Manual. Bug: b/184939999 Change-Id: Iaaf378276cad42eea881ffeecbf1964a69d268fe --- services/core/java/com/android/server/Watchdog.java | 1 + .../android/server/am/ProcessErrorStateRecord.java | 1 + .../com/android/server/am/TraceErrorLogger.java | 13 +++++++++++++ 3 files changed, 15 insertions(+) diff --git a/services/core/java/com/android/server/Watchdog.java b/services/core/java/com/android/server/Watchdog.java index b019789e1982e..ac20a08c1e305 100644 --- a/services/core/java/com/android/server/Watchdog.java +++ b/services/core/java/com/android/server/Watchdog.java @@ -685,6 +685,7 @@ public class Watchdog { final UUID errorId = mTraceErrorLogger.generateErrorId(); if (mTraceErrorLogger.isAddErrorIdEnabled()) { mTraceErrorLogger.addErrorIdToTrace("system_server", errorId); + mTraceErrorLogger.addSubjectToTrace(subject, errorId); } // Log the atom as early as possible since it is used as a mechanism to trigger diff --git a/services/core/java/com/android/server/am/ProcessErrorStateRecord.java b/services/core/java/com/android/server/am/ProcessErrorStateRecord.java index 42205060e5d50..18ad1f557ee6d 100644 --- a/services/core/java/com/android/server/am/ProcessErrorStateRecord.java +++ b/services/core/java/com/android/server/am/ProcessErrorStateRecord.java @@ -286,6 +286,7 @@ class ProcessErrorStateRecord { && mService.mTraceErrorLogger.isAddErrorIdEnabled()) { errorId = mService.mTraceErrorLogger.generateErrorId(); mService.mTraceErrorLogger.addErrorIdToTrace(mApp.processName, errorId); + mService.mTraceErrorLogger.addSubjectToTrace(annotation, errorId); } else { errorId = null; } diff --git a/services/core/java/com/android/server/am/TraceErrorLogger.java b/services/core/java/com/android/server/am/TraceErrorLogger.java index c65810097433f..29a9b5c501c4b 100644 --- a/services/core/java/com/android/server/am/TraceErrorLogger.java +++ b/services/core/java/com/android/server/am/TraceErrorLogger.java @@ -54,4 +54,17 @@ public class TraceErrorLogger { COUNTER_PREFIX + processName + "#" + errorId.toString(), PLACEHOLDER_VALUE); } + + /** + * Pushes a counter containing an ANR/Watchdog subject and a unique id so that the subject + * can be uniquely identified. + * + * @param subject The subject to include in the trace. + * @param errorId The unique id with which to tag the trace. + */ + public void addSubjectToTrace(String subject, UUID errorId) { + Trace.traceCounter(Trace.TRACE_TAG_ACTIVITY_MANAGER, + String.format("Subject(for ErrorId %s):%s", errorId.toString(), subject), + PLACEHOLDER_VALUE); + } }