Need help in reading anr traces file
<p>I need some help in understanding the /data/anr/traces.txt.</p>

<ol>
<li>since a ANR dialog will pop up when the main thread is hang. Do I only need to create if the main thread of the app is waiting for a lock or something? i.e. all others thread can be locked up without causing an ANR dialog. Is that correct?</li>
</ol>

<p>In below, why thread 'pool-1-thread-1' is waiting for a log held by itself?</p>

<pre><code>    "pool-1-thread-1" prio=5 tid=11 WAIT
  | group="main" sCount=1 dsCount=0 obj=0x413dc610 self=0x61d188
  | sysTid=1101 nice=0 sched=0/0 cgrp=default handle=6436792
  | schedstat=( 0 0 0 ) utm=2 stm=1 core=1
  at java.lang.Object.wait(Native Method)
  - waiting on &lt;0x413dc758&gt; (a java.lang.VMThread) held by tid=11 (pool-1-thread-1)
  at java.lang.Thread.parkFor(Thread.java:1231)
</code></pre>

<p>Here is the full trace:</p>

<pre><code>Cmd line: com.myapp.mytest

DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0)
"main" prio=5 tid=1 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x40aba460 self=0x46c830
  | sysTid=1071 nice=0 sched=0/0 cgrp=default handle=1074443400
  | schedstat=( 0 0 0 ) utm=10562 stm=4445 core=1
  at android.view.GLES20Canvas.nDrawDisplayList(Native Method)
  at android.view.GLES20Canvas.drawDisplayList(GLES20Canvas.java:363)
  at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:844)
  at android.view.ViewRootImpl.draw(ViewRootImpl.java:1910)
  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1634)
  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:137)
  at android.app.ActivityThread.main(ActivityThread.java:4424)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:511)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
  at dalvik.system.NativeStart.main(Native Method)

"Thread-149" prio=5 tid=15 WAIT
  | group="main" sCount=1 dsCount=0 obj=0x41c17b58 self=0x6022d0
  | sysTid=2528 nice=0 sched=0/0 cgrp=default handle=7936848
  | schedstat=( 0 0 0 ) utm=54 stm=4 core=0
  at java.lang.Object.wait(Native Method)
  - waiting on &lt;0x41c17b58&gt; (a com.test.app.Myapp$ImageSaver)
  at java.lang.Object.wait(Object.java:364)
  at com.test.app.Myapp$ImageSaver.run(Myapp.java:927)

"android.hardware.SensorManager$SensorThread" prio=5 tid=12 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x413fd8d8 self=0x783870
  | sysTid=2450 nice=-8 sched=0/0 cgrp=default handle=7879872
  | schedstat=( 0 0 0 ) utm=32 stm=0 core=0
  at android.hardware.SensorManager.sensors_data_poll(Native Method)
  at android.hardware.SensorManager$SensorThread$SensorThreadRunnable.run(SensorManager.java:498)
  at java.lang.Thread.run(Thread.java:856)

"Binder Thread #5" prio=5 tid=17 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x41c3cd60 self=0x668858
  | sysTid=2268 nice=0 sched=0/0 cgrp=default handle=6976952
  | schedstat=( 0 0 0 ) utm=53 stm=21 core=1
  at dalvik.system.NativeStart.run(Native Method)

"Binder Thread #4" prio=5 tid=16 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x413b69b0 self=0x6dfb60
  | sysTid=1682 nice=0 sched=0/0 cgrp=default handle=6241896
  | schedstat=( 0 0 0 ) utm=193 stm=70 core=0
  at dalvik.system.NativeStart.run(Native Method)

"Binder Thread #3" prio=5 tid=14 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x41c38748 self=0x6dd9d0
  | sysTid=1412 nice=0 sched=0/0 cgrp=default handle=7086536
  | schedstat=( 0 0 0 ) utm=418 stm=167 core=0
  at dalvik.system.NativeStart.run(Native Method)

"MyappHolder" prio=5 tid=13 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x413e5eb0 self=0x625788
  | sysTid=1104 nice=0 sched=0/0 cgrp=default handle=6238512
  | schedstat=( 0 0 0 ) utm=0 stm=0 core=1
  at android.os.MessageQueue.nativePollOnce(Native Method)
  at android.os.MessageQueue.next(MessageQueue.java:118)
  at android.os.Looper.loop(Looper.java:118)
  at android.os.HandlerThread.run(HandlerThread.java:60)

