Merge "Skip reporting ANR on zero pid process" into tm-dev

This commit is contained in:
Riddle Hsu
2022-04-01 05:40:54 +00:00
committed by Android (Google) Code Review
2 changed files with 6 additions and 1 deletions

View File

@@ -79,6 +79,11 @@ class AnrHelper {
WindowProcessController parentProcess, boolean aboveSystem, String annotation) {
final int incomingPid = anrProcess.mPid;
synchronized (mAnrRecords) {
if (incomingPid == 0) {
// Extreme corner case such as zygote is no response to return pid for the process.
Slog.i(TAG, "Skip zero pid ANR, process=" + anrProcess.processName);
return;
}
if (mProcessingPid == incomingPid) {
Slog.i(TAG, "Skip duplicated ANR, pid=" + incomingPid + " " + annotation);
return;

View File

@@ -70,6 +70,7 @@ public class AnrHelperTest {
final Context context = getInstrumentation().getTargetContext();
runWithDexmakerShareClassLoader(() -> {
mAnrApp = mock(ProcessRecord.class);
mAnrApp.mPid = 12345;
final ProcessErrorStateRecord errorState = mock(ProcessErrorStateRecord.class);
setFieldValue(ProcessErrorStateRecord.class, errorState, "mProcLock",
new ActivityManagerProcLock());
@@ -130,7 +131,6 @@ public class AnrHelperTest {
}).when(mAnrApp.mErrorState).appNotResponding(anyString(), any(), any(), any(),
anyBoolean(), anyString(), anyBoolean());
final ApplicationInfo appInfo = new ApplicationInfo();
mAnrApp.mPid = 12345;
final Runnable reportAnr = () -> mAnrHelper.appNotResponding(mAnrApp,
"activityShortComponentName", appInfo, "parentShortComponentName",
null /* parentProcess */, false /* aboveSystem */, "annotation");