diff options
author | Andreas Gampe <agampe@google.com> | 2019-06-18 12:32:57 -0700 |
---|---|---|
committer | Andreas Gampe <agampe@google.com> | 2019-06-18 12:37:12 -0700 |
commit | f9425d468bd5f2ae59b69206436c46ff93758ad5 (patch) | |
tree | 695775461bfd760aabdbb0b7a10c01a48f83ac0d /tools/lock_agent | |
parent | 93903b798d23e316e10703cbd77f075f33c5fceb (diff) |
LockAgent: Refactor violation data
Start to make violation less opaque to improve more generic handling
in the future.
Test: m
Test: manual
Change-Id: Ic9780590301010798c7fe6df59526e609dc6f93a
Diffstat (limited to 'tools/lock_agent')
-rw-r--r-- | tools/lock_agent/java/com/android/lock_checker/LockHook.java | 27 | ||||
-rw-r--r-- | tools/lock_agent/java/com/android/lock_checker/OnThreadLockChecker.java | 3 |
2 files changed, 20 insertions, 10 deletions
diff --git a/tools/lock_agent/java/com/android/lock_checker/LockHook.java b/tools/lock_agent/java/com/android/lock_checker/LockHook.java index 95b318101316..efab1d217225 100644 --- a/tools/lock_agent/java/com/android/lock_checker/LockHook.java +++ b/tools/lock_agent/java/com/android/lock_checker/LockHook.java @@ -66,7 +66,8 @@ public class LockHook { static final StatLogger sStats = new StatLogger(new String[] { "on-thread", }); - private static final ConcurrentLinkedQueue<Object> sViolations = new ConcurrentLinkedQueue<>(); + private static final ConcurrentLinkedQueue<Violation> sViolations = + new ConcurrentLinkedQueue<>(); private static final int MAX_VIOLATIONS = 50; private static final LockChecker[] sCheckers; @@ -101,8 +102,8 @@ public class LockHook { } } - static void wtf(String message) { - sHandler.wtf(message); + static void wtf(Violation v) { + sHandler.wtf(v); } static void doCheckOnThisThread(boolean check) { @@ -151,10 +152,10 @@ public class LockHook { super(looper); } - public void wtf(String msg) { + public void wtf(Violation v) { sDoCheck.set(false); SomeArgs args = SomeArgs.obtain(); - args.arg1 = msg; + args.arg1 = v; obtainMessage(MSG_WTF, args).sendToTarget(); sDoCheck.set(true); } @@ -164,13 +165,18 @@ public class LockHook { switch (msg.what) { case MSG_WTF: SomeArgs args = (SomeArgs) msg.obj; - Log.wtf(TAG, (String) args.arg1); + handleViolation((Violation) args.arg1); args.recycle(); break; } } } + private static void handleViolation(Violation v) { + String msg = v.toString(); + Log.wtf(TAG, msg); + } + /** * Generates a hash for a given stacktrace of a {@link Throwable}. */ @@ -224,8 +230,10 @@ public class LockHook { } } - static void addViolation(Object o) { - sViolations.offer(o); + static void addViolation(Violation v) { + wtf(v); + + sViolations.offer(v); while (sViolations.size() > MAX_VIOLATIONS) { sViolations.poll(); } @@ -287,4 +295,7 @@ public class LockHook { void dump(PrintWriter pw); } + + interface Violation { + } } diff --git a/tools/lock_agent/java/com/android/lock_checker/OnThreadLockChecker.java b/tools/lock_agent/java/com/android/lock_checker/OnThreadLockChecker.java index 0f3a28598741..e4e721156b2b 100644 --- a/tools/lock_agent/java/com/android/lock_checker/OnThreadLockChecker.java +++ b/tools/lock_agent/java/com/android/lock_checker/OnThreadLockChecker.java @@ -220,7 +220,7 @@ class OnThreadLockChecker implements LockHook.LockChecker { heldLocks.remove(index); } - private static class Violation { + private static class Violation implements LockHook.Violation { int mSelfTid; String mSelfName; Object mAlreadyHeld; @@ -323,7 +323,6 @@ class OnThreadLockChecker implements LockHook.LockChecker { if (LockHook.shouldDumpStacktrace(mStacktraceHasher.get(), mDumpedStacktraceHashes, Boolean.TRUE, v.mStack, 0, to)) { mNumDetectedUnique.incrementAndGet(); - LockHook.wtf(v.toString()); LockHook.addViolation(v); } } |