diff options
| author | 2022-09-07 17:07:18 +0000 | |
|---|---|---|
| committer | 2022-09-07 17:07:18 +0000 | |
| commit | f19305b7c844985406d77d6076931d60e106bb4b (patch) | |
| tree | f634bb3e4be372de550e556791b0e0068ceb1625 | |
| parent | 9956179212ad7a1fb078eb613d4d1d84b9a198ce (diff) | |
| parent | 40ab17b0ee0bf0136c77f32863d6f194218c5372 (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.java | 21 |
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:"); } |