ANR求解,定位不到哪里出了问题,求指导,谢谢!

码农巴布亚 2014-04-21 04:01:16
ANR求解,定位不到哪里出了问题,求指导,谢谢!

adb log:
I/InputDispatcher( 976): Application is not responding: AppWindowToken{41805320 token=Token{41697000 ActivityRecord{41756da0 com.aaa.appmarket2/.ui.search.SearchActivity}}} - Window{41899590 com.aaa.appmarket2/com.aaa.appmarket2.ui.search.SearchActivity paused=false}. 8007.7ms since event, 8005.7ms since wait started
I/WindowManager( 976): Input event dispatching timed out sending to com.aaa.appmarket2/com.aaa.appmarket2.ui.search.SearchActivity
I/Process ( 976): Sending signal. PID: 7889 SIG: 3
I/dalvikvm( 7889): threadid=3: reacting to signal 3
I/dalvikvm( 7889): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 976): Sending signal. PID: 976 SIG: 3
I/dalvikvm( 976): threadid=3: reacting to signal 3
I/dalvikvm( 976): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 976): Sending signal. PID: 1274 SIG: 3
I/dalvikvm( 1274): threadid=3: reacting to signal 3
I/dalvikvm( 1274): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 976): Sending signal. PID: 1388 SIG: 3
I/dalvikvm( 1388): threadid=3: reacting to signal 3
I/dalvikvm( 1388): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 976): Sending signal. PID: 1364 SIG: 3
I/dalvikvm( 1364): threadid=3: reacting to signal 3
I/dalvikvm( 1364): Wrote stack traces to '/data/anr/traces.txt'
I/Process ( 976): Sending signal. PID: 1402 SIG: 3
I/dalvikvm( 1402): threadid=3: reacting to signal 3
I/dalvikvm( 1402): Wrote stack traces to '/data/anr/traces.txt'

E/ActivityManager( 976): ANR in com.aaa.appmarket2 (com.aaa.appmarket2/.ui.search.SearchActivity)
E/ActivityManager( 976): Reason: keyDispatchingTimedOut
E/ActivityManager( 976): Load: 5.3 / 3.61 / 2.38
E/ActivityManager( 976): CPU usage from 8732ms to 0ms ago with 99% awake:
E/ActivityManager( 976): 44% 465/mmcqd: 0% user + 44% kernel
E/ActivityManager( 976): 42% 7889/com.aaa.appmarket2: 29% user + 13% kernel / faults: 6332 minor 3 major
E/ActivityManager( 976): 12% 714/ld-linux.so.3: 2.6% user + 9.7% kernel / faults: 221 minor 4 major
E/ActivityManager( 976): 8.4% 391/mmcqd: 0% user + 8.4% kernel
E/ActivityManager( 976): 2.7% 976/system_server: 1.1% user + 1.6% kernel / faults: 649 minor 14 major
E/ActivityManager( 976): 2.2% 288/kswapd0: 0% user + 2.2% kernel
E/ActivityManager( 976): 1.6% 701/surfaceflinger: 0.6% user + 0.9% kernel / faults: 52 minor
E/ActivityManager( 976): 0.9% 696/jbd2/mmcblk9-8: 0% user + 0.9% kernel
E/ActivityManager( 976): 0.3% 1274/com.android.systemui: 0.2% user + 0.1% kernel / faults: 425 minor 7 major
E/ActivityManager( 976): 0.9% 4856/logcat: 0.4% user + 0.4% kernel / faults: 27 minor
E/ActivityManager( 976): 0.9% 7594/RtmpTimerTask: 0% user + 0.9% kernel
E/ActivityManager( 976): 0.9% 7595/RtmpMlmeTask: 0% user + 0.9% kernel
E/ActivityManager( 976): 0.8% 889/aaasensormanager: 0.2% user + 0.5% kernel / faults: 8 minor
E/ActivityManager( 976): 0.6% 738/mali/0: 0% user + 0.6% kernel
E/ActivityManager( 976): 0.6% 740/mali-pmm-wq: 0% user + 0.6% kernel
E/ActivityManager( 976): 0.3% 829/virtualkeypad: 0.3% user + 0% kernel / faults: 9 minor
E/ActivityManager( 976): 0.1% 1388/com.aaa.tvos.tvmanager.softwaremanager: 0% user + 0.1% kernel / faults: 109 minor 1 major
E/ActivityManager( 976): 0.1% 1786/logcat: 0.1% user + 0% kernel / faults: 27 minor
E/ActivityManager( 976): 0% 5868/dhcpcd: 0% user + 0% kernel / faults: 118 minor 1 major
E/ActivityManager( 976): 86% TOTAL: 21% user + 19% kernel + 45% iowait + 1.2% softirq
E/ActivityManager( 976): CPU usage from 663ms to 1209ms later:
E/ActivityManager( 976): 105% 465/mmcqd: 0% user + 105% kernel
E/ActivityManager( 976): 22% 7889/com.aaa.appmarket2: 15% user + 7.5% kernel / faults: 2 minor
E/ActivityManager( 976): 15% 8003/Thread-215: 7.5% user + 7.5% kernel
E/ActivityManager( 976): 5.6% 7889/.aaa.appmarket2: 5.6% user + 0% kernel
E/ActivityManager( 976): 1.8% 7896/Compiler: 1.8% user + 0% kernel
E/ActivityManager( 976): 13% 976/system_server: 3.7% user + 9.4% kernel / faults: 7 minor
E/ActivityManager( 976): 13% 1031/InputDispatcher: 1.8% user + 11% kernel
E/ActivityManager( 976): 5.6% 714/ld-linux.so.3: 1.8% user + 3.7% kernel
E/ActivityManager( 976): 1.8% 873/714keypad Input: 1.8% user + 0% kernel
E/ActivityManager( 976): 1.8% 881/714Linux hotplu: 0% user + 1.8% kernel
E/ActivityManager( 976): 1.8% 1579/Factory Debug p: 0% user + 1.8% kernel
E/ActivityManager( 976): 1.1% 829/virtualkeypad: 1.1% user + 0% kernel
E/ActivityManager( 976): 1.1% 840/virtualkeypad: 1.1% user + 0% kernel
E/ActivityManager( 976): 60% TOTAL: 6.5% user + 25% kernel + 27% iowait + 0.7% softirq


