我们的应用程序有时会在设备前景很长一段时间后与ANR锁定,比如过夜。该应用程序启动,但只显示黑屏。 Back和home按钮在按下后大约10秒钟才会响应。
以严格模式运行应用程序,不会突出显示任何问题。所有网络活动和长时间运行的任务都在后台线程上完成。
查看我们应用程序的跟踪文件,我无法识别“主”线程,因此我无法诊断锁定UI的内容。
This question听起来像是相同的症状,但我们的应用程序不使用违规库:JmDNS。
----- pid 21220 at 2013-11-26 08:32:09 -----
Cmd line: com.mygreatapp.reptile
DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0)
"java.lang.ProcessManager" daemon prio=5 tid=11 WAIT
| group="main" sCount=1 dsCount=0 obj=0x4242b590 self=0x60d506f0
| sysTid=21305 nice=0 sched=0/0 cgrp=apps handle=1626388752
| schedstat=( 1686960 1679167 34 ) utm=0 stm=0 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x42413810> (a java.util.HashMap)
at java.lang.Object.wait(Object.java:364)
at java.lang.ProcessManager.waitForMoreChildren(ProcessManager.java:140)
at java.lang.ProcessManager.watchChildren(ProcessManager.java:105)
at java.lang.ProcessManager.access$000(ProcessManager.java:40)
at java.lang.ProcessManager$1.run(ProcessManager.java:58)
"Thread-30992" prio=5 tid=1 VMWAIT
| group="main" sCount=1 dsCount=0 obj=0x4528c3f8 self=0x60f0e488
| sysTid=21220 nice=0 sched=0/0 cgrp=apps handle=1074544432
| schedstat=( 500594685618 30706953168 460765 ) utm=44353 stm=5705 core=3
#00 pc 0000dca0 /system/lib/libc.so (__futex_syscall3+8)
#01 pc 00012e44 /system/lib/libc.so (__pthread_cond_timedwait_relative+48)
#02 pc 00012ea0 /system/lib/libc.so (__pthread_cond_timedwait+60)
#03 pc 0004a1af /system/lib/libdvm.so
#04 pc 0003a4a1 /system/lib/libdvm.so
#05 pc 0004d585 /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+452)
#06 pc 00000dcf /system/bin/app_process
#07 pc 00017123 /system/lib/libc.so (__libc_init+38)
#08 pc 00000b34 /system/bin/app_process
at dalvik.system.NativeStart.run(Native Method)
"pool-4-thread-1" prio=5 tid=15 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41e20c58 self=0x410e1520
| sysTid=21281 nice=0 sched=0/0 cgrp=apps handle=1089112720
| schedstat=( 102424840 33825634 517 ) utm=6 stm=3 core=3
at java.lang.Object.wait(Native Method)
- waiting on <0x41cc4b30> (a java.lang.VMThread) held by tid=15 (pool-4-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)
"Thread-30976" prio=5 tid=29 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41e407c8 self=0x60b1cdf0
| sysTid=21279 nice=0 sched=0/0 cgrp=apps handle=1466754424
| schedstat=( 22878231471 2961981162 8385 ) utm=2103 stm=184 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x41d189a8> (a java.lang.VMThread) held by tid=29 (Thread-30976)
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 crittercism.android.cq.a((null):-1)
at crittercism.android.cv.run((null):-1)
at java.lang.Thread.run(Thread.java:856)
"android.hardware.SystemSensorManager$SensorThread" prio=5 tid=28 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x41f7d9c8 self=0x60b5f5d0
| sysTid=21277 nice=-8 sched=0/0 cgrp=apps handle=1466031464
| schedstat=( 629417858 226101457 2481 ) utm=62 stm=0 core=0
#00 pc 0000da70 /system/lib/libc.so (epoll_wait+12)
#01 pc 00014899 /system/lib/libutils.so (android::Looper::pollInner(int)+96)
#02 pc 00014b01 /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+104)
#03 pc 00023f5d /system/lib/libgui.so (android::SensorEventQueue::waitForEvent() const+36)
#04 pc 0007e085 /system/lib/libandroid_runtime.so
#05 pc 0001def0 /system/lib/libdvm.so (dvmPlatformInvoke+112)
#06 pc 0004d14b /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+394)
#07 pc 00000214 /dev/ashmem/dalvik-jit-code-cache (deleted)
at android.hardware.SystemSensorManager.sensors_data_poll(Native Method)
at android.hardware.SystemSensorManager$SensorThread$SensorThreadRunnable.run(SystemSensorManager.java:133)
at java.lang.Thread.run(Thread.java:856)
"Binder_4" prio=5 tid=26 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x41cedae0 self=0x58c98ec0
| sysTid=21272 nice=0 sched=0/0 cgrp=apps handle=1488945728
| schedstat=( 701164079 37010713 402 ) utm=66 stm=4 core=0
#00 pc 0000cb90 /system/lib/libc.so (__ioctl+8)
#01 pc 00027fcd /system/lib/libc.so (ioctl+16)
#02 pc 00016bfd /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+124)
#03 pc 000173af /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+154)
#04 pc 0001b171 /system/lib/libbinder.so
#05 pc 0001104f /system/lib/libutils.so (android::Thread::_threadLoop(void*)+114)
#06 pc 0004ba7b /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+66)
#07 pc 00010bb5 /system/lib/libutils.so
#08 pc 00012e00 /system/lib/libc.so (__thread_entry+48)
#09 pc 00012558 /system/lib/libc.so (pthread_create+172)
at dalvik.system.NativeStart.run(Native Method)
"Binder_3" prio=5 tid=25 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x41cfbe58 self=0x58ca4e68
| sysTid=21271 nice=0 sched=0/0 cgrp=apps handle=1485257944
| schedstat=( 29564295 25159912 195 ) utm=1 stm=1 core=0
#00 pc 0000cb90 /system/lib/libc.so (__ioctl+8)
#01 pc 00027fcd /system/lib/libc.so (ioctl+16)
#02 pc 00016bfd /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+124)
#03 pc 000173af /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+154)
#04 pc 0001b171 /system/lib/libbinder.so
#05 pc 0001104f /system/lib/libutils.so (android::Thread::_threadLoop(void*)+114)
#06 pc 0004ba7b /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+66)
#07 pc 00010bb5 /system/lib/libutils.so
#08 pc 00012e00 /system/lib/libc.so (__thread_entry+48)
#09 pc 00012558 /system/lib/libc.so (pthread_create+172)
at dalvik.system.NativeStart.run(Native Method)
"AsyncTask #5" prio=5 tid=24 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41cf26f0 self=0x57682458
| sysTid=21266 nice=10 sched=0/0 cgrp=apps/bg_non_interactive handle=1464170168
| schedstat=( 135820845754 105683034246 2907951 ) utm=10204 stm=3378 core=2
at java.lang.Object.wait(Native Method)
- waiting on <0x41d1d280> (a java.lang.VMThread) held by tid=24 (AsyncTask #5)
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)
"AsyncTask #4" prio=5 tid=23 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41edc388 self=0x57682008
| sysTid=21265 nice=10 sched=0/0 cgrp=apps/bg_non_interactive handle=1465817672
| schedstat=( 132577127701 105107036747 2873808 ) utm=9956 stm=3301 core=2
at java.lang.Object.wait(Native Method)
- waiting on <0x41c8dbe0> (a java.lang.VMThread) held by tid=23 (AsyncTask #4)
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)
"RefQueueWorker@org.apache.http.impl.conn.tsccm.ConnPoolByRoute@41eff7c8" daemon prio=5 tid=22 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41e2ac40 self=0x576129a8
| sysTid=21262 nice=0 sched=0/0 cgrp=apps handle=1465983376
| schedstat=( 211376 507582 7 ) utm=0 stm=0 core=2
at java.lang.Object.wait(Native Method)
- waiting on <0x41f00830> (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 org.apache.http.impl.conn.tsccm.RefQueueWorker.run(RefQueueWorker.java:102)
at java.lang.Thread.run(Thread.java:856)
"AsyncTask #3" prio=5 tid=21 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41ea3cd8 self=0x40e8a150
| sysTid=21261 nice=10 sched=0/0 cgrp=apps/bg_non_interactive handle=1088988576
| schedstat=( 147758360521 113209347880 3132414 ) utm=11120 stm=3655 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x41eb3510> (a java.lang.VMThread) held by tid=21 (AsyncTask #3)
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.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:813)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:973)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1282)
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:207)
at roboguice.util.SafeAsyncTask$Task.postToUiThreadAndWait(SafeAsyncTask.java:285)
at roboguice.util.SafeAsyncTask$Task.doFinally(SafeAsyncTask.java:248)
at roboguice.util.SafeAsyncTask$Task.call(SafeAsyncTask.java:188)
at roboguice.util.SafeAsyncTask$Task.call(SafeAsyncTask.java:158)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
"AsyncTask #2" prio=5 tid=20 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41f6d6c0 self=0x57600af0
| sysTid=21260 nice=10 sched=0/0 cgrp=apps/bg_non_interactive handle=1465924288
| schedstat=( 137061046899 106138943361 2940968 ) utm=10317 stm=3388 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x41f6d990> (a java.lang.VMThread) held by tid=20 (AsyncTask #2)
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)
"pool-3-thread-1" prio=5 tid=19 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41ec84e8 self=0x57600688
| sysTid=21259 nice=0 sched=0/0 cgrp=apps handle=1089548880
| schedstat=( 333892046105 50531397520 395232 ) utm=24001 stm=9387 core=3
at java.lang.Object.wait(Native Method)
- waiting on <0x41cd3cb0> (a java.lang.VMThread) held by tid=19 (pool-3-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)
"AsyncTask #1" prio=5 tid=18 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41e43190 self=0x57600238
| sysTid=21258 nice=10 sched=0/0 cgrp=apps/bg_non_interactive handle=1093436480
| schedstat=( 122133361244 94201913504 2662437 ) utm=9133 stm=3079 core=3
at java.lang.Object.wait(Native Method)
- waiting on <0x41e93b30> (a java.lang.VMThread) held by tid=18 (AsyncTask #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)
"pool-1-thread-1" prio=5 tid=17 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41d8d558 self=0x40018928
| sysTid=21257 nice=0 sched=0/0 cgrp=apps handle=1073843576
| schedstat=( 538748652 44112875 1633 ) utm=30 stm=23 core=2
at java.lang.Object.wait(Native Method)
- waiting on <0x41d958b8> (a java.lang.VMThread) held by tid=17 (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)
"com.google.inject.internal.util.$Finalizer" daemon prio=5 tid=14 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41d82388 self=0x40ea8430
| sysTid=21248 nice=0 sched=0/0 cgrp=apps handle=1089147888
| schedstat=( 135958 26125 2 ) utm=0 stm=0 core=2
at java.lang.Object.wait(Native Method)
- waiting on <0x41d824a8> (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 com.google.inject.internal.util.$Finalizer.run(Finalizer.java:114)
"OPTMZ" prio=5 tid=12 WAIT
| group="main" sCount=1 dsCount=0 obj=0x41ce5b60 self=0x40f1c8c8
| sysTid=21243 nice=0 sched=0/0 cgrp=apps handle=1089677856
| schedstat=( 241167 3985041 22 ) utm=0 stm=0 core=1
at java.lang.Object.wait(Native Method)
- waiting on <0x41ce5530> (a android.os.ConditionVariable)
at java.lang.Object.wait(Object.java:364)
at android.os.ConditionVariable.block(ConditionVariable.java:97)
at crittercism.android.f.run((null):-1)
at crittercism.android.cq.a((null):-1)
at crittercism.android.cv.run((null):-1)
at java.lang.Thread.run(Thread.java:856)
"Binder_2" prio=5 tid=10 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x41c97448 self=0x40f17500
| sysTid=21232 nice=0 sched=0/0 cgrp=apps handle=1089092880
| schedstat=( 35924382 39652369 228 ) utm=1 stm=2 core=0
#00 pc 0000cb90 /system/lib/libc.so (__ioctl+8)
#01 pc 00027fcd /system/lib/libc.so (ioctl+16)
#02 pc 00016bfd /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+124)
#03 pc 000173af /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+154)
#04 pc 0001b171 /system/lib/libbinder.so
#05 pc 0001104f /system/lib/libutils.so (android::Thread::_threadLoop(void*)+114)
#06 pc 0004ba7b /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+66)
#07 pc 00010bb5 /system/lib/libutils.so
#08 pc 00012e00 /system/lib/libc.so (__thread_entry+48)
#09 pc 00012558 /system/lib/libc.so (pthread_create+172)
at dalvik.system.NativeStart.run(Native Method)
"Binder_1" prio=5 tid=9 NATIVE
| group="main" sCount=1 dsCount=0 obj=0x41c971b8 self=0x40eb0008
| sysTid=21231 nice=0 sched=0/0 cgrp=apps handle=1088983768
| schedstat=( 41858044 25543380 342 ) utm=2 stm=2 core=0
#00 pc 0000cb90 /system/lib/libc.so (__ioctl+8)
#01 pc 00027fcd /system/lib/libc.so (ioctl+16)
#02 pc 00016bfd /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+124)
#03 pc 000173af /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+154)
#04 pc 0001b171 /system/lib/libbinder.so
#05 pc 0001104f /system/lib/libutils.so (android::Thread::_threadLoop(void*)+114)
#06 pc 0004ba7b /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+66)
#07 pc 00010bb5 /system/lib/libutils.so
#08 pc 00012e00 /system/lib/libc.so (__thread_entry+48)
#09 pc 00012558 /system/lib/libc.so (pthread_create+172)
at dalvik.system.NativeStart.run(Native Method)
"FinalizerWatchdogDaemon" daemon prio=5 tid=8 WAIT
| group="system" sCount=1 dsCount=0 obj=0x41c94180 self=0x40e096f0
| sysTid=21230 nice=0 sched=0/0 cgrp=apps handle=1089149536
| schedstat=( 193951857 409607638 3031 ) utm=8 stm=10 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x41311cf8> (a java.lang.Daemons$FinalizerWatchdogDaemon)
at java.lang.Object.wait(Object.java:364)
at java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:214)
at java.lang.Thread.run(Thread.java:856)
"FinalizerDaemon" daemon prio=5 tid=7 WAIT
| group="system" sCount=1 dsCount=0 obj=0x41c93fd0 self=0x40ea38c0
| sysTid=21229 nice=0 sched=0/0 cgrp=apps handle=1074231352
| schedstat=( 2874811820 653275129 6681 ) utm=224 stm=62 core=3
at java.lang.Object.wait(Native Method)
- waiting on <0x413005d0> (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:169)
at java.lang.Thread.run(Thread.java:856)
"ReferenceQueueDaemon" daemon prio=5 tid=6 WAIT
| group="system" sCount=1 dsCount=0 obj=0x41c93e68 self=0x40ea78a8
| sysTid=21228 nice=0 sched=0/0 cgrp=apps handle=1089109240
| schedstat=( 579457779 268872517 10279 ) utm=44 stm=13 core=0
at java.lang.Object.wait(Native Method)
- waiting on <0x413004f8>
at java.lang.Object.wait(Object.java:364)
at java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:129)
at java.lang.Thread.run(Thread.java:856)
"Compiler" daemon prio=5 tid=5 VMWAIT
| group="system" sCount=1 dsCount=0 obj=0x41c93d78 self=0x40ed3568
| sysTid=21227 nice=0 sched=0/0 cgrp=apps handle=1089689680
| schedstat=( 13840664945 2175691525 62372 ) utm=829 stm=555 core=3
#00 pc 0000dca0 /system/lib/libc.so (__futex_syscall3+8)
#01 pc 00012e44 /system/lib/libc.so (__pthread_cond_timedwait_relative+48)
#02 pc 00012ea0 /system/lib/libc.so (__pthread_cond_timedwait+60)
#03 pc 0006f955 /system/lib/libdvm.so
#04 pc 00053b8f /system/lib/libdvm.so
#05 pc 00012e00 /system/lib/libc.so (__thread_entry+48)
#06 pc 00012558 /system/lib/libc.so (pthread_create+172)
at dalvik.system.NativeStart.run(Native Method)
"JDWP" daemon prio=5 tid=4 VMWAIT
| group="system" sCount=1 dsCount=0 obj=0x41c93c90 self=0x40dcf718
| sysTid=21226 nice=0 sched=0/0 cgrp=apps handle=1087520184
| schedstat=( 164604246 215945407 747 ) utm=14 stm=1 core=1
#00 pc 0000d758 /system/lib/libc.so (recvmsg+8)
#01 pc 00060383 /system/lib/libdvm.so
#02 pc 00060581 /system/lib/libdvm.so
#03 pc 0006327b /system/lib/libdvm.so
#04 pc 00053b8f /system/lib/libdvm.so
#05 pc 00012e00 /system/lib/libc.so (__thread_entry+48)
#06 pc 00012558 /system/lib/libc.so (pthread_create+172)
at dalvik.system.NativeStart.run(Native Method)
"Signal Catcher" daemon prio=5 tid=3 RUNNABLE
| group="system" sCount=0 dsCount=0 obj=0x41c93b98 self=0x40f01ca8
| sysTid=21224 nice=0 sched=0/0 cgrp=apps handle=1089261720
| schedstat=( 89234254 24155125 31 ) utm=4 stm=4 core=0
at dalvik.system.NativeStart.run(Native Method)
"GC" daemon prio=5 tid=2 VMWAIT
| group="system" sCount=1 dsCount=0 obj=0x41c93ab8 self=0x410cfde0
| sysTid=21222 nice=0 sched=0/0 cgrp=apps handle=1464184336
| schedstat=( 75670018971 4421244466 25704 ) utm=7432 stm=135 core=3
#00 pc 0000dca0 /system/lib/libc.so (__futex_syscall3+8)
#01 pc 00012e44 /system/lib/libc.so (__pthread_cond_timedwait_relative+48)
#02 pc 00012ea0 /system/lib/libc.so (__pthread_cond_timedwait+60)
#03 pc 0006e65b /system/lib/libdvm.so
#04 pc 00053b8f /system/lib/libdvm.so
#05 pc 00012e00 /system/lib/libc.so (__thread_entry+48)
#06 pc 00012558 /system/lib/libc.so (pthread_create+172)
at dalvik.system.NativeStart.run(Native Method)
NATIVE THREADS:
"ekeeper.reptile" sysTid=21267 nice=0 sched=0/0 cgrp=apps
| schedstat=( 18500 0 1 ) utm=0 stm=0 core=0
"ekeeper.reptile" sysTid=21268 nice=0 sched=0/0 cgrp=apps
| schedstat=( 572297498 198605347 10711 ) utm=25 stm=32 core=1
"ekeeper.reptile" sysTid=21269 nice=0 sched=0/0 cgrp=apps
| schedstat=( 1489497433 692708683 24726 ) utm=39 stm=109 core=2
----- end 21220 -----
dumpstate文件中的更多信息。 (在/data/log/dumpstate_app_anr.txt.gz上的ANR之后从设备检索)使用Unix用户app_112的应用程序的进程ID是16042。查看更详细的logcat(在文件中搜索MAIN LOG),它看起来像OutOfMemoryException。但我希望JVM能够崩溃并重新启动,而不是在僵尸状态下锁定。什么阻止应用程序成功崩溃?
冻结Android应用的zip file中/ proc / PID /文件夹的详细信息。
答案 0 :(得分:0)
我还没有看到ANR跟踪中的主线程堆栈,它在哪里?
而且,从“java.lang.ProcessManager”堆栈,我猜你正在通过分支子进程来做某事?
之前我遇到过这个问题,在等待子进程退出时,Java进程包装器有时会被阻塞是一个非常奇怪的错误。
我不确定它是一个bug,在我的情况下,我的子进程已经消失,但主进程仍然在主线程中等待它。然后ANR发生了。
最后,我编写了一些JNI代码来包装C库“system(”cmd“)”来解决这个问题。