ANR 笔记
来源:互联网 发布:知乎 卡尔 编辑:程序博客网 时间:2024/06/13 16:55
发生ANR进程的call stack:Blocked、Native、Waiting
Blocker类型:
主线程卡死在dex方法中
"main" prio=5 tid=1 Blocked | group="main" sCount=1 dsCount=0 obj=0x767023a0 self=0x76e1896a00 | sysTid=13942 nice=0 cgrp=default sched=0/0 handle=0x76e5dfda98 | state=S schedstat=( 563799321 432986759 908 ) utm=40 stm=16 core=2 HZ=100 | stack=0x7fd752b000-0x7fd752d000 stackSize=8MB | held mutexes= at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:40) - waiting to lock <0x0ddea182> (a android.util.ArrayMap) held by thread 24 at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:525)"Thread-12" prio=10 tid=24 Native | group="main" sCount=1 dsCount=0 obj=0x12e45160 self=0x76d58c3e00 | sysTid=14000 nice=10 cgrp=bg_non_interactive sched=0/0 handle=0x76c6710450 | state=R schedstat=( 33192160 6156940547 327 ) utm=0 stm=3 core=3 HZ=100 | stack=0x76c660e000-0x76c6610000 stackSize=1037KB | held mutexes= "OatFile manager lock"(shared held) at dalvik.system.DexFile.openDexFileNative(Native method) at dalvik.system.DexFile.openDexFile(DexFile.java:373) at dalvik.system.DexFile.<init>(DexFile.java:113) at dalvik.system.DexFile.<init>(DexFile.java:78) at dalvik.system.DexPathList.loadDexFile(DexPathList.java:359) at dalvik.system.DexPathList.makeElements(DexPathList.java:323) at dalvik.system.DexPathList.makeDexElements(DexPathList.java:263) at dalvik.system.DexPathList.<init>(DexPathList.java:126) at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:48)
Native类型:
"main" prio=5 tid=1 Native | group="main" sCount=1 dsCount=0 obj=0x75a905c8 self=0xe9185400 | sysTid=28683 nice=0 cgrp=default sched=0/0 handle=0xec64a534 | state=D schedstat=( 192877927 154411301 311 ) utm=9 stm=10 core=0 HZ=100 | stack=0xff634000-0xff636000 stackSize=8MB | held mutexes= at java.io.FileDescriptor.sync(Native method) at android.os.FileUtils.sync(FileUtils.java:181) at android.app.SharedPreferencesImpl.writeToFile(SharedPreferencesImpl.java:601) at android.app.SharedPreferencesImpl.-wrap2(SharedPreferencesImpl.java:-1) at android.app.SharedPreferencesImpl$2.run(SharedPreferencesImpl.java:515) - locked <0x09c69197> (a java.lang.Object) at android.app.SharedPreferencesImpl.enqueueDiskWrite(SharedPreferencesImpl.java:536) at android.app.SharedPreferencesImpl.-wrap0(SharedPreferencesImpl.java:-1) at android.app.SharedPreferencesImpl$EditorImpl.commit(SharedPreferencesImpl.java:458) at com.gameloft.android.ANMP.GloftA8HM.GLUtils.SUtils.setPreference(SUtils.java:612) at com.gameloft.android.ANMP.GloftA8HM.GLUtils.SUtils.setPreference(SUtils.java:587) at com.gameloft.android.ANMP.GloftA8HM.installer.GameInstaller.onCreate(GameInstaller.java:3806) at android.app.Activity.performCreate(Activity.java:6687) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2677) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2789) at android.app.ActivityThread.-wrap12(ActivityThread.java:-1) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:203) at android.app.ActivityThread.main(ActivityThread.java:6251) at java.lang.reflect.Method.invoke!(Native method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1073) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934) ... "pool-1-thread-1" prio=5 tid=12 Native | group="main" sCount=1 dsCount=0 obj=0x12c699d0 self=0xe0cc0000 | sysTid=28867 nice=0 cgrp=default sched=0/0 handle=0xcf2b2920 | state=D schedstat=( 3659154 13360461 10 ) utm=0 stm=0 core=5 HZ=100 | stack=0xcf1b0000-0xcf1b2000 stackSize=1038KB | held mutexes= kernel: __switch_to+0x74/0x8c kernel: jbd2_log_wait_commit+0x84/0xf8 kernel: jbd2_complete_transaction+0x88/0xb0 kernel: ext4_sync_file+0x1f0/0x368 kernel: SyS_fsync+0x40/0x74 kernel: el0_svc_naked+0x24/0x28 native: #00 pc 00049dd8 /system/lib/libc.so (fsync+12) native: #01 pc 00002ff7 /system/lib/libopenjdkjvm.so (JVM_Sync+6) native: #02 pc 00013377 /system/lib/libopenjdk.so (FileDescriptor_sync+22) native: #03 pc 00024bcf /system/framework/arm/boot.oat (Java_java_io_FileDescriptor_sync__+74) at java.io.FileDescriptor.sync(Native method) at android.os.FileUtils.sync(FileUtils.java:181) at android.app.SharedPreferencesImpl.writeToFile(SharedPreferencesImpl.java:601) at android.app.SharedPreferencesImpl.-wrap2(SharedPreferencesImpl.java:-1) at android.app.SharedPreferencesImpl$2.run(SharedPreferencesImpl.java:515) - locked <0x06fc9d08> (a java.lang.Object) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761)
当前主线程进行SharedPreferencesImpl.writeToFile 读写数据的时候卡住,
这和当时的手机的emmc性能有关,此问题还需要apk内部进行优化,apk进行大量数据库操作的时候进行优化,
Waiting类型
"main" prio=5 tid=1 Waiting | group="main" sCount=1 dsCount=0 obj=0x746f15c8 self=0xe7685400 | sysTid=30121 nice=0 cgrp=default sched=0/0 handle=0xeab32534 | state=S schedstat=( 992680488 68247536 426 ) utm=16 stm=83 core=4 HZ=100 | stack=0xff0f3000-0xff0f5000 stackSize=8MB | held mutexes= at java.lang.Object.wait!(Native method) - waiting on <0x089ed941> (a byte[]) at com.uc.crashsdk.f.c(ProGuard:1213) - locked <0x089ed941> (a byte[]) at com.uc.crashsdk.f.a(ProGuard:1320) at com.uc.crashsdk.export.CrashApi.generateCustomLog(ProGuard:303) at com.uc.browser.CrashSDKWrapper.a(ProGuard:1098) at com.uc.browser.CrashSDKWrapper.a(ProGuard:1145) at com.uc.browser.bp.a(ProGuard:131) at com.uc.browser.bp.c(ProGuard:108) at com.uc.browser.bp.b(ProGuard:73) at com.uc.browser.bp.a(ProGuard:55) at com.uc.browser.g.c.c(ProGuard:123) at com.uc.browser.g.c.a(ProGuard:233) at com.uc.browser.f.a(ProGuard:256) at com.uc.browser.e.c(ProGuard:269) at com.uc.browser.d.a(ProGuard:115) at com.uc.browser.a.a(ProGuard:339) at com.uc.browser.bt.a(ProGuard:123) at com.uc.application.searchIntl.a.a(ProGuard:69) at com.uc.application.searchIntl.SearchActivity.onCreate(ProGuard:84) at android.app.Activity.performCreate(Activity.java:6687) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2677) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2789) at android.app.ActivityThread.-wrap12(ActivityThread.java:-1) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:203) at android.app.ActivityThread.main(ActivityThread.java:6251) at java.lang.reflect.Method.invoke!(Native method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1073) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934) ..."CrashSDKBkgdHandler" prio=5 tid=16 Native | group="main" sCount=1 dsCount=0 obj=0x12d62550 self=0xdbb66a00 | sysTid=30142 nice=10 cgrp=bg_non_interactive sched=0/0 handle=0xcd373920 | state=S schedstat=( 30972077 556384 30 ) utm=3 stm=0 core=1 HZ=100 | stack=0xcd271000-0xcd273000 stackSize=1038KB | held mutexes= kernel: __switch_to+0x74/0x8c kernel: unix_stream_recvmsg+0x4b4/0x6f0 kernel: sock_aio_read.part.11+0xe4/0x108 kernel: sock_aio_read+0x18/0x30 kernel: do_sync_read+0x70/0xa8 kernel: vfs_read+0xfc/0x19c kernel: SyS_read+0x44/0xa0 kernel: el0_svc_naked+0x24/0x28 native: #00 pc 0004a5d8 /system/lib/libc.so (read+8) native: #01 pc 0004fb29 /system/lib/libc.so (__sread+20) native: #02 pc 000527d5 /system/lib/libc.so (__srefill+180) native: #03 pc 000526c5 /system/lib/libc.so (fread+168) native: #04 pc 00025cbf /system/lib/libc.so (android_getaddrinfofornetcontext+1870) native: #05 pc 0002554d /system/lib/libc.so (android_getaddrinfofornet+44) native: #06 pc 0001895d /system/lib/libjavacore.so (???) native: #07 pc 001fd6f3 /system/framework/arm/boot-core-libart.oat (Java_libcore_io_Posix_android_1getaddrinfo__Ljava_lang_String_2Landroid_system_StructAddrinfo_2I+126) at libcore.io.Posix.android_getaddrinfo(Native method) at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55) at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:106) at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:74) at java.net.InetAddress.getAllByName(InetAddress.java:757) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:147) at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169) at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:366) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:601) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:542) at com.uc.crashsdk.l.a(ProGuard:188) at com.uc.crashsdk.l.a(ProGuard:109) at com.uc.crashsdk.l.a(ProGuard:86) at com.uc.crashsdk.f$a.run(ProGuard:1138) at com.uc.crashsdk.b.i.run(ProGuard:57) at android.os.Handler.handleCallback(Handler.java:836) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:203) at android.os.HandlerThread.run(HandlerThread.java:61)
主线程在进行com.uc.browser.CrashSDKWrapper处于wait状态,在等待子线程操作,
查看子线程CrashSDKBkgdHandler可以知道一直在发生http网络数据传输,
由此可知主线程等待子线程,而子线程由于网络原因一直被卡住,导致主线程触发ANR事件
发生JE堆栈信息
三方应用没有添加读外部存储的权限,导致报错
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xvideostudio.videoeditor/com.xvideostudio.videoeditor.activity.TrimCompressViewActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/video/media from pid=24998, uid=10201 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2724)at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2789)at android.app.ActivityThread.-wrap12(ActivityThread.java)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527)at android.os.Handler.dispatchMessage(Handler.java:110)
阅读全文
0 0
- ANR 笔记
- Android笔记(六)ANR
- ANR
- ANR
- ANR
- anr
- ANR
- ANR
- ANR
- ANR
- ANR
- ANR
- ANR
- ANR
- ANR
- ANR
- ANR
- ANR
- BaseAdapter的封装
- Mysql linux安装过程
- nginx-1.8.1源码安装
- JavaScript中的字符串
- 入坑集锦(一)
- ANR 笔记
- 机器学习系列
- linux普通用户su 到root免密码
- android service的onstart()和onStartCommand()的区别
- VirtualBox虚拟机网络设置
- linux系统下安装MySQL
- ZeroMQ指南:第4章:可靠的请求-应答
- 总结vue父子组件之间的通信
- 【头条】三十而立的太极,追逐的诗和远方