...全文
10254 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
码农巴布亚 2016-06-16
  • 打赏
  • 举报
回复
不好意思各位,后面问题解决了就没有上来close问题。 问题的原因已经定位到mmcqd是写flash进程,也就是io进程写flash时cpu占用过高引起的anr,如何解决呢?问题的关键是写flash的驱动存在性能问题,遇到这类问题的同学可找驱动的同事看看,是否存在些flash的性能问题,频繁写flash时cpu是否占用过高,后来方案商优化了驱动就问题解决了。 44% 465/mmcqd: 0% user + 44% kernel
lc7183627 2016-06-02
  • 打赏
  • 举报
回复
楼主有了解决办法了吗,我也遇到这个问题了。求思路
下一站1899 2015-09-24
  • 打赏
  • 举报
回复
楼主我也是遇到的问题和你的一样。
qq_27601547 2015-04-24
  • 打赏
  • 举报
回复
楼主问题解决了吗?
qq_27601547 2015-04-24
  • 打赏
  • 举报
回复
那个定位的太搞笑了,哈哈 E/ActivityManager( 976): 0.1% 1388/com.aaa.tvos.tvmanager.softwaremanager: 0% user + 0.1% kernel / faults: 109 minor 1 major E/ActivityManager( 976): 0.1% 1786/logcat: 0.1% user + 0% kernel / faults: 27 minor E/ActivityManager( 976): 0% 5868/dhcpcd: 0% user + 0% kernel / faults: 118 minor 1 major E/ActivityManager( 976): 86% TOTAL: 21% user + 19% kernel + 45% iowait + 1.2% softirq 从这里看的确是IO操作太高了,可以尝试下使用traceview抓取trace,进行分析,或者使用第三方工具测试,查看是否的确这段时间在进行磁盘IO操作
xingfukuaixian2 2015-01-12
  • 打赏
  • 举报
回复
楼主,能教教我怎么分析trace.txt吗?谢谢
fei_you 2014-12-30
  • 打赏
  • 举报
回复
楼主解决了吗,我现在貌似遇到了和你差不多的问题‘
wnd 2014-08-22
  • 打赏
  • 举报
