Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5b0ee391 authored by Tim Murray's avatar Tim Murray Committed by android-build-merger
Browse files

Merge \\\"Don\\\'t dump stack traces for background ANRs.\\\" into nyc-dev am:...

Merge \\\"Don\\\'t dump stack traces for background ANRs.\\\" into nyc-dev am: b2b203ae am: a7a34274
am: 40d4e97d

Change-Id: I570941b6e1bca80d8e3f6d8e3596ad2e04ab7fc3
parents d39c6fbc 40d4e97d
Loading
Loading
Loading
Loading
+41 −27
Original line number Diff line number Diff line
@@ -743,6 +743,12 @@ class AppErrors {
            mService.updateCpuStatsNow();
        }

        // Unless configured otherwise, swallow ANRs in background processes & kill the process.
        boolean showBackground = Settings.Secure.getInt(mContext.getContentResolver(),
                Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0;

        boolean isSilentANR;

        synchronized (mService) {
            // PowerManager.reboot() can block for a long time, so ignore ANRs while shutting down.
            if (mService.mShuttingDown) {
@@ -767,6 +773,9 @@ class AppErrors {
            // Dump thread traces as quickly as we can, starting with "interesting" processes.
            firstPids.add(app.pid);

            // Don't dump other PIDs if it's a background ANR
            isSilentANR = !showBackground && !app.isInterestingToUserLocked() && app.pid != MY_PID;
            if (!isSilentANR) {
                int parentPid = app.pid;
                if (parent != null && parent.app != null && parent.app.pid > 0) {
                    parentPid = parent.app.pid;
@@ -791,6 +800,7 @@ class AppErrors {
                    }
                }
            }
        }

        // Log the ANR to the main log.
        StringBuilder info = new StringBuilder();
@@ -808,10 +818,18 @@ class AppErrors {
            info.append("Parent: ").append(parent.shortComponentName).append("\n");
        }

        final ProcessCpuTracker processCpuTracker = new ProcessCpuTracker(true);
        ProcessCpuTracker processCpuTracker = new ProcessCpuTracker(true);

        File tracesFile = mService.dumpStackTraces(true, firstPids, processCpuTracker, lastPids,
                NATIVE_STACKS_OF_INTEREST);
        String[] nativeProcs = NATIVE_STACKS_OF_INTEREST;
        // don't dump native PIDs for background ANRs
        File tracesFile = null;
        if (isSilentANR) {
            tracesFile = mService.dumpStackTraces(true, firstPids, null, lastPids,
                null);
        } else {
            tracesFile = mService.dumpStackTraces(true, firstPids, processCpuTracker, lastPids,
                nativeProcs);
        }

        String cpuInfo = null;
        if (ActivityManagerService.MONITOR_CPU_USAGE) {
@@ -855,14 +873,10 @@ class AppErrors {
            }
        }

        // Unless configured otherwise, swallow ANRs in background processes & kill the process.
        boolean showBackground = Settings.Secure.getInt(mContext.getContentResolver(),
                Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0;

        synchronized (mService) {
            mService.mBatteryStatsService.noteProcessAnr(app.processName, app.uid);

            if (!showBackground && !app.isInterestingToUserLocked() && app.pid != MY_PID) {
            if (isSilentANR) {
                app.kill("bg anr", true);
                return;
            }