com/android/lock_checker/OnThreadLockChecker.class
OnThreadLockChecker.java
package com.android.lock_checker
com.android.lock_checker.OnThreadLockChecker extends java.lang.Object implements com.android.lock_checker.LockHook$LockChecker {
private static final String TAG
private static final boolean SKIP_RECURSIVE
private final Thread mChecker
private final java.util.concurrent.atomic.AtomicInteger mNumDetected
private final java.util.concurrent.atomic.AtomicInteger mNumDetectedUnique
private final java.util.concurrent.LinkedBlockingQueue mQueue
private final ThreadLocal mHeldLocks
private final ThreadLocal mStacktraceHasher
private final java.util.concurrent.ConcurrentMap mDumpedStacktraceHashes
private static java.util.concurrent.ConcurrentMap sLockOrderMap
void <init> ()
public void pre (java.lang.Object)
Object lock
public void post (java.lang.Object)
Object lock
private void handlePre (java.lang.Thread, java.lang.Object)
Object alreadyHeld
com.android.lock_checker.OnThreadLockChecker$OrderData oppositeData
int i
Thread self
Object lock
java.util.List heldLocks
dalvik.system.AnnotatedStackTraceElement[] annotatedStack
com.android.lock_checker.OnThreadLockChecker$OrderData orderData
com.android.lock_checker.OnThreadLockChecker$LockPair tmp
int size
private void handlePost (java.lang.Thread, java.lang.Object)
Thread self
Object lock
java.util.List heldLocks
int index
private void postViolation (java.lang.Thread, java.lang.Object, java.lang.Object, dalvik.system.AnnotatedStackTraceElement[], com.android.lock_checker.OnThreadLockChecker$OrderData)
Thread self
Object alreadyHeld
Object lock
dalvik.system.AnnotatedStackTraceElement[] annotatedStack
com.android.lock_checker.OnThreadLockChecker$OrderData oppositeData
private void handleViolation (com.android.lock_checker.OnThreadLockChecker$Violation)
com.android.lock_checker.OnThreadLockChecker$Violation v
int to
private void checker ()
com.android.lock_checker.OnThreadLockChecker$Violation v
InterruptedException e
public int getNumDetected ()
public int getNumDetectedUnique ()
public java.lang.String getCheckerName ()
public void dump (java.io.PrintWriter)
java.io.PrintWriter pw
private synthetic void lambda$new$2 ()
private static synthetic com.android.lock_checker.LockHook$StacktraceHasher lambda$new$1 ()
private static synthetic java.util.List lambda$new$0 ()
static void <clinit> ()
}
com/android/lock_checker/OnThreadLockChecker$Violation.class
OnThreadLockChecker.java
package com.android.lock_checker
com.android.lock_checker.OnThreadLockChecker$Violation extends java.lang.Object implements com.android.lock_checker.LockHook$Violation {
int mSelfTid
String mSelfName
Object mAlreadyHeld
Object mLock
dalvik.system.AnnotatedStackTraceElement[] mStack
com.android.lock_checker.OnThreadLockChecker$OrderData mOppositeData
private static final int STACK_OFFSET
void <init> (java.lang.Thread, java.lang.Object, java.lang.Object, dalvik.system.AnnotatedStackTraceElement[], com.android.lock_checker.OnThreadLockChecker$OrderData)
Thread self
Object alreadyHeld
Object lock
dalvik.system.AnnotatedStackTraceElement[] stack
com.android.lock_checker.OnThreadLockChecker$OrderData oppositeData
private static java.lang.String getAnnotatedStackString (dalvik.system.AnnotatedStackTraceElement[], int, java.lang.String, int, java.lang.String)
Object held
dalvik.system.AnnotatedStackTraceElement element
int i
dalvik.system.AnnotatedStackTraceElement[] stackTrace
int skip
String extra
int prefixAfter
String prefix
StringBuilder sb
private static java.lang.String describeLocking (java.lang.Object, java.lang.String)
Object lock
String action
private static int getTo (dalvik.system.AnnotatedStackTraceElement[], java.lang.Object)
Object heldLock
Object[] locks
int i
dalvik.system.AnnotatedStackTraceElement[] stack
Object searchFor
int to
private static java.lang.String describeLock (java.lang.Object)
Object lock
public java.lang.Throwable getException ()
RuntimeException inner
RuntimeException outer
private java.lang.StackTraceElement[] synthesizeStackTrace (dalvik.system.AnnotatedStackTraceElement[])
int i
dalvik.system.AnnotatedStackTraceElement[] stack
StackTraceElement[] out
public java.lang.String toString ()
StringBuilder sb
}
com/android/lock_checker/OnThreadLockChecker$OrderData.class
OnThreadLockChecker.java
package com.android.lock_checker
com.android.lock_checker.OnThreadLockChecker$OrderData extends java.lang.Object {
final int mTid
final String mThreadName
final dalvik.system.AnnotatedStackTraceElement[] mStack
void <init> (int, java.lang.String, dalvik.system.AnnotatedStackTraceElement[])
int tid
String threadName
dalvik.system.AnnotatedStackTraceElement[] stack
}
com/android/lock_checker/OnThreadLockChecker$LockPair.class
OnThreadLockChecker.java
package com.android.lock_checker
com.android.lock_checker.OnThreadLockChecker$LockPair extends java.lang.Object {
Object mFirst
Object mSecond
private int mCachedHashCode
void <init> (java.lang.Object, java.lang.Object)
Object first
Object second
public void set (java.lang.Object, java.lang.Object)
Object newFirst
Object newSecond
private void computeHashCode ()
int prime
int result
public int hashCode ()
public boolean equals (java.lang.Object)
Object obj
com.android.lock_checker.OnThreadLockChecker$LockPair other
}
com/android/lock_checker/LockHook.class
LockHook.java
package com.android.lock_checker
public com.android.lock_checker.LockHook extends java.lang.Object {
private static final String TAG
private static final java.nio.charset.Charset sFilenameCharset
private static final android.os.HandlerThread sHandlerThread
private static final com.android.lock_checker.LockHook$WtfHandler sHandler
private static final java.util.concurrent.atomic.AtomicInteger sTotalObtainCount
private static final java.util.concurrent.atomic.AtomicInteger sTotalReleaseCount
private static final java.util.concurrent.atomic.AtomicInteger sDeepestNest
private static final ThreadLocal sDoCheck
static final com.android.internal.util.StatLogger sStats
private static final java.util.concurrent.ConcurrentLinkedQueue sViolations
private static final int MAX_VIOLATIONS
private static final com.android.lock_checker.LockHook$LockChecker[] sCheckers
private static boolean sNativeHandling
private static boolean sSimulateCrash
public void <init> ()
private static native boolean getNativeHandlingConfig ()
private static native boolean getSimulateCrashConfig ()
static boolean shouldDumpStacktrace (com.android.lock_checker.LockHook$StacktraceHasher, java.util.Map, java.lang.Object, dalvik.system.AnnotatedStackTraceElement[], int, int)
com.android.lock_checker.LockHook$StacktraceHasher hasher
java.util.Map dumpedSet
Object val
dalvik.system.AnnotatedStackTraceElement[] st
int from
int to
String stacktraceHash
static void updateDeepestNest (int)
int knownDeepest
int nest
static void wtf (com.android.lock_checker.LockHook$Violation)
com.android.lock_checker.LockHook$Violation v
static void doCheckOnThisThread (boolean)
boolean check
public static void preLock (java.lang.Object)
com.android.lock_checker.LockHook$LockChecker checker
Object lock
public static void postLock (java.lang.Object)
com.android.lock_checker.LockHook$LockChecker checker
Object lock
private static void handleViolation (com.android.lock_checker.LockHook$Violation)
com.android.lock_checker.LockHook$Violation v
String msg
private static native void nWtf (java.lang.String)
static void addViolation (com.android.lock_checker.LockHook$Violation)
com.android.lock_checker.LockHook$Violation v
public static void dump (java.io.PrintWriter, java.lang.String)
com.android.lock_checker.LockHook$LockChecker checker
Object v
java.io.PrintWriter pw
String indent
int oc
int rc
int dn
public static void dump ()
java.io.PrintWriter out
private static synthetic java.lang.Boolean lambda$static$0 ()
static void <clinit> ()
}
com/android/lock_checker/LockHook$WtfHandler.class
LockHook.java
package com.android.lock_checker
com.android.lock_checker.LockHook$WtfHandler extends android.os.Handler {
private static final int MSG_WTF
void <init> (android.os.Looper)
android.os.Looper looper
public void wtf (com.android.lock_checker.LockHook$Violation)
com.android.lock_checker.LockHook$Violation v
com.android.internal.os.SomeArgs args
public void handleMessage (android.os.Message)
com.android.internal.os.SomeArgs args
android.os.Message msg
}
com/android/lock_checker/LockHook$Violation.class
LockHook.java
package com.android.lock_checker
abstract com.android.lock_checker.LockHook$Violation extends java.lang.Object {
public abstract java.lang.Throwable getException ()
}
com/android/lock_checker/LockHook$Stats.class
LockHook.java
package com.android.lock_checker
abstract com.android.lock_checker.LockHook$Stats extends java.lang.Object {
public static final int ON_THREAD
}
com/android/lock_checker/LockHook$StacktraceHasher.class
LockHook.java
package com.android.lock_checker
com.android.lock_checker.LockHook$StacktraceHasher extends java.lang.Object {
private byte[] mLineNumberBuffer
private final java.security.MessageDigest mHash
void <init> ()
java.security.NoSuchAlgorithmException e
public java.lang.String stacktraceHash (java.lang.Throwable)
StackTraceElement e
Throwable t
public java.lang.String stacktraceHash (dalvik.system.AnnotatedStackTraceElement[], int, int)
int i
dalvik.system.AnnotatedStackTraceElement[] annotatedStack
int from
int to
private void hashStackTraceElement (java.lang.StackTraceElement)
StackTraceElement e
int line
}
com/android/lock_checker/LockHook$LockChecker.class
LockHook.java
package com.android.lock_checker
abstract com.android.lock_checker.LockHook$LockChecker extends java.lang.Object {
public abstract void pre (java.lang.Object)
public abstract void post (java.lang.Object)
public abstract int getNumDetected ()
public abstract int getNumDetectedUnique ()
public abstract java.lang.String getCheckerName ()
public abstract void dump (java.io.PrintWriter)
}
com/android/lock_checker/
com/android/
com/
META-INF/MANIFEST.MF
META-INF/