回复
楼主,解决了吗,我也找不到原因
码农巴布亚 2014-06-14
  • 打赏
  • 举报
回复
引用 17 楼 lgm9811 的回复:
前面的定位有点搞笑,呵呵。 主线程处于消息等待的状态,应该是正确的。但是ANR前后IOwait占的比例有点高: E/ActivityManager( 976): 86% TOTAL: 21% user + 19% kernel + 45% iowait + 1.2% softirq 应该是和io有关系,从下面的线程看感觉和下面的有关系,线程状态SUSPENDED,且处于io写太耗时了。并且是从楼主自己代码.DownLoadTask.run触发的。 "Thread-215" prio=1 tid=27 SUSPENDED | group="main" sCount=1 dsCount=0 obj=0x4252d0f8 self=0x341560 | sysTid=8003 nice=19 sched=0/0 cgrp=[no-cpu-subsys] handle=3903776 | schedstat=( 0 0 0 ) utm=255 stm=740 core=1 at libcore.io.Posix.writeBytes(Native Method) at libcore.io.Posix.write(Posix.java:178) at libcore.io.BlockGuardOs.write(BlockGuardOs.java:191) at libcore.io.IoBridge.write(IoBridge.java:447) at java.io.RandomAccessFile.write(RandomAccessFile.java:692) at com.aaa.appmarket2.component.downLoad.DownLoadTask.run(DownLoadTask.java:96) 楼主可以在.DownLoadTask.run中强行做一个多循环写操作,看能否复现该问题。
你好,这个写操作是放在新创建的线程里执行的,的确占cpu有点高45%,但是不应该会影响到主线程导致ANR,求解!谢谢!
lgm9811 2014-06-06
  • 打赏
  • 举报
回复
前面的定位有点搞笑,呵呵。 主线程处于消息等待的状态,应该是正确的。但是ANR前后IOwait占的比例有点高: E/ActivityManager( 976): 86% TOTAL: 21% user + 19% kernel + 45% iowait + 1.2% softirq 应该是和io有关系,从下面的线程看感觉和下面的有关系,线程状态SUSPENDED,且处于io写太耗时了。并且是从楼主自己代码.DownLoadTask.run触发的。 "Thread-215" prio=1 tid=27 SUSPENDED | group="main" sCount=1 dsCount=0 obj=0x4252d0f8 self=0x341560 | sysTid=8003 nice=19 sched=0/0 cgrp=[no-cpu-subsys] handle=3903776 | schedstat=( 0 0 0 ) utm=255 stm=740 core=1 at libcore.io.Posix.writeBytes(Native Method) at libcore.io.Posix.write(Posix.java:178) at libcore.io.BlockGuardOs.write(BlockGuardOs.java:191) at libcore.io.IoBridge.write(IoBridge.java:447) at java.io.RandomAccessFile.write(RandomAccessFile.java:692) at com.aaa.appmarket2.component.downLoad.DownLoadTask.run(DownLoadTask.java:96) 楼主可以在.DownLoadTask.run中强行做一个多循环写操作,看能否复现该问题。
码农巴布亚 2014-05-09
  • 打赏
  • 举报
回复
引用 15 楼 wangtaoenter 的回复:
楼主解决了吗
没有解决,没找到原因,求支持!
wangtaoenter 2014-05-07
  • 打赏
  • 举报
回复
楼主解决了吗
码农巴布亚 2014-04-24
  • 打赏
  • 举报
