From fc854c65b5640346781388b1ca1bbd7e2cdd4fe5 Mon Sep 17 00:00:00 2001 From: Kevin Jeon Date: Fri, 31 Mar 2023 16:41:36 -0400 Subject: [PATCH] Disable freezer during AM provider/service dump This change disables the freezer during ActiveServices.dumpService() and ProviderMap.dumpProvider() in order to avoid 'dumpsys activity ' from timing out during bug reports. Test: Using health/bugreport/capturebugreport, verify that the 'dumpsys activity' sections no longer time out at 60 seconds. Bug: 276451949 (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:353c04e22e6817f3cef2c7540534d899dec50858) Merged-In: I22c5a83e545cfaaab9bfb6f9cae99146c3c51d8c Change-Id: I22c5a83e545cfaaab9bfb6f9cae99146c3c51d8c --- .../com/android/server/am/ActiveServices.java | 67 ++++++++++--------- .../com/android/server/am/ProviderMap.java | 29 ++++---- 2 files changed, 53 insertions(+), 43 deletions(-) diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 7b618b11bd450..17e134bc5f957 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -7222,47 +7222,52 @@ public final class ActiveServices { */ protected boolean dumpService(FileDescriptor fd, PrintWriter pw, String name, int[] users, String[] args, int opti, boolean dumpAll) { - final ArrayList services = new ArrayList<>(); + try { + mAm.mOomAdjuster.mCachedAppOptimizer.enableFreezer(false); + final ArrayList services = new ArrayList<>(); - final Predicate filter = DumpUtils.filterRecord(name); + final Predicate filter = DumpUtils.filterRecord(name); - synchronized (mAm) { - if (users == null) { - users = mAm.mUserController.getUsers(); - } - - for (int user : users) { - ServiceMap smap = mServiceMap.get(user); - if (smap == null) { - continue; + synchronized (mAm) { + if (users == null) { + users = mAm.mUserController.getUsers(); } - ArrayMap alls = smap.mServicesByInstanceName; - for (int i=0; i alls = smap.mServicesByInstanceName; + for (int i=0; i providers = getProvidersForName(name); + try { + mAm.mOomAdjuster.mCachedAppOptimizer.enableFreezer(false); + ArrayList providers = getProvidersForName(name); - if (providers.size() <= 0) { - return false; - } - - boolean needSep = false; - for (int i=0; i