"pool-1-thread-1" prio=5 tid=11 WAIT
  | group="main" sCount=1 dsCount=0 obj=0x413dc610 self=0x61d188
  | sysTid=1101 nice=0 sched=0/0 cgrp=default handle=6436792
  | schedstat=( 0 0 0 ) utm=2 stm=1 core=1
  at java.lang.Object.wait(Native Method)
  - waiting on &lt;0x413dc758&gt; (a java.lang.VMThread) held by tid=11 (pool-1-thread-1)
  at java.lang.Thread.parkFor(Thread.java:1231)
  at sun.misc.Unsafe.park(Unsafe.java:323)
  at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157)
  at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2022)
  at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
  at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1009)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1069)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
  at java.lang.Thread.run(Thread.java:856)

"Binder Thread #2" prio=5 tid=10 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x413972f8 self=0x639490
  | sysTid=1084 nice=0 sched=0/0 cgrp=default handle=6115976
  | schedstat=( 0 0 0 ) utm=462 stm=152 core=0
  at dalvik.system.NativeStart.run(Native Method)

"Binder Thread #1" prio=5 tid=9 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x41396b08 self=0x62c768
  | sysTid=1083 nice=0 sched=0/0 cgrp=default handle=5836056
  | schedstat=( 0 0 0 ) utm=437 stm=172 core=1
  at dalvik.system.NativeStart.run(Native Method)

"FinalizerWatchdogDaemon" daemon prio=5 tid=8 TIMED_WAIT
  | group="main" sCount=1 dsCount=0 obj=0x41393778 self=0x634738
  | sysTid=1082 nice=0 sched=0/0 cgrp=default handle=6104608
  | schedstat=( 0 0 0 ) utm=0 stm=0 core=0
  at java.lang.VMThread.sleep(Native Method)
  at java.lang.Thread.sleep(Thread.java:1031)
  at java.lang.Thread.sleep(Thread.java:1013)
  at java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:213)
  at java.lang.Thread.run(Thread.java:856)

"FinalizerDaemon" daemon prio=5 tid=7 WAIT
  | group="main" sCount=1 dsCount=0 obj=0x41393620 self=0x585028
  | sysTid=1081 nice=0 sched=0/0 cgrp=default handle=5895888
  | schedstat=( 0 0 0 ) utm=33 stm=7 core=1
  at java.lang.Object.wait(Native Method)
  - waiting on &lt;0x40ab05d0&gt; (a java.lang.ref.ReferenceQueue)
  at java.lang.Object.wait(Object.java:401)
  at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:102)
  at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:73)
  at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)
  at java.lang.Thread.run(Thread.java:856)

"ReferenceQueueDaemon" daemon prio=5 tid=6 WAIT
  | group="main" sCount=1 dsCount=0 obj=0x413934b8 self=0x623f98
  | sysTid=1080 nice=0 sched=0/0 cgrp=default handle=6113728
  | schedstat=( 0 0 0 ) utm=3 stm=6 core=1
  at java.lang.Object.wait(Native Method)
  - waiting on &lt;0x40ab04f8&gt; 
  at java.lang.Object.wait(Object.java:364)
  at java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:128)
  at java.lang.Thread.run(Thread.java:856)

"Compiler" daemon prio=5 tid=5 VMWAIT
  | group="system" sCount=1 dsCount=0 obj=0x413933c8 self=0x63d7b0
  | sysTid=1079 nice=0 sched=0/0 cgrp=default handle=6130920
  | schedstat=( 0 0 0 ) utm=74 stm=67 core=1
  at dalvik.system.NativeStart.run(Native Method)

"JDWP" daemon prio=5 tid=4 VMWAIT
  | group="system" sCount=1 dsCount=0 obj=0x413932e0 self=0x629bb8
  | sysTid=1078 nice=0 sched=0/0 cgrp=default handle=5185376
  | schedstat=( 0 0 0 ) utm=0 stm=0 core=1
  at dalvik.system.NativeStart.run(Native Method)

"Signal Catcher" daemon prio=5 tid=3 RUNNABLE
  | group="system" sCount=0 dsCount=0 obj=0x413931e8 self=0x60a390
  | sysTid=1077 nice=0 sched=0/0 cgrp=default handle=5970048
  | schedstat=( 0 0 0 ) utm=0 stm=0 core=1
  at dalvik.system.NativeStart.run(Native Method)

"GC" daemon prio=5 tid=2 VMWAIT
  | group="system" sCount=1 dsCount=0 obj=0x41393108 self=0x5e7cc0
  | sysTid=1076 nice=0 sched=0/0 cgrp=default handle=5213928
  | schedstat=( 0 0 0 ) utm=1461 stm=82 core=1
  at dalvik.system.NativeStart.run(Native Method)
</code></pre>