回复
引用 11 楼 sunalongl 的回复:
[quote=引用 6 楼 singlekun 的回复:] [quote=引用 5 楼 sunalongl 的回复:] 1.若用三方定位,则很快就能定位(5秒以内),所以不会出现Application Not Response异常 2.你现在出现ANR异常,估计是把定位这个耗时的操作写在了UI线程中了。。
大哥你好,不好意思,我标题没写清楚。 不是应用程序定位不到地理位置,是我应用商店运行时出现ANR,我找不到原因,确定不了引起问题原因在哪。 和地理位置的定位没有关系,log和trace都贴出来了,是消息队列堵塞了,我看了下我业务逻辑处理都是在线程中运行,UI线程都是处理UI的业务。 请各位大神,帮忙分析log,看ANR是哪里引起的,谢谢![/quote] 不好意思,对定位太敏感了,,看错了。。 我看了下估计是在SearchActivity中出现了问题, log说:keyDispatchingTimedOut,你看看这里是不是有什么问题? key分发超时? E/ActivityManager( 976): ANR in com.aaa.appmarket2 (com.aaa.appmarket2/.ui.search.SearchActivity) E/ActivityManager( 976): Reason: keyDispatchingTimedOut E/ActivityManager( 976): Load: 5.3 / 3.61 / 2.38 E/ActivityManager( 976): CPU usage from 8732ms to 0ms ago with 99% awake: E/ActivityManager( 976): 44% 465/mmcqd: 0% user + 44% kernel E/ActivityManager( 976): 42% 7889/com.aaa.appmarket2: 29% user + 13% kernel / faults: 6332 minor 3 major E/ActivityManager( 976): 12% 714/ld-linux.so.3: 2.6% user + 9.7% kernel / faults: 221 minor 4 major E/ActivityManager( 976): 8.4% 391/mmcqd: 0% user + 8.4% kernel E/ActivityManager( 976): 2.7% 976/system_server: 1.1% user + 1.6% kernel / faults: 649 minor 14 major E/ActivityManager( 976): 2.2% 288/kswapd0: 0% user + 2.2% kernel[/quote] 大哥你好,dispatch key timeout是ANR的一种类型,从log看没有在按键处理的地方堵塞了。谢谢!
码农巴布亚 2014-04-24
  • 打赏
  • 举报
回复
引用 12 楼 jianwang0412 的回复:
[quote=引用 9 楼 singlekun 的回复:] [quote=引用 8 楼 jianwang0412 的回复:] 是不是就这里,sleep过久了? | sysTid=7899 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1579080 | schedstat=( 0 0 0 ) utm=1 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)
大哥你好,为什么定位到这里呢?这里是系统的watchdog线程,代码没有对这个线程进行操作哦。 不是只看main线程就可以了么?main线程只显示message queue异常,我看了下UI线程Handler的处理都是UI控件的处理没有耗时或者block的操作。 请大神再指点一下,谢谢![/quote] 不好意思,看错了。 以下是cpu在anr发生前的使用情况: E/ActivityManager( 976): 44% 465/mmcqd: 0% user + 44% kernel E/ActivityManager( 976): 42% 7889/com.aaa.appmarket2: 29% user + 13% kernel / faults: 6332 minor 3 major E/ActivityManager( 976): 86% TOTAL: 21% user + 19% kernel + 45% iowait + 1.2% softirq 45%花费在iowait,好像是io操作花了很多的时间。然后你的app有很多额外的线程在跑,它们是否给主线程发了太多的消息才阻塞?目前我就只能看出这么多了,希望有点帮助[/quote] 大哥你好,说的和我分析的一样,问题就来了,iowait 45%有点高,我查了,我读写randomfile是放在子线程里面操作的,放子线程操作就算iowait应该也不会引起UI线程的堵塞。 但是你说的因为子线程太多给UI线程发的消息太多,处理不过来导致UI线程堵塞,有可能是这个引起的,但是我看了接收信息的handler的处理,都是UI控件的操作,如果有业务操作都会发指令,开新的子线程来执行,这是否有影响? 在此感谢各位大哥帮忙!
码农巴布亚 2014-04-23
  • 打赏
  • 举报
回复
DALVIK THREADS: (mutexes: tll=0 tsl=0 tscl=0 ghl=0) "main" prio=5 tid=1 NATIVE | group="main" sCount=1 dsCount=0 obj=0x41059460 self=0x129a0 | sysTid=7889 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1074082952 | schedstat=( 0 0 0 ) utm=3019 stm=719 core=0 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.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:853) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:579) at dalvik.system.NativeStart.main(Native Method) 说明主线程在等待下一条消息进入消息队列,那请问是谁引起这个问题呢? 是CPU使用率高100%导致主线程卡住了?还是什么原因引起的?
码农巴布亚 2014-04-23
  • 打赏
  • 举报
