From 8e3e445706dd8be8ba6de05043b0b84fd9519384 Mon Sep 17 00:00:00 2001 From: Hui Yu Date: Thu, 11 Apr 2019 10:57:51 -0700 Subject: [PATCH] No service timeout when debbuger is attached Don't trigger service timeout when debbuger is attached. Also do not kill the process for isSilentAnr when app is under debugging. Fix: 130307879 Test: Set a breakpoint in app's Service.onCreate(), debug the app, start the service and hit the breakpoint. Make sure there is no ANR from the service timeout. Change-Id: I32075543fb864869c2719c3c022681a9a2318a60 --- services/core/java/com/android/server/am/ActiveServices.java | 5 ++++- services/core/java/com/android/server/am/ProcessRecord.java | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 0271354b3fff1..24f8fc26ae227 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -3830,8 +3830,11 @@ public final class ActiveServices { void serviceTimeout(ProcessRecord proc) { String anrMessage = null; - synchronized(mAm) { + if (proc.isDebugging()) { + // The app's being debugged, ignore timeout. + return; + } if (proc.executingServices.size() == 0 || proc.thread == null) { return; } diff --git a/services/core/java/com/android/server/am/ProcessRecord.java b/services/core/java/com/android/server/am/ProcessRecord.java index 49930c1f4d627..e891e6e450ba0 100644 --- a/services/core/java/com/android/server/am/ProcessRecord.java +++ b/services/core/java/com/android/server/am/ProcessRecord.java @@ -1557,7 +1557,7 @@ class ProcessRecord implements WindowProcessListener { mService.mBatteryStatsService.noteProcessAnr(processName, uid); } - if (isSilentAnr()) { + if (isSilentAnr() && !isDebugging()) { kill("bg anr", true); return; }