Loading core/java/android/provider/DeviceConfig.java +7 −0 Original line number Diff line number Diff line Loading @@ -587,6 +587,13 @@ public final class DeviceConfig { */ public static final String NAMESPACE_CONSTRAIN_DISPLAY_APIS = "constrain_display_apis"; /** * Trace error logger properties definitions. * * @hide */ public static final String NAMESPACE_TRACE_ERROR_LOGGER = "trace_error_logger"; private static final Object sLock = new Object(); @GuardedBy("sLock") private static ArrayMap<OnPropertiesChangedListener, Pair<String, Executor>> sListeners = Loading services/core/java/com/android/server/Watchdog.java +1 −1 Original line number Diff line number Diff line Loading @@ -699,7 +699,7 @@ public class Watchdog { if (mActivity != null) { mActivity.addErrorToDropBox( "watchdog", null, "system_server", null, null, null, localSubject, report.toString(), stack, null, null, null); localSubject, report.toString(), stack, null, null, null, null); } FrameworkStatsLog.write(FrameworkStatsLog.SYSTEM_SERVER_WATCHDOG_OCCURRED, localSubject); Loading services/core/java/com/android/server/am/ActivityManagerService.java +13 −4 Original line number Diff line number Diff line Loading @@ -420,6 +420,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.UUID; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicInteger; Loading Loading @@ -621,6 +622,8 @@ public class ActivityManagerService extends IActivityManager.Stub @GuardedBy("this") BroadcastStats mCurBroadcastStats; TraceErrorLogger mTraceErrorLogger; BroadcastQueue broadcastQueueForIntent(Intent intent) { if (isOnOffloadQueue(intent.getFlags())) { if (DEBUG_BROADCAST_BACKGROUND) { Loading Loading @@ -2336,6 +2339,7 @@ public class ActivityManagerService extends IActivityManager.Stub mInternal = new LocalService(); mPendingStartActivityUids = new PendingStartActivityUids(mContext); mTraceErrorLogger = new TraceErrorLogger(); } public void setSystemServiceManager(SystemServiceManager mgr) { Loading Loading @@ -7810,7 +7814,7 @@ public class ActivityManagerService extends IActivityManager.Stub addErrorToDropBox( eventType, r, processName, null, null, null, null, null, null, crashInfo, new Float(loadingProgress), incrementalMetrics); new Float(loadingProgress), incrementalMetrics, null); mAppErrors.crashApplication(r, crashInfo); } Loading Loading @@ -7993,7 +7997,7 @@ public class ActivityManagerService extends IActivityManager.Stub callingPid, (r != null) ? r.getProcessClassEnum() : 0); addErrorToDropBox("wtf", r, processName, null, null, null, tag, null, null, crashInfo, null, null); null, null, null); return r; } Loading @@ -8018,7 +8022,7 @@ public class ActivityManagerService extends IActivityManager.Stub for (Pair<String, ApplicationErrorReport.CrashInfo> p = list.poll(); p != null; p = list.poll()) { addErrorToDropBox("wtf", proc, "system_server", null, null, null, p.first, null, null, p.second, null, null); p.second, null, null, null); } } Loading Loading @@ -8109,13 +8113,15 @@ public class ActivityManagerService extends IActivityManager.Stub * @param crashInfo giving an application stack trace, null if absent * @param loadingProgress the loading progress of an installed package, range in [0, 1]. * @param incrementalMetrics metrics for apps installed on Incremental. * @param errorId a unique id to append to the dropbox headers. */ public void addErrorToDropBox(String eventType, ProcessRecord process, String processName, String activityShortComponentName, String parentShortComponentName, ProcessRecord parentProcess, String subject, final String report, final File dataFile, final ApplicationErrorReport.CrashInfo crashInfo, @Nullable Float loadingProgress, @Nullable IncrementalMetrics incrementalMetrics) { @Nullable Float loadingProgress, @Nullable IncrementalMetrics incrementalMetrics, @Nullable UUID errorId) { // NOTE -- this must never acquire the ActivityManagerService lock, // otherwise the watchdog may be prevented from resetting the system. Loading Loading @@ -8169,6 +8175,9 @@ public class ActivityManagerService extends IActivityManager.Stub if (subject != null) { sb.append("Subject: ").append(subject).append("\n"); } if (errorId != null) { sb.append("ErrorId: ").append(errorId.toString()).append("\n"); } sb.append("Build: ").append(Build.FINGERPRINT).append("\n"); if (Debug.isDebuggerConnected()) { sb.append("Debugger: Connected\n"); Loading services/core/java/com/android/server/am/AppProfiler.java +1 −1 Original line number Diff line number Diff line Loading @@ -1627,7 +1627,7 @@ public class AppProfiler { dropBuilder.append(catSw.toString()); FrameworkStatsLog.write(FrameworkStatsLog.LOW_MEM_REPORTED); mService.addErrorToDropBox("lowmem", null, "system_server", null, null, null, tag.toString(), dropBuilder.toString(), null, null, null, null); null, null, tag.toString(), dropBuilder.toString(), null, null, null, null, null); synchronized (mService) { long now = SystemClock.uptimeMillis(); if (mLastMemUsageReportTime < now) { Loading services/core/java/com/android/server/am/ProcessErrorStateRecord.java +13 −2 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ import java.io.File; import java.io.PrintWriter; import java.io.StringWriter; import java.util.ArrayList; import java.util.UUID; /** * The error state of the process, such as if it's crashing/ANR etc. */ Loading Loading @@ -235,6 +235,7 @@ class ProcessErrorStateRecord { final boolean isSilentAnr; final int pid = mApp.getPid(); final UUID errorId; synchronized (mService) { // PowerManager.reboot() can block for a long time, so ignore ANRs while shutting down. if (mService.mAtmInternal.isShuttingDown()) { Loading Loading @@ -264,6 +265,13 @@ class ProcessErrorStateRecord { EventLog.writeEvent(EventLogTags.AM_ANR, mApp.userId, pid, mApp.processName, mApp.info.flags, annotation); if (mService.mTraceErrorLogger.isAddErrorIdEnabled()) { errorId = mService.mTraceErrorLogger.generateErrorId(); mService.mTraceErrorLogger.addErrorIdToTrace(errorId); } else { errorId = null; } // Dump thread traces as quickly as we can, starting with "interesting" processes. firstPids.add(pid); Loading Loading @@ -315,6 +323,9 @@ class ProcessErrorStateRecord { && parentShortComponentName.equals(activityShortComponentName)) { info.append("Parent: ").append(parentShortComponentName).append("\n"); } if (errorId != null) { info.append("ErrorId: ").append(errorId.toString()).append("\n"); } // Retrieve controller with max ANR delay from AnrControllers // Note that we retrieve the controller before dumping stacks because dumping stacks can Loading Loading @@ -457,7 +468,7 @@ class ProcessErrorStateRecord { ? (ProcessRecord) parentProcess.mOwner : null; mService.addErrorToDropBox("anr", mApp, mApp.processName, activityShortComponentName, parentShortComponentName, parentPr, annotation, report.toString(), tracesFile, null, new Float(loadingProgress), incrementalMetrics); null, new Float(loadingProgress), incrementalMetrics, errorId); if (mApp.getWindowProcessController().appNotResponding(info.toString(), () -> { Loading Loading
core/java/android/provider/DeviceConfig.java +7 −0 Original line number Diff line number Diff line Loading @@ -587,6 +587,13 @@ public final class DeviceConfig { */ public static final String NAMESPACE_CONSTRAIN_DISPLAY_APIS = "constrain_display_apis"; /** * Trace error logger properties definitions. * * @hide */ public static final String NAMESPACE_TRACE_ERROR_LOGGER = "trace_error_logger"; private static final Object sLock = new Object(); @GuardedBy("sLock") private static ArrayMap<OnPropertiesChangedListener, Pair<String, Executor>> sListeners = Loading
services/core/java/com/android/server/Watchdog.java +1 −1 Original line number Diff line number Diff line Loading @@ -699,7 +699,7 @@ public class Watchdog { if (mActivity != null) { mActivity.addErrorToDropBox( "watchdog", null, "system_server", null, null, null, localSubject, report.toString(), stack, null, null, null); localSubject, report.toString(), stack, null, null, null, null); } FrameworkStatsLog.write(FrameworkStatsLog.SYSTEM_SERVER_WATCHDOG_OCCURRED, localSubject); Loading
services/core/java/com/android/server/am/ActivityManagerService.java +13 −4 Original line number Diff line number Diff line Loading @@ -420,6 +420,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.UUID; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicInteger; Loading Loading @@ -621,6 +622,8 @@ public class ActivityManagerService extends IActivityManager.Stub @GuardedBy("this") BroadcastStats mCurBroadcastStats; TraceErrorLogger mTraceErrorLogger; BroadcastQueue broadcastQueueForIntent(Intent intent) { if (isOnOffloadQueue(intent.getFlags())) { if (DEBUG_BROADCAST_BACKGROUND) { Loading Loading @@ -2336,6 +2339,7 @@ public class ActivityManagerService extends IActivityManager.Stub mInternal = new LocalService(); mPendingStartActivityUids = new PendingStartActivityUids(mContext); mTraceErrorLogger = new TraceErrorLogger(); } public void setSystemServiceManager(SystemServiceManager mgr) { Loading Loading @@ -7810,7 +7814,7 @@ public class ActivityManagerService extends IActivityManager.Stub addErrorToDropBox( eventType, r, processName, null, null, null, null, null, null, crashInfo, new Float(loadingProgress), incrementalMetrics); new Float(loadingProgress), incrementalMetrics, null); mAppErrors.crashApplication(r, crashInfo); } Loading Loading @@ -7993,7 +7997,7 @@ public class ActivityManagerService extends IActivityManager.Stub callingPid, (r != null) ? r.getProcessClassEnum() : 0); addErrorToDropBox("wtf", r, processName, null, null, null, tag, null, null, crashInfo, null, null); null, null, null); return r; } Loading @@ -8018,7 +8022,7 @@ public class ActivityManagerService extends IActivityManager.Stub for (Pair<String, ApplicationErrorReport.CrashInfo> p = list.poll(); p != null; p = list.poll()) { addErrorToDropBox("wtf", proc, "system_server", null, null, null, p.first, null, null, p.second, null, null); p.second, null, null, null); } } Loading Loading @@ -8109,13 +8113,15 @@ public class ActivityManagerService extends IActivityManager.Stub * @param crashInfo giving an application stack trace, null if absent * @param loadingProgress the loading progress of an installed package, range in [0, 1]. * @param incrementalMetrics metrics for apps installed on Incremental. * @param errorId a unique id to append to the dropbox headers. */ public void addErrorToDropBox(String eventType, ProcessRecord process, String processName, String activityShortComponentName, String parentShortComponentName, ProcessRecord parentProcess, String subject, final String report, final File dataFile, final ApplicationErrorReport.CrashInfo crashInfo, @Nullable Float loadingProgress, @Nullable IncrementalMetrics incrementalMetrics) { @Nullable Float loadingProgress, @Nullable IncrementalMetrics incrementalMetrics, @Nullable UUID errorId) { // NOTE -- this must never acquire the ActivityManagerService lock, // otherwise the watchdog may be prevented from resetting the system. Loading Loading @@ -8169,6 +8175,9 @@ public class ActivityManagerService extends IActivityManager.Stub if (subject != null) { sb.append("Subject: ").append(subject).append("\n"); } if (errorId != null) { sb.append("ErrorId: ").append(errorId.toString()).append("\n"); } sb.append("Build: ").append(Build.FINGERPRINT).append("\n"); if (Debug.isDebuggerConnected()) { sb.append("Debugger: Connected\n"); Loading
services/core/java/com/android/server/am/AppProfiler.java +1 −1 Original line number Diff line number Diff line Loading @@ -1627,7 +1627,7 @@ public class AppProfiler { dropBuilder.append(catSw.toString()); FrameworkStatsLog.write(FrameworkStatsLog.LOW_MEM_REPORTED); mService.addErrorToDropBox("lowmem", null, "system_server", null, null, null, tag.toString(), dropBuilder.toString(), null, null, null, null); null, null, tag.toString(), dropBuilder.toString(), null, null, null, null, null); synchronized (mService) { long now = SystemClock.uptimeMillis(); if (mLastMemUsageReportTime < now) { Loading
services/core/java/com/android/server/am/ProcessErrorStateRecord.java +13 −2 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ import java.io.File; import java.io.PrintWriter; import java.io.StringWriter; import java.util.ArrayList; import java.util.UUID; /** * The error state of the process, such as if it's crashing/ANR etc. */ Loading Loading @@ -235,6 +235,7 @@ class ProcessErrorStateRecord { final boolean isSilentAnr; final int pid = mApp.getPid(); final UUID errorId; synchronized (mService) { // PowerManager.reboot() can block for a long time, so ignore ANRs while shutting down. if (mService.mAtmInternal.isShuttingDown()) { Loading Loading @@ -264,6 +265,13 @@ class ProcessErrorStateRecord { EventLog.writeEvent(EventLogTags.AM_ANR, mApp.userId, pid, mApp.processName, mApp.info.flags, annotation); if (mService.mTraceErrorLogger.isAddErrorIdEnabled()) { errorId = mService.mTraceErrorLogger.generateErrorId(); mService.mTraceErrorLogger.addErrorIdToTrace(errorId); } else { errorId = null; } // Dump thread traces as quickly as we can, starting with "interesting" processes. firstPids.add(pid); Loading Loading @@ -315,6 +323,9 @@ class ProcessErrorStateRecord { && parentShortComponentName.equals(activityShortComponentName)) { info.append("Parent: ").append(parentShortComponentName).append("\n"); } if (errorId != null) { info.append("ErrorId: ").append(errorId.toString()).append("\n"); } // Retrieve controller with max ANR delay from AnrControllers // Note that we retrieve the controller before dumping stacks because dumping stacks can Loading Loading @@ -457,7 +468,7 @@ class ProcessErrorStateRecord { ? (ProcessRecord) parentProcess.mOwner : null; mService.addErrorToDropBox("anr", mApp, mApp.processName, activityShortComponentName, parentShortComponentName, parentPr, annotation, report.toString(), tracesFile, null, new Float(loadingProgress), incrementalMetrics); null, new Float(loadingProgress), incrementalMetrics, errorId); if (mApp.getWindowProcessController().appNotResponding(info.toString(), () -> { Loading