回复
引用 8 楼 jianwang0412 的回复:
是不是就这里,sleep过久了? | sysTid=7899 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1579080 | schedstat=( 0 0 0 ) utm=1 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)
大哥你好,为什么定位到这里呢?这里是系统的watchdog线程,代码没有对这个线程进行操作哦。 不是只看main线程就可以了么?main线程只显示message queue异常,我看了下UI线程Handler的处理都是UI控件的处理没有耗时或者block的操作。 请大神再指点一下,谢谢!
jianwang0412 2014-04-23
  • 打赏
  • 举报
回复
引用 9 楼 singlekun 的回复:
[quote=引用 8 楼 jianwang0412 的回复:] 是不是就这里,sleep过久了? | sysTid=7899 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1579080 | schedstat=( 0 0 0 ) utm=1 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)
大哥你好,为什么定位到这里呢?这里是系统的watchdog线程,代码没有对这个线程进行操作哦。 不是只看main线程就可以了么?main线程只显示message queue异常,我看了下UI线程Handler的处理都是UI控件的处理没有耗时或者block的操作。 请大神再指点一下,谢谢![/quote] 不好意思,看错了。 以下是cpu在anr发生前的使用情况: E/ActivityManager( 976): 44% 465/mmcqd: 0% user + 44% kernel E/ActivityManager( 976): 42% 7889/com.aaa.appmarket2: 29% user + 13% kernel / faults: 6332 minor 3 major E/ActivityManager( 976): 86% TOTAL: 21% user + 19% kernel + 45% iowait + 1.2% softirq 45%花费在iowait,好像是io操作花了很多的时间。然后你的app有很多额外的线程在跑,它们是否给主线程发了太多的消息才阻塞?目前我就只能看出这么多了,希望有点帮助
lasdfdfdsa 2014-04-23
  • 打赏
  • 举报
回复
引用 6 楼 singlekun 的回复:
[quote=引用 5 楼 sunalongl 的回复:] 1.若用三方定位,则很快就能定位(5秒以内),所以不会出现Application Not Response异常 2.你现在出现ANR异常,估计是把定位这个耗时的操作写在了UI线程中了。。
大哥你好,不好意思,我标题没写清楚。 不是应用程序定位不到地理位置,是我应用商店运行时出现ANR,我找不到原因,确定不了引起问题原因在哪。 和地理位置的定位没有关系,log和trace都贴出来了,是消息队列堵塞了,我看了下我业务逻辑处理都是在线程中运行,UI线程都是处理UI的业务。 请各位大神,帮忙分析log,看ANR是哪里引起的,谢谢![/quote] 不好意思,对定位太敏感了,,看错了。。 我看了下估计是在SearchActivity中出现了问题, log说:keyDispatchingTimedOut,你看看这里是不是有什么问题? key分发超时? E/ActivityManager( 976): ANR in com.aaa.appmarket2 (com.aaa.appmarket2/.ui.search.SearchActivity) E/ActivityManager( 976): Reason: keyDispatchingTimedOut E/ActivityManager( 976): Load: 5.3 / 3.61 / 2.38 E/ActivityManager( 976): CPU usage from 8732ms to 0ms ago with 99% awake: E/ActivityManager( 976): 44% 465/mmcqd: 0% user + 44% kernel E/ActivityManager( 976): 42% 7889/com.aaa.appmarket2: 29% user + 13% kernel / faults: 6332 minor 3 major E/ActivityManager( 976): 12% 714/ld-linux.so.3: 2.6% user + 9.7% kernel / faults: 221 minor 4 major E/ActivityManager( 976): 8.4% 391/mmcqd: 0% user + 8.4% kernel E/ActivityManager( 976): 2.7% 976/system_server: 1.1% user + 1.6% kernel / faults: 649 minor 14 major E/ActivityManager( 976): 2.2% 288/kswapd0: 0% user + 2.2% kernel
lasdfdfdsa 2014-04-22
  • 打赏
  • 举报
回复
1.若用三方定位,则很快就能定位(5秒以内),所以不会出现Application Not Response异常 2.你现在出现ANR异常,估计是把定位这个耗时的操作写在了UI线程中了。。
jianwang0412 2014-04-22
  • 打赏
  • 举报
回复
是不是就这里,sleep过久了? | sysTid=7899 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=1579080 | schedstat=( 0 0 0 ) utm=1 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)
加载更多回复(6)

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