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); + } }