summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Pinyao Ting <pinyaoting@google.com> 2022-09-07 17:07:18 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2022-09-07 17:07:18 +0000
commitf19305b7c844985406d77d6076931d60e106bb4b (patch)
treef634bb3e4be372de550e556791b0e0068ceb1625
parent9956179212ad7a1fb078eb613d4d1d84b9a198ce (diff)
parent40ab17b0ee0bf0136c77f32863d6f194218c5372 (diff)
Merge "Fixes an edge case which leads to deadlock in ShortcutService" into tm-qpr-dev am: 40ab17b0ee
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19815919 Change-Id: Ib7acce47bc88c5e0484f07257618a13f53a517f4 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--services/core/java/com/android/server/pm/ShortcutService.java21
1 files changed, 12 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
index f2bcf5e461a7..0b20683185f0 100644
--- a/services/core/java/com/android/server/pm/ShortcutService.java
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
@@ -280,6 +280,7 @@ public class ShortcutService extends IShortcutService.Stub {
private final Object mLock = new Object();
private final Object mNonPersistentUsersLock = new Object();
+ private final Object mWtfLock = new Object();
private static List<ResolveInfo> EMPTY_RESOLVE_INFO = new ArrayList<>(0);
@@ -444,10 +445,10 @@ public class ShortcutService extends IShortcutService.Stub {
@interface ShortcutOperation {
}
- @GuardedBy("mLock")
+ @GuardedBy("mWtfLock")
private int mWtfCount = 0;
- @GuardedBy("mLock")
+ @GuardedBy("mWtfLock")
private Exception mLastWtfStacktrace;
@GuardedBy("mLock")
@@ -4727,13 +4728,15 @@ public class ShortcutService extends IShortcutService.Stub {
mStatLogger.dump(pw, " ");
- pw.println();
- pw.print(" #Failures: ");
- pw.println(mWtfCount);
+ synchronized (mWtfLock) {
+ pw.println();
+ pw.print(" #Failures: ");
+ pw.println(mWtfCount);
- if (mLastWtfStacktrace != null) {
- pw.print(" Last failure stack trace: ");
- pw.println(Log.getStackTraceString(mLastWtfStacktrace));
+ if (mLastWtfStacktrace != null) {
+ pw.print(" Last failure stack trace: ");
+ pw.println(Log.getStackTraceString(mLastWtfStacktrace));
+ }
}
pw.println();
@@ -5148,7 +5151,7 @@ public class ShortcutService extends IShortcutService.Stub {
if (e == null) {
e = new RuntimeException("Stacktrace");
}
- synchronized (mLock) {
+ synchronized (mWtfLock) {
mWtfCount++;
mLastWtfStacktrace = new Exception("Last failure was logged here:");
}