From 9ce0a7c2f0f16e280bcbeaf6e3433bc75bcf82e2 Mon Sep 17 00:00:00 2001 From: Zim Date: Wed, 4 Mar 2020 07:34:27 +0000 Subject: [PATCH] Dump the FUSE daemons stacks during ANRs The FUSE daemons hosted in the MediaProvider processes are very critical to device health. Note that there is one FUSE daemon per Androd user. Vold has a strong dependency on them when mounting volumes and bugs in the daemons can cause vold to wedge, leading to watchdog triggered runtime restarts. We now add any processes running as the process name of the MediaStore.AUTHORITY to the list of 'interesting' Java processes to dump stacks for from Watchdog. Test: Manually triggered watchdog event dumps FUSE daemon process Bug: 149970494 Bug: 150525627 Change-Id: I3d6e52f8dad08c2ee5d520274f9a9f522f5ab9d3 --- .../core/java/com/android/server/StorageManagerService.java | 3 +++ services/core/java/com/android/server/Watchdog.java | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index 57c6e5b876b15..b7d050a25484c 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -335,6 +335,8 @@ class StorageManagerService extends IStorageManager.Stub Manifest.permission.WRITE_EXTERNAL_STORAGE }; + @Nullable public static String sMediaStoreAuthorityProcessName; + private final AtomicFile mSettingsFile; /** @@ -1840,6 +1842,7 @@ class StorageManagerService extends IStorageManager.Stub UserHandle.getUserId(UserHandle.USER_SYSTEM)); if (provider != null) { mMediaStoreAuthorityAppId = UserHandle.getAppId(provider.applicationInfo.uid); + sMediaStoreAuthorityProcessName = provider.applicationInfo.processName; } provider = mPmInternal.resolveContentProvider( diff --git a/services/core/java/com/android/server/Watchdog.java b/services/core/java/com/android/server/Watchdog.java index 72ed733a9b1b2..4282ba84c4d98 100644 --- a/services/core/java/com/android/server/Watchdog.java +++ b/services/core/java/com/android/server/Watchdog.java @@ -361,7 +361,8 @@ public class Watchdog extends Thread { } private static boolean isInterestingJavaProcess(String processName) { - return processName.equals("com.android.phone"); + return processName.equals(StorageManagerService.sMediaStoreAuthorityProcessName) + || processName.equals("com.android.phone"); } /**