Loading services/core/java/com/android/server/am/ActivityManagerService.java +20 −7 Original line number Diff line number Diff line Loading @@ -497,6 +497,8 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; Loading Loading @@ -629,6 +631,9 @@ public class ActivityManagerService extends IActivityManager.Stub private static final int MAX_BUGREPORT_TITLE_SIZE = 100; private static final int MAX_BUGREPORT_DESCRIPTION_SIZE = 150; private static final DateTimeFormatter DROPBOX_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSZ"); OomAdjuster mOomAdjuster; static final String EXTRA_TITLE = "android.intent.extra.TITLE"; Loading Loading @@ -2167,22 +2172,25 @@ public class ActivityManagerService extends IActivityManager.Stub */ static class VolatileDropboxEntryStates { private final Boolean mIsProcessFrozen; private final ZonedDateTime mTimestamp; private VolatileDropboxEntryStates(Boolean frozenState) { private VolatileDropboxEntryStates(Boolean frozenState, ZonedDateTime timestamp) { this.mIsProcessFrozen = frozenState; this.mTimestamp = timestamp; } public static VolatileDropboxEntryStates withProcessFrozenState(boolean frozenState) { return new VolatileDropboxEntryStates(frozenState); } public static VolatileDropboxEntryStates emptyVolatileDropboxEnytyStates() { return new VolatileDropboxEntryStates(null); public static VolatileDropboxEntryStates withProcessFrozenStateAndTimestamp( boolean frozenState, ZonedDateTime timestamp) { return new VolatileDropboxEntryStates(frozenState, timestamp); } public Boolean isProcessFrozen() { return mIsProcessFrozen; } public ZonedDateTime getTimestamp() { return mTimestamp; } } static class MemBinder extends Binder { Loading Loading @@ -9678,6 +9686,11 @@ public class ActivityManagerService extends IActivityManager.Stub ? volatileStates.isProcessFrozen() : process.mOptRecord.isFrozen() ).append("\n"); } if (volatileStates != null && volatileStates.getTimestamp() != null) { String formattedTime = DROPBOX_TIME_FORMATTER.format( volatileStates.getTimestamp()); sb.append("Timestamp: ").append(formattedTime).append("\n"); } int flags = process.info.flags; final IPackageManager pm = AppGlobals.getPackageManager(); sb.append("Flags: 0x").append(Integer.toHexString(flags)).append("\n"); Loading services/core/java/com/android/server/am/ProcessErrorStateRecord.java +11 −12 Original line number Diff line number Diff line Loading @@ -66,7 +66,7 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.UUID; import java.util.concurrent.ExecutionException; Loading @@ -79,9 +79,6 @@ import java.util.concurrent.atomic.AtomicLong; * The error state of the process, such as if it's crashing/ANR etc. */ class ProcessErrorStateRecord { private static final DateTimeFormatter DROPBOX_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSZ"); final ProcessRecord mApp; private final ActivityManagerService mService; Loading Loading @@ -355,9 +352,18 @@ class ProcessErrorStateRecord { synchronized (mProcLock) { latencyTracker.waitingOnProcLockEnded(); setNotResponding(true); ZonedDateTime timestamp = null; if (timeoutRecord != null && timeoutRecord.mEndUptimeMillis > 0) { long millisSinceEndUptimeMs = anrTime - timeoutRecord.mEndUptimeMillis; timestamp = Instant.now().minusMillis(millisSinceEndUptimeMs) .atZone(ZoneId.systemDefault()); } volatileDropboxEntriyStates = ActivityManagerService.VolatileDropboxEntryStates .withProcessFrozenState(mApp.mOptRecord.isFrozen()); .withProcessFrozenStateAndTimestamp( mApp.mOptRecord.isFrozen(), timestamp); } // Log the ANR to the event log. Loading Loading @@ -450,13 +456,6 @@ class ProcessErrorStateRecord { info.append("ErrorId: ").append(errorId.toString()).append("\n"); } info.append("Frozen: ").append(mApp.mOptRecord.isFrozen()).append("\n"); if (timeoutRecord != null && timeoutRecord.mEndUptimeMillis > 0) { long millisSinceEndUptimeMs = anrTime - timeoutRecord.mEndUptimeMillis; String formattedTime = DROPBOX_TIME_FORMATTER.format( Instant.now().minusMillis(millisSinceEndUptimeMs) .atZone(ZoneId.systemDefault())); info.append("Timestamp: ").append(formattedTime).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
services/core/java/com/android/server/am/ActivityManagerService.java +20 −7 Original line number Diff line number Diff line Loading @@ -497,6 +497,8 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; Loading Loading @@ -629,6 +631,9 @@ public class ActivityManagerService extends IActivityManager.Stub private static final int MAX_BUGREPORT_TITLE_SIZE = 100; private static final int MAX_BUGREPORT_DESCRIPTION_SIZE = 150; private static final DateTimeFormatter DROPBOX_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSZ"); OomAdjuster mOomAdjuster; static final String EXTRA_TITLE = "android.intent.extra.TITLE"; Loading Loading @@ -2167,22 +2172,25 @@ public class ActivityManagerService extends IActivityManager.Stub */ static class VolatileDropboxEntryStates { private final Boolean mIsProcessFrozen; private final ZonedDateTime mTimestamp; private VolatileDropboxEntryStates(Boolean frozenState) { private VolatileDropboxEntryStates(Boolean frozenState, ZonedDateTime timestamp) { this.mIsProcessFrozen = frozenState; this.mTimestamp = timestamp; } public static VolatileDropboxEntryStates withProcessFrozenState(boolean frozenState) { return new VolatileDropboxEntryStates(frozenState); } public static VolatileDropboxEntryStates emptyVolatileDropboxEnytyStates() { return new VolatileDropboxEntryStates(null); public static VolatileDropboxEntryStates withProcessFrozenStateAndTimestamp( boolean frozenState, ZonedDateTime timestamp) { return new VolatileDropboxEntryStates(frozenState, timestamp); } public Boolean isProcessFrozen() { return mIsProcessFrozen; } public ZonedDateTime getTimestamp() { return mTimestamp; } } static class MemBinder extends Binder { Loading Loading @@ -9678,6 +9686,11 @@ public class ActivityManagerService extends IActivityManager.Stub ? volatileStates.isProcessFrozen() : process.mOptRecord.isFrozen() ).append("\n"); } if (volatileStates != null && volatileStates.getTimestamp() != null) { String formattedTime = DROPBOX_TIME_FORMATTER.format( volatileStates.getTimestamp()); sb.append("Timestamp: ").append(formattedTime).append("\n"); } int flags = process.info.flags; final IPackageManager pm = AppGlobals.getPackageManager(); sb.append("Flags: 0x").append(Integer.toHexString(flags)).append("\n"); Loading
services/core/java/com/android/server/am/ProcessErrorStateRecord.java +11 −12 Original line number Diff line number Diff line Loading @@ -66,7 +66,7 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.UUID; import java.util.concurrent.ExecutionException; Loading @@ -79,9 +79,6 @@ import java.util.concurrent.atomic.AtomicLong; * The error state of the process, such as if it's crashing/ANR etc. */ class ProcessErrorStateRecord { private static final DateTimeFormatter DROPBOX_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSZ"); final ProcessRecord mApp; private final ActivityManagerService mService; Loading Loading @@ -355,9 +352,18 @@ class ProcessErrorStateRecord { synchronized (mProcLock) { latencyTracker.waitingOnProcLockEnded(); setNotResponding(true); ZonedDateTime timestamp = null; if (timeoutRecord != null && timeoutRecord.mEndUptimeMillis > 0) { long millisSinceEndUptimeMs = anrTime - timeoutRecord.mEndUptimeMillis; timestamp = Instant.now().minusMillis(millisSinceEndUptimeMs) .atZone(ZoneId.systemDefault()); } volatileDropboxEntriyStates = ActivityManagerService.VolatileDropboxEntryStates .withProcessFrozenState(mApp.mOptRecord.isFrozen()); .withProcessFrozenStateAndTimestamp( mApp.mOptRecord.isFrozen(), timestamp); } // Log the ANR to the event log. Loading Loading @@ -450,13 +456,6 @@ class ProcessErrorStateRecord { info.append("ErrorId: ").append(errorId.toString()).append("\n"); } info.append("Frozen: ").append(mApp.mOptRecord.isFrozen()).append("\n"); if (timeoutRecord != null && timeoutRecord.mEndUptimeMillis > 0) { long millisSinceEndUptimeMs = anrTime - timeoutRecord.mEndUptimeMillis; String formattedTime = DROPBOX_TIME_FORMATTER.format( Instant.now().minusMillis(millisSinceEndUptimeMs) .atZone(ZoneId.systemDefault())); info.append("Timestamp: ").append(formattedTime).append("\n"); } // Retrieve controller with max ANR delay from AnrControllers // Note that we retrieve the controller before dumping stacks because dumping stacks can Loading