Merge "[am] move incremental manager calls to post dumpStackTraces" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-05-01 01:27:18 +00:00
committed by Android (Google) Code Review

View File

@@ -299,32 +299,6 @@ class ProcessErrorStateRecord {
}
}
// Check if package is still being loaded
float loadingProgress = 1;
IncrementalMetrics incrementalMetrics = null;
final PackageManagerInternal packageManagerInternal = mService.getPackageManagerInternal();
if (mApp.info != null && mApp.info.packageName != null) {
IncrementalStatesInfo incrementalStatesInfo =
packageManagerInternal.getIncrementalStatesInfo(
mApp.info.packageName, mApp.uid, mApp.userId);
if (incrementalStatesInfo != null) {
loadingProgress = incrementalStatesInfo.getProgress();
}
final String codePath = mApp.info.getCodePath();
if (IncrementalManager.isIncrementalPath(codePath)) {
// Report in the main log that the incremental package is still loading
Slog.e(TAG, "App ANR on incremental package " + mApp.info.packageName
+ " which is " + ((int) (loadingProgress * 100)) + "% loaded.");
final IBinder incrementalService = ServiceManager.getService(
Context.INCREMENTAL_SERVICE);
if (incrementalService != null) {
final IncrementalManager incrementalManager = new IncrementalManager(
IIncrementalService.Stub.asInterface(incrementalService));
incrementalMetrics = incrementalManager.getMetrics(codePath);
}
}
}
// Log the ANR to the main log.
StringBuilder info = new StringBuilder();
info.setLength(0);
@@ -342,11 +316,6 @@ class ProcessErrorStateRecord {
info.append("Parent: ").append(parentShortComponentName).append("\n");
}
if (incrementalMetrics != null) {
// Report in the main log about the incremental package
info.append("Package is ").append((int) (loadingProgress * 100)).append("% loaded.\n");
}
// Retrieve controller with max ANR delay from AnrControllers
// Note that we retrieve the controller before dumping stacks because dumping stacks can
// take a few seconds, after which the cause of the ANR delay might have completed and
@@ -418,6 +387,37 @@ class ProcessErrorStateRecord {
mService.mProcessList.mAppExitInfoTracker.scheduleLogAnrTrace(
pid, mApp.uid, mApp.getPackageList(), tracesFile, offsets[0], offsets[1]);
}
// Check if package is still being loaded
float loadingProgress = 1;
IncrementalMetrics incrementalMetrics = null;
final PackageManagerInternal packageManagerInternal = mService.getPackageManagerInternal();
if (mApp.info != null && mApp.info.packageName != null) {
IncrementalStatesInfo incrementalStatesInfo =
packageManagerInternal.getIncrementalStatesInfo(
mApp.info.packageName, mApp.uid, mApp.userId);
if (incrementalStatesInfo != null) {
loadingProgress = incrementalStatesInfo.getProgress();
}
final String codePath = mApp.info.getCodePath();
if (IncrementalManager.isIncrementalPath(codePath)) {
// Report in the main log that the incremental package is still loading
Slog.e(TAG, "App ANR on incremental package " + mApp.info.packageName
+ " which is " + ((int) (loadingProgress * 100)) + "% loaded.");
final IBinder incrementalService = ServiceManager.getService(
Context.INCREMENTAL_SERVICE);
if (incrementalService != null) {
final IncrementalManager incrementalManager = new IncrementalManager(
IIncrementalService.Stub.asInterface(incrementalService));
incrementalMetrics = incrementalManager.getMetrics(codePath);
}
}
}
if (incrementalMetrics != null) {
// Report in the main log about the incremental package
info.append("Package is ").append((int) (loadingProgress * 100)).append("% loaded.\n");
}
FrameworkStatsLog.write(FrameworkStatsLog.ANR_OCCURRED, mApp.uid, mApp.processName,
activityShortComponentName == null ? "unknown" : activityShortComponentName,
annotation,