# APR稳定性标注
## 日志说明
```css
## dropbox tombstone记录位置
## dumpsys_SF
## eventinfo.hvw
## log_events
## log_kmsg 内核日志
## log_main 应用日志
## log_raio 音频日志
核心应用
com.h.camera
com.h.contacts
com.h.android.launcher
com.android.phone
com.android.systemui
负责模块
ANR
Android Vmreboot
tombstone
crash
Modem Crash
Vm Watchdog
Non-preloaded ANR
可剔除项
ANR
## NativePollOnce
主线程卡在nativePollOnce的情况非常常见,可以直接标注日志无效。
原因如下:
1.该ANR是CPU抢占或内存紧张等其他因素引起
2.这份ANR日志抓取的时候,主线程已经恢复正常
## applog日志中,搜索 BlockMonitor
如果binder调用超过5s,则写系统卡顿,可剔除,将相应的log放在上面
## main线程 Runnable 状态,其他binder线程无阻塞,未打印binder transaction信息,log无其他异常信息 在打印dumpstack时候就不卡顿了,只是瞬时堆栈打印,从上传log看暂无风险,可剔除
# 901004001 黑屏 Black Screen ## 【【user_type为空的不用标
# 901004003 服务卡死 Service Die ##【【 rpc问题 H回复不关注,可剔除
剔除模板
# 研发测试代码引入
-----------------------------------------------------------------------------
## 均为单机高频,moneky挂测场景,可剔除
## 用户无感知,media service挂掉,非模块问题,可剔除
## 测试场景,非用户场景,可剔除
## 单机高频,res资源加载,非用户场景,可剔除 --- Android.content.res.ResourcesImpl.loadDrawable
## 后台anr,高频点击apk场景,整机状态较差,加载慢,非模块问题,后台用户影响小,可剔除
## 均为后台anr,monkey场景,多为高cpu场景,用户无感知,可剔除
## dropbox并未收集到异常堆栈,eventlog中未发现am_crash,log中没发现crash信息,无log无法继续分析
## 在eventlog并未搜到am_crash信息,系统并没有收集到crash信息,非系统问题,三方crash问题未打印dropbox
## RuntimeException SecurityException 超时类权限问题,非用户场景,可剔除
## RuntimeException 超时类异常,monkey场景,可剔除
## 系统压力过大导致无法及时响应进程的操作,可剔除。
# log无效,无法定位
-----------------------------------------------------------------------------
## nativePollOnce 类型,无main线程具体堆栈信息,原生机制无法继续分析,可剔除
## 非核心应用 ,仅一次,影响小,可剔除
## monkey场景,仅一次,影响小,可剔除
## 空堆栈,结合hilog无法继续分析,影响小,可剔除
# 预制第三方APK,无代码
-------------------------------------------------------------------------------
## AlipayGphone 支付宝rpc问题,可剔除
## systemhelper 联通定制apk问题,可剔除 --- com.mobiletools.systemhelper
故障说明
/data/anr/ /data/log/dropbox ## 主要记录:Android系统进程及应用程序运行过程中,内核、系统进程用户进程等出现问题时的日志 ## 查询dropbox服务的信息: adb shell dumpsys dropbox /data/log/faultlog/freeze /data/system/dropbox /data/tombstones ## 像墓碑一样主要记录:死亡的进程的基本信息(进程号,线程号),死亡的地址(在哪个地址发生了crash)、死亡时的现场是什么样的(一系列堆栈信息) 软件侧 watchDog ## 接收系统内部reboot请求,重启系统 ## 监护system_server进程,防止系统死锁
重启类故障
AndroidVmreboot
故障上报
VmReBoot本质上就是zytote重启,就是系统关键服务进程(System_server、SurfaceFlinger等)出现了Crash或者Tombstone,此时系统给就会重启虚拟机将系统还原成初始状态。
故障日志
故障现象
## 重启后机器可能会卡住几秒,然后出现从华为LOG界面从新加载,重启之后会回到锁屏界面提示重启需要重新输入密码。 ## 手机突然重启
Vmreboot问题分析
问题思路
signal 7 (SIGBUS) SIGBUS_BUS_ADRERR ----分配内存对齐问题
## 有明显的错误干扰可以归类与硬件问题
## 是第三方应用出现这类问题,有可能是应用本身申请的内存存在字节对齐问题。但是这个一般会有比较明显的backtrace来分析。
Watchdog
故障上报
由于SystemService内有一些重要service,所以进程中有一个软件实现的Watchdog机制,用于监视SystemSever中各Service是否正常工作。如果卡住超过一定时间(默认30s),就dump现场便于分析,在超时(默认60s)就重启SystemServer保证系统的可用性。 watchdog一个检测周期为30s,一次检测失败并不会立即重启,回再次检测,如果连续60s阻塞,才会进入到重启阶段,由于watchdog是由system server启动,是System Server 的子线程,因此会将整个system server进程退出
故障日志
故障现象
## 系统出现死机冻屏状态,上层用户无法正常操作系统UI ## 可能Input系统失效,回发生TP无法操作,按键无法响应。无法亮灭屏等。
Watchdog问题分析
报错类
Tombstone
故障上报
tombstone主要见于native层的出错,可以认为是native层的crash,有可能是应用自身的lib库报错,也有可能是framework层的报错(多见于各种servie),相对于crash,由于lib都是编译后的代码,出错信息无法直接对于代码,且不会像JAVA那样有分类相对比较明细的异常类型。
故障日志
常见原因 1.方位空指针 2.方位野指针(已经释放的指针) 3.重复释放 4.stack被破坏,数组越界 5.全局变量并发问题
故障现象
应用闪退
Tombstone问题分析
-
- tombstone文件内容分析
Build fingerprint: 'PTAC/PHB-AN00/LQ-FIO-BD00-Q:11/PTACFIO-BD00/102.0.1.188C11:user/release-keys' ## 软件版本 Revision: '0' ABI: 'arm64' Timestamp: 2023-01-06 13:35:10+0800 ## 问题时间点 pid: 27113, tid: 27276, name: HwBinder:27113_ >>> /vendor/bin/hw/android.hardware.camera.provider@2.4-service_64 <<< ## 出现问题进程 uid: 1047 ## 问题类型及原因 signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x40 ### 错误类型ignal 11 (SIGSEGV), code 1,表示访问无效地址 Cause: null pointer dereference ### 即为空指针引用 ## CPU出错时寄存器的值 x0 0000000000000000 x1 0000000000000000 x2 0000000000000000 x3 0000000000000006 x4 b4000073890c92c0 x5 00000073b63bf530 x6 b4000073892bd880 x7 0000000000000000 x8 000000739e1b5fb0 x9 0000000000000001 x10 0000000000004001 x11 0000000000000000 x12 0000000000000200 x13 0000000000000580 x14 0000000000000000 x15 0000000000000040 x16 00000073b63c0c80 x17 00000073b63b4780 x18 000000739d9c6000 x19 b4000073892bd898 x20 000000739e1b5fb0 x21 0000000000000001 x22 b4000073892bd880 x23 0000000000000300 x24 0000000000000000 x25 b4000073892bd880 x26 0000000000000200 x27 0000000000000002 x28 0000000000000040 x29 000000739e1b5d10 lr 00000073b6386308 sp 000000739e1b5d00 pc 00000073b63b4798 pst 0000000080001000 ## 出错时的程序回溯 backtrace: #00 pc 00000000002ef798 /vendor/lib64/hw/com.qti.chi.override.so (CHIBufferManager::GetImageBufferInfo()+24) #01 pc 00000000002c1304 /vendor/lib64/hw/com.qti.chi.override.so(UsecaseMultiCamera::GenerateRealtimeRequest #02 pc 00000000002b0bd0 /vendor/lib64/hw/com.qti.chi.override.so (UsecaseMultiCamera::ExecuteCaptureRequest #03 pc 0000000000266090 /vendor/lib64/hw/com.qti.chi.override.so (Usecase::ProcessCaptureRequest ## 堆栈内容 stack e5c7b108 e537b11c -------------------------------------------------------- #1. 出错的进程号和线程号 pid: 27113, tid: 27276, #2. 进程名 /vendor/bin/hw/android.hardware.camera.provider@2.4-service_64 #3. 报错类型和原因 signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x40 Cause: null pointer dereference #4. 出错时芯片内部寄存器的值 x0 0000000000000000 x1 0000000000000000 x2 0000000000000000 x3 0000000000000006 x4 b4000073890c92c0 x5 00000073b63bf530 x6 b4000073892bd880 x7 0000000000000000 #5. 出错时的程序回溯,顺序为由下到上调用执行 backtrace: #00 pc 00000000002ef798 /vendor/lib64/hw/com.qti.chi.override.so (CHIBufferManager::GetImageBufferInfo()+24) #01 pc 00000000002c1304 /vendor/lib64/hw/com.qti.chi.override.so (UsecaseMultiCamera::GenerateRealtimeRequest(camera3_capture_request*, ChiMetadata*, int*)+21028) (BuildId: b30199ae2cfc0f4c0885a503b8877d99) #6. 堆栈内容 stack e5c7b108 e537b11c
-
tombstone分析方法
-
通过特定工具 addr2line
-
backtrace 中的#00 内容无法解析,从#01开始 通过 #01 pc 00000000002c1304 /vendor/lib64/hw/com.qti.chi.override.so(UsecaseMultiCamera::GenerateRealtimeRequest 程序执行com.qti.chi.override.so中地址00000000002c1304内容,可据此定位出错的位置,将链接符号的com.qti.chi.override.so文件放入计算云,执行以下指令: addr2line -f -e com.qti.chi.override.so00000000002c1304 就可以指导代码出错的位置
-
App_ANR
故障上报
是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR。 Service Timeout:前台服务在20s内未执行完成; 后台服务200s BroadcastQueue Timeout:前台广播在10s内未执行完成 后台广播60s ContentProvider Timeout:内容提供者在publish过超时10s; InputDispatching Timeout:输入事件分发超时5s,包括按键和触摸事件。
故障日志
常见原因 1:主线程频繁进行耗时的IO操作:如数据库读写 2:多线程操作的死锁,主线程被block; 3:主线程被Binder 对端block; 4:System Server中WatchDog出现ANR; 5:service binder的连接达到上线无法和和System Server通信 6:系统资源已耗尽(管道、CPU、IO)
故障现象
点击应用无响应,超过一定时间出现应用无响应弹框,提示是继续等待还是关闭应用
ANR问题分析
## 分析思路
首先我们搜索am_anr,找到出现ANR的时间点、进程PID、ANR类型、
然后再找搜索PID,找前5秒左右的日志。
过滤ANR IN 查看CPU信息,
接着查看traces.txt,找到java的堆栈信息定位代码位置,最后查看源码,分析与解决问题
## 分析思路
1>ANR类型:确认ANR是属于哪种类型,如果是input的ANR请务必注意它的ANR message信息
2>CPU占用:关注下top的cpu占用模块,可能是问题模块
3>Lowait:如果lowait较高,可以重点关注下是否是IO或者文件系统导致
4>堆栈:查看main线程调用栈,确认ANR栈类型,不同栈类型问题分析是由差异的
------1.等锁
------2.binder对端
------3.wait栈
------4.Java标准接口
------5.nativePollOnce
------6.No Focus Window
------7.没有栈
------8.其他
5>确认ANR时间范围(查看applocat,如果时间不对应,可以看log_main,确认ANR时间点、主线程日志、BlockMonitor卡顿监控)
------1.ANR时间点确认:(通过各种类型anr时间,我们可以确定anr发生的事件范围)
----------a.logcat里面搜索 “anr in”
----------b.log_event里面搜索 “anr”
------2.主线程问题时间段日志
----------a.主线程问题时间段一致在打log,需要怀疑是主线程任务过多导致(Message过多)
----------b.主线程log打印太少,需要怀疑是否是业务逻辑卡住了,或者主线程被冷冻或者处于D状态
6>BlockMonitor卡顿检测:(在logcat中搜索“BlockMonitor”)
----------a.Binder调度超时,重点看对端是谁。BlockMonitor对打印频率有限制,所以不用局限于问题时间点
----------b.单条Message处理事件过长,这种需确认Message的业务逻辑,通过查看代码找可疑点,例如System server卡顿也会导致多用用ANR
----------c.Message过多,查看top Message是什么以及产生的原因
7>线程状态:(查看kmsgcat-lo-确认线程是否是D状态,是否出现多个线程Block)
----------a.搜索卡住的线程是否被 hungtask 打印,hungtask发现D状态会主动触发打印
----------b.搜索 “ blocked ”,查看是否有多个线程被block
-
Dropbox
先看是什么ANR,CPU状态,IO状态,tid=1的main堆栈信息及blocked binder transactions信息。
ANR信息决定你是什么类型ANR:点击事件无响应,service型,receiver型
看CPU和IO状态,可以看出当前cpu,io状态
看堆栈信息,可以先分析下是否是因为调用某个阻塞方法导致ANR
查看blocked binder transactions信息可以分析是否某些binder导致自己阻塞或者耗尽问题。-
报错原因
Process: com.android.settings ## 发生ANR进程名 PID: 18517 UID: 1000 Flags: 0x38c83e45 ##应用安装标记,包括是否是预置还是安装,PMS中 Package: com.android.settings v11101256 (11.1.1.256) ##发生ANR的包名,含应用的版本号 SYSVMTYPE: Art APPVMTYPE: Art Foreground: Yes ## 发生ANR是否是前台,是Yes Process-Runtime: 7611654 Activity: com.android.settings/.HWSettings Subject: Input dispatching timed out (3f9272a com.android.settings/com.android.settings.HWSettings (server) is not responding. Waited 21390ms for MotionEvent(deviceId=-1, source=0x00001002, displayId=0, action=DOWN, actionButton=0x00000000, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, classification=NONE, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, xCursorPosition=nan, yCursorPosition=nan, pointers=[0: (189.0, 1981.0)]), policyFlags=0x6b000000) ## Input dispatching timed out
Process: com.android.settings PID: 18517 UID: 1000 Flags: 0x38c83e45 Package: com.android.settings v11101256 (11.1.1.256) SYSVMTYPE: Art APPVMTYPE: Art Foreground: Yes Process-Runtime: 7611654 Activity: com.android.settings/.HWSettings Subject: Input dispatching timed out (Waiting to send non-key event beacause the touched window has no finished processing certain input event s that were delicered to it. Waited 21390ms for MotionEvent(deviceId=-1, source=0x00001002, displayId=0, action=DOWN, actionButton=0x00000000, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, classification=NONE, ## Waiting to send non-key event 类型的ANR一般为处理Input事件超时导致的,点击屏幕或者虚拟按键,此时Activity需要响应事件,但是由于某些耗时导致未能及时响应,事件过久则会导致ANR
-
CPU使用情况
CPU usage from 0ms to 23941ms later (2023-01-07 03:57:56.475 to 2023-01-07 03:58:20.416): 76% 1413/system_server: 43% user + 33% kernel / faults: 42304 minor 3237 major 32% 1814/hiview: 26% user + 5.5% kernel / faults: 8561 minor 251 major ......... 74% TOTAL: 35% user + 32% kernel + 2.6% iowait + 2.1% irq + 1.2% softirq ## CPU使用没有特别的情况
-
主线程的堆栈信息(不同栈类型问题分析)
-----------------------------------------------------------1等锁----------------------------------------------------------------------------------------
## 主线程被lock,等待超时(等锁) ---------------------------------------------------- DALVIK THREADS:"main" prio=5 tid=3 TIMED_WAIT | group="main" sCount=1 dsCount=0 s=0 obj=0x400143a8 | sysTid=691 nice=0 sched=0/0 handle=-1091117924 at java.lang.Object.wait(Native Method) - waiting on <0x1cd570> (a android.os.MessageQueue) at java.lang.Object.wait(Object.java:195) at android.os.MessageQueue.next(MessageQueue.java:144) at android.os.Looper.loop(Looper.java:110) at android.app.ActivityThread.main(ActivityThread.java:3742) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:497) at dalvik.system.NativeStart.main(Native Method) "Binder Thread #3" prio=5 tid=15 NATIVE | group="main" sCount=1 dsCount=0 s=0 obj=0x434e7758 | sysTid=734 nice=0 sched=0/0 handle=1733632 at dalvik.system.NativeStart.run(Native Method) "Binder Thread #2" prio=5 tid=13 NATIVE | group="main" sCount=1 dsCount=0 s=0 obj=0x1cd570 | sysTid=696 nice=0 sched=0/0 handle=1369840 at dalvik.system.NativeStart.run(Native Method) "Binder Thread #1" prio=5 tid=11 NATIVE | group="main" sCount=1 dsCount=0 s=0 obj=0x433aca10 | sysTid=695 nice=0 sched=0/0 handle=1367448 at dalvik.system.NativeStart.run(Native Method)
"main" prio=5 tid=1 Blocked | group="main" sCount=1 dsCount=0 flags=1 obj=0x73039dd0 self=0x75778c4a00 | sysTid=1126 nice=-2 cgrp=default sched=0/0 handle=0x75fcfc89a8 | state=S schedstat=( 2210936395528 825183440909 4610261 ) utm=154091 stm=67002 core=7 HZ=100 | stack=0x7fecd18000-0x7fecd1a000 stackSize=8MB | held mutexes=at com.android.server.pm.PackageManagerService.isPackageSuspendedForUser(PackageManagerService.java:17700) - waiting to lock <0x0ca44263> (a android.util.ArrayMap) held by thread 189 at com.android.server.AppOpsService.isPackageSuspendedForUser(AppOpsService.java:1011) at com.android.server.AppOpsService.checkAudioOperation(AppOpsService.java:989) at android.media.PlayerBase.updateAppOpsPlayAudio_sync(PlayerBase.java:265) at android.media.PlayerBase.updateAppOpsPlayAudio(PlayerBase.java:252) - locked <0x09bc9e60> (a java.lang.Object)at android.media.PlayerBase.-wrap0(PlayerBase.java:-1) at android.media.PlayerBase.-wrap0(PlayerBase.java:-1)
-----------------------------------------------------------2Binder对端----------------------------------------------------------------------------------------
## 分析思路 1.
情况一: "main" prio=5 tid=1 Native | group="main" sCount=1 dsCount=0 flags=1 obj=0x72f7a3a8 self=0xb40000714cf1ec00 | sysTid=18517 nice=-10 cgrp=vip sched=0/0 handle=0x714e5bc4f8 | state=S schedstat=( 2220699119 806477516 3669 ) utm=151 stm=70 core=7 HZ=100 | stack=0x7fe9cae000-0x7fe9cb0000 stackSize=8192KB | held mutexes= native: #00 pc 00000000000d8294 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4) native: #01 pc 0000000000094fb8 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+156) native: #02 pc 000000000005d2d4 /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+296) native: #03 pc 000000000005e47c /system/lib64/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+60) native: #04 pc 000000000005e1b8 /system/lib64/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+284) native: #05 pc 0000000000056014 /system/lib64/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+72) native: #06 pc 000000000016b730 /system/lib64/libandroid_runtime.so (android_os_BinderProxy_transact(_JNIEnv*, _jobject*, int, _jobject*, _jobject*, int)+424) at android.os.BinderProxy.transactNative(Native method) at android.os.BinderProxy.transact(BinderProxy.java:576) at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:3789) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1749) at android.app.Activity.startActivityForResult(Activity.java:5523) ---------------------------------------------------------- ## 堆栈中显示BinderProxy.transactNative 通常都是因为binder对端阻塞导致的ANR,通常情况下,把日志拉到最底部,可以看到binder transactions,就能找到对端进程,如果没有直接标日志不足
binder数据量过大 07-21 04:43:21.573 1000 1488 12756 E Binder : Unreasonably large binder reply buffer: on android.content.pm.BaseParceledListSlice$1@770c74f calling 1 size 388568 (data: 1, 32, 7274595) 07-21 04:43:21.573 1000 1488 12756 E Binder : android.util.Log$TerribleFailure: Unreasonably large binder reply buffer: on android.content.pm.BaseParceledListSlice$1@770c74f calling 1 size 388568 (data: 1, 32, 7274595) 07-21 04:43:21.607 1000 1488 2951 E Binder : Unreasonably large binder reply buffer: on android.content.pm.BaseParceledListSlice$1@770c74f calling 1 size 211848 (data: 1, 23, 7274595) 07-21 04:43:21.607 1000 1488 2951 E Binder : android.util.Log$TerribleFailure: Unreasonably large binder reply buffer: on android.content.pm.BaseParceledListSlice$1@770c74f calling 1 size 211848 (data: 1, 23, 7274595) 07-21 04:43:21.662 1000 1488 6258 E Binder : Unreasonably large binder reply buffer: on android.content.pm.BaseParceledListSlice$1@770c74f calling 1 size 259300 (data: 1, 33, 7274595) binder通信失败 07-21 06:04:35.580 <6>[32837.690321] binder: 1698:2362 transaction failed 29189/-3, size 100-0 line 3042 07-21 06:04:35.594 <6>[32837.704042] binder: 1765:4071 transaction failed 29189/-3, size 76-0 line 3042 07-21 06:04:35.899 <6>[32838.009132] binder: 1765:4067 transaction failed 29189/-3, size 224-8 line 3042 07-21 06:04:36.018 <6>[32838.128903] binder: 1765:2397 transaction failed 29189/-22, size 348-0 line 2916 binder线程池耗尽 11-23 19:29:57.905 3505 9248 E IPCThreadState: binder thread pool (15 threads) starved for 1070 ms
----------------------------------------------------------5NativePollOnce----------------------------------------------------------------------------------------
如果主线程是NativePollOnce(表示主线程处于空闲状态) --这种栈表示在去取/等待下一条消息 --要么主线程不卡,要么没抓到栈,抓的时候正好在获取下一条消息 定位方式: --1.检查BlockMonitor是否有日常打印(看Message是否打印过多或者处理事件是否过长) --2.分析systrace(通过抓取Systrace分析定位anr) --3.检查logcat进程中是否有其他异常(频繁GC等)
"main" prio=5 tid=1 Native | group="main" sCount=1 dsCount=0 flags=1 obj=0x749a7338 self=0xb400007ea9fddc00 | sysTid=30148 nice=0 cgrp=default sched=0/0 handle=0x7eab66a4f8 | state=S schedstat=( 874415787547 97631065352 2451556 ) utm=62480 stm=24960 core=4 HZ=100 | stack=0x7fe230d000-0x7fe230f000 stackSize=8192KB | held mutexes= native: #00 pc 00000000000d8c08 /apex/com.android.runtime/lib64/bionic/libc.so (__epoll_pwait+8) native: #01 pc 000000000001994c /system/lib64/libutils.so (android::Looper::pollInner(int)+184) native: #02 pc 000000000001982c /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112) native: #03 pc 0000000000155498 /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44) at android.os.MessageQueue.nativePollOnce(Native method) at android.os.MessageQueue.next(MessageQueue.java:374) at android.os.Looper.loop(Looper.java:185) at com.huawei.secure.android.common.activity.protect.ActivityProtect.i(SourceFile:9) at com.huawei.secure.android.common.activity.protect.ActivityProtect.b(SourceFile:2) at com.huawei.secure.android.common.activity.protect.ActivityProtect$a.uncaughtException(SourceFile:8) at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1073) at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068) at java.lang.Thread.dispatchUncaughtException(Thread.java:2214)
----------------------------------------------------------6No Focus Window----------------------------------------------------------------------------------------
## 原因分析: Nofocus Window 的anr大多数情况都并非是主线程卡顿,栈表现基本为NativePollOnce。 实际问题是Window状态异常。 Input事件发给具体的应用,首先就需要找到当前的焦点窗口(Focus Window)。如果没有Focus Window,input事件将会处于一个等待发送的状态,直到8S超时,但是短时间的Focus WIndow为null是正常的。
## 定位方法 1.data_app_anr文件确认发生问题的Activity 2.applogcat 搜索 WindowManager:Changingfocus 查看最后一次Windowchange的状态以及时间点 3.log_event中查看最后一次 window change为何停留在中间态,查看报错聚焦窗口,排除monkey特有问题
## Monkey 剔除项 聚焦窗口是SubPanel窗口,Subpanel窗口导致key事件无法传递。 SubPanel的,只有82事件和109事件触发,属于Monkey特有问题。
----------------------------------------------------------7没有栈----------------------------------------------------------------------------------------------------------
----------------------------------------------------------8其他----------------------------------------------------------------------------------------
## 内存不足 --------------------------------------------- DALVIK THREADS:"main"prio=5 tid=3 VMWAIT |group="main" sCount=1 dsCount=0 s=N obj=0x40026240self=0xbda8 | sysTid=1815 nice=0 sched=0/0 cgrp=unknownhandle=-1344001376atdalvik.system.VMRuntime.trackExternalAllocation(NativeMethod) ---VMRuntime.trackExternalAllocation 内存不足 atandroid.graphics.Bitmap.nativeCreate(Native Method) atandroid.graphics.Bitmap.createBitmap(Bitmap.java:468) atandroid.view.View.buildDrawingCache(View.java:6324) atandroid.view.View.getDrawingCache(View.java:6178) atandroid.view.ViewGroup.drawChild(ViewGroup.java:1541)
## 主线程耗时操作,数据库读写 ------------------------------------------------------ "main" prio=5 tid=1 Native held mutexes= kernel: (couldn't read /proc/self/task/11003/stack) native: #00 pc 000492a4 /system/lib/libc.so (nanosleep+12) native: #01 pc 0002dc21 /system/lib/libc.so (usleep+52) native: #02 pc 00009cab /system/lib/libsqlite.so (???) native: #03 pc 00011119 /system/lib/libsqlite.so (???) native: #04 pc 00016455 /system/lib/libsqlite.so (???) native: #16 pc 0000fa29 /system/lib/libsqlite.so (???) native: #17 pc 0000fad7 /system/lib/libsqlite.so (sqlite3_prepare16_v2+14) ative: #18 pc 0007f671 /system/lib/libandroid_runtime.so (???) native: #19 pc 002b4721 /system/framework/arm/boot-framework.oat (Java_android_database_sqlite_SQLiteConnection_nativePrepareStatement__JLjava_lang_String_2+116) at android.database.sqlite.SQLiteConnection.setWalModeFromConfiguration(SQLiteConnection.java:294) at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:215) at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193) at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:808)locked <0x0db193bf> (a java.lang.Object) at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:793) at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:696) at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:690) at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:299) at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223) at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)locked <0x045a4a8c> (a com.xxxx.video.common.data.DataBaseHelper) at com.xxxx.video.common.data.DataBaseORM.<init>(DataBaseORM.java:46) at com.xxxx.video.common.data.DataBaseORM.getInstance(DataBaseORM.java:53)locked <0x017095d5> (a java.lang.Class<com.xxxx.video.common.data.DataBaseORM>)
-
-
hilogs
# 关键字 ANR|InputDispatcher|WindowManager|BlockMonitor InputDispatcher|ActivityManager|WindowManger|ActivityTaskManager|Monkey|BlockMonitor|InputReader|lowmemorykiller|ANR in ## 省电精灵 ----------------------------------------------------------------------------------- F_z|Screen off|transition to
App_Crash
故障上报
当应用发生没有被捕获的异常时会发生crash导致应用闪退
故障日志
故障现象
应用闪退,有的应用会做处理可能会有提示框提示应用发生异常
Crash问题分析
-
Dropbox
-
crash日志分析
Process: com.huawei.calendar PID: 26468 UID: 10035 Flags: 0x28c83e45 Package: com.huawei.calendar v120905310 (12.9.5.310) SYSVMTYPE: Art APPVMTYPE: Art Foreground: Yes Process-Runtime: 1954842 Lifetime: 1954s Temp: shellFront: , shellFrame: , ambientTemp: Freq: bigCur: 2203000, bigMax: 2203000, midCur: 1750000, midMax: 2000000, litCur: 1750000, litMax: 2000000, IPAValue: MemInfo: MemTotal: 5803540 kB MemFree: 244308 kB MemAvailable: 1026964 kB Buffers: 2420 kB Cached: 1121780 kB SwapCached: 37692 kB Active: 2075304 kB Inactive: 918528 kB Active(anon): 1640460 kB Inactive(anon): 428688 kB Active(file): 434844 kB Inactive(file): 489840 kB Unevictable: 147868 kB Mlocked: 147868 kB SwapTotal: 3762852 kB SwapFree: 1208120 kB Dirty: 2340 kB Writeback: 0 kB AnonPages: 2009448 kB Mapped: 797232 kB Shmem: 53240 kB KReclaimable: 124428 kB Slab: 472940 kB SReclaimable: 119664 kB SUnreclaim: 353276 kB KernelStack: 110016 kB PageTables: 139920 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 6664620 kB Committed_AS: 135709396 kB VmallocTotal: 263061440 kB VmallocUsed: 164324 kB VmallocChunk: 0 kB CmaTotal: 131072 kB CmaFree: 0 kB Protected: 35552 kB Build: NZONE/GNT-AN00/TS-GIANT-M:11/CMDCSP100/102.0.1.168C07:user/release-keys java.lang.RuntimeException: Unable to start activity ComponentInfo{com.huawei.calendar/com.android.calendar.EventInfoActivity}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.baidu.mapcom.map.MapStatus at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4293) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4495) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:93) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2706) at android.os.Handler.dispatchMessage(Handler.java:109) at android.os.Looper.loop(Looper.java:228) at android.app.ActivityThread.main(ActivityThread.java:9103) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:614) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1129)
-
设备资源类(CPU、内存)
黑屏冻屏类故障
不开机类故障
其他
常用命令
## 查看system_server进程信息
ps -A | grep system_server
ps -ef | grep system_server
ID模块划分
故障ID分类
故障ID 应用类故障ID 重启类涉及上层的故障ID
1.故障ID分类
重启类
901000000 安卓SystemServer进程报错重启 Android Vmreboot
901000001 安卓SystemServer阻塞重启 Vm Watching
901000002 整机死机(含hungtask 120s等) Panic ## 底软看护
901000003 驱动层watchdog复位 Hw Watchdog ## 底软看护 死机一段时间重启
901000004 未识别的故障 Unknown Fault ## 底软看护
901000005 硬件异常 Hardware Fault ## 底软看护
901000006 bootloader异常 Bootloader Crash ## 底软看护
901000007 lpm3异常 lpm3 Exception ## 底软看护
901000008 安全子系统整机重启 Trustzone Rebootsys ## 底软看护
901000009 modem子系统整机重启 Modem Rebootsys ## 底软看护
901000010 press 10s重启 Press10s Reset ## 底软看护
报错类
901001000 预置应用程序无响应 Pre-loaded Application ANR
901001001 预置应用程序崩溃 Pre-loaded Application Crash
901001002 预置程序进程TombStone Pre-loaded Application Tomestone
901001003 f Non-Pre-loaded Application ANR
901001004 非预置应用程序崩溃 Non-Pre-loaded Application Crash
901001005 非预置程序进程TombStone Non-Pre-loaded Application Tomestone
子系统
901002000 modem子系统异常 Modem Crash ## 底软看护
901002001 Hifi子系统异常 Hifi Crash ## 底软看护
901002002 Sensorhub子系统异常 Sensorhub Crash ## 底软看护
901002003 安全OS子系统异常:Tee OS异常 Trusted Zone:Tee OS Crash ## 底软看护
901002104 安全OS子系统异常:tz异常 Trusted Zone:tz Crash ## 底软看护
901002004 Hisee子系统异常 Hisee Crash ## 底软看护
901002005 短距/adsp/venus子系统异常 Wcnss/Adsp/venus Crash ## 底软看护
901002006 IVP异常 sfdsfsdfsdfslixianglixianghnkkkk ## 底软看护
901002007 ISP异常 ISP Crash ## 底软看护
901002008 NPU子系统异常 NPU Crash ## 底软看护
901002009 DSS子系统异常 DSS Crash ## 底软看护
901002010 Others子系统异常 Othersubsystem Crash ## 底软看护
901002011 HBS子系统故障 HBS failure ## 底软看护
901002012 ODMF子系统故障 ODMF failure ## 底软看护
901002013 MSDP子系统故障 MSDP failure ## 底软看护
901002014 MAPLE子系统故障 MAPLE failure ## 底软看护
901002015 iGraphics子系统故障 iGraphics failure ## 底软看护
901002030 VR硬件watchdog复位 VR Hw Watchdog ## 底软看护
901002031 VR软件按watchdog复位 VR Software Watchdog ## 底软看护
资源
901003000 进程线程泄露 Thread Limit
901003001 进程文件句柄泄露 File Handler Limit
901003002 进程内存限制 Memory Limit
901003003 应用进程内存峰值 Process Memory Max Value
901003010 资源类故障大数据统计 Resource Manage Bigdate
901003011 NOTIFICATION速率过载故障 Notification speed overload
901003012 BROADCAST速率过载故障 Broadcast Record speed overload
901003013 RECEIVER注册泄露故障 Broadcast Receiver leak
901003014 AlARM注册泄露故障 Alarm leak
901003015 APPOPS回调泄露故障 AppOps callback
901003016 APP反复Crash故障 APP repeat Crash
901003017 PIDS/Thread泄露故障 PIDS/Thread leak
901003018 CURSOR泄露故障 CURSOR leak
901003019 应用IO读写量超标故障 IO write and read exceeded
901003020 启动Windows泄露过载故障 Windows Leak in Activity
901003021 IPC通信超时故障 IPC timeout
黑屏冻屏
901004000 系统冻屏故障 System Hung Fault ## 【【功能问题麻烦复测,提供视频hilog进一步分析
901004001 黑屏 Black Screen ## 【【user_type为空的不用标
901004002 D状态侦测 Hung task Detector
901004003 服务卡死 Service Die ##【【 rpc问题 H回复不关注,可剔除
901004004 系统冻屏屏侦测告警 System Hung Warning
## 【【 NetworkPredictMatcher: checkIfSignalGood: rsrp is too low: 1, thresh is: -117,当时的网络状况不佳
901004005 应用卡死侦测 App Freeze
## main线程 Runnable 状态,其他binder线程无阻塞,未打印binder transaction信息,log无其他异常信息 在打印dumpstack时候就不卡顿了, 只是瞬时堆栈打印,从上传log看暂无风险,可剔除
901004006 应用卡死侦测告警 App Freeze Warning ## /vendor/bin/hw/qcrilNrd/ Tomestone
901004007 应用卡死故障大数据统计 App Freeze Statics
不开机
901005000 不开机故障 Boot Fail Error
2.应用类故障ID
901001001 应用异常 Crash java.lang.NullPointerException DIR_DROPBOX, "app_anr"
java.lang.IdexoutOfBoundsException
java.lang.UnstaisfiedFoundError
java.lang.NoClassEdfFoundError
java.lang.OutOfMemoryError
java.lang.IllegalArgumentException
java.lang.IllegalStateException
java.lang.SecurityException
java.lang.RuntimeException
java.util.concurrent.TimeoutException
java.lang.NoSuchMethodError
java.lang.ClassCastException
java.util.ConcurrentModificationException
901001000 ANR input timeout DIR_DROPBOX, "app_crash"
service timeout
broadcast timeout
901001002 Tomestone SIGSEGV DIR_DROPBOX, "SYSTEM_TOMBSTONE"
SIGABRT
SIGBUS
SIGPIPE
SGIFPE
SIGILL
SIGRAP
3.重启类涉及上层的故障ID
901000000 上层重启 Android Vmreboot system_server_crash 才内存
内存泄露
文件系统创建失败
关键线程(zygote)分配不出内存
art问题
FD泄露
surfaceflinger异常重启
901000000 Vm Watchdog AMS、WMS、PKMS等service等锁或者死锁
显示相关卡死(hwui、surfaceflinger等)
system_server的Binder线程被占满
Input系统卡死
关键进程进入D状态或者Z状态
功耗baster进程卡死
线程关键字解读
-
- main:main标识是主线程,如果是线程,那么命名成Thread-X的格式,x表示线程,id逐步递增; - prio:线程优先级,默认是5; - tid:tid不是线程的id是线程唯一标识ID; - Runnable:线程状态; - group:是线程组名称; - sCount:该线程被挂起的次数; - dsCount:是线程被调试器挂起的次数; - obj:对象地址; - self:该线程Native的地址; - sysTid:是线程号(主线程的线程号和进程号相同); - nice:是线程的调度优先级,值越小优先级越高; - sched:分别标志了线程的调度策略和优先级; - cgrp:调度归属组; - handle:线程处理函数的地址; - state:是调度状态; - schedstat:从/proc/[pid]/task/[tid]/schedstat读出,三个值分别表示线程在cpu上执行的时间、线程的等待时间和线程执行的时间片长度,不支持这项信息的三个值都是0; - utm:是线程用户态下使用的时间值(单位是jiffies); - stm:是内核态下的调度时间值; - core:是最后执行这个线程的cpu核的序号。
线程状态对应的定义:
libcore/ojluni/src/main/java/java/lang/Thread.java文件中的State枚举类;
art/runtime/thread_state.h文件中的ThreadState枚举类;
java中定义的状态 c中定义的状态 说明 TERMINATED ZOMBIE 线程死亡终止运行 RUNNABLE RUNNING/RUNNABLE 线程可运行或正在运行 TIMED_WAITING TIMED_WAIT 执行了带有超时参数的wait,sleep,join函数 BLOCKED MONITOR 线程阻塞,等待获取对象锁 WAITING WAIT 执行了无超时参数的wait函数 NEW INITIALZING 新建,正在初始化,为其分配资源 NEW STARTING 新建,正在启动 RUNNABLE NATIVE 正在执行JNI本地函数 WAITING VMWAIT 正在等待VM资源 RUNNABLE SUSPENDED 线程暂停,通常是由于GC或者debug暂停 UNKNOW 未知状态
Signal码含义
kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
man 7 signal
Signal Value Action Comment
──────────────────────────────────────────────────────────────────────
SIGHUP 1 Term Hangup detected on controlling terminal
or death of controlling process
SIGINT 2 Term Interrupt from keyboard
SIGQUIT 3 Core Quit from keyboard
SIGILL 4 Core Illegal Instruction
SIGABRT 6 Core Abort signal from abort(3)
SIGFPE 8 Core Floating point exception
SIGKILL 9 Term Kill signal
SIGSEGV 11 Core Invalid memory reference
SIGPIPE 13 Term Broken pipe: write to pipe with no
readers
SIGALRM 14 Term Timer signal from alarm(2)
SIGTERM 15 Term Termination signal
SIGUSR1 30,10,16 Term User-defined signal 1
SIGUSR2 31,12,17 Term User-defined signal 2
SIGCHLD 20,17,18 Ign Child stopped or terminated
SIGCONT 19,18,25 Cont Continue if stopped
SIGSTOP 17,19,23 Stop Stop process
SIGTSTP 18,20,24 Stop Stop typed at terminal
SIGTTIN 21,21,26 Stop Terminal input for background process
SIGTTOU 22,22,27 Stop Terminal output for background process
The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.
Next the signals not in the POSIX.1-1990 standard but described in SUSv2 and POSIX.1-2001.
Signal Value Action Comment
────────────────────────────────────────────────────────────────────
SIGBUS 10,7,10 Core Bus error (bad memory access)
SIGPOLL Term Pollable event (Sys V).
Synonym for SIGIO
SIGPROF 27,27,29 Term Profiling timer expired
SIGSYS 12,31,12 Core Bad argument to routine (SVr4)
SIGTRAP 5 Core Trace/breakpoint trap
SIGURG 16,23,21 Ign Urgent condition on socket (4.2BSD)
SIGVTALRM 26,26,28 Term Virtual alarm clock (4.2BSD)
SIGXCPU 24,24,30 Core CPU time limit exceeded (4.2BSD)
SIGXFSZ 25,25,31 Core File size limit exceeded (4.2BSD)
常用的几种信号
signal 6(SIGABRT): 调用abort函数生成的信号
signal 7(SIGBUS): 意味这指针所对应的地址是有效地址,但是总线不能正常使用该指针。通常是未对齐的数据类型导致
signal 11(SIGSEGV): 程序中存在特定条件下的非法内存访问
#信号名称 #信号说明 #默认处理
SIGABRT 调用abort 时产生该信号,程序异常结束 进程终止并且产生core 文件
SIGALRM 由alarm 或者 setitimer 设置的 定时器 到期 进程终止
SIGBUS 总线错误,地址没对齐等,取决于具体硬件 进程终止并产生core 文件
SIGCHLD 子进程停止或者终止时, 父进程收到 该信号 忽略该信号
SIGCONT 让停止的进程继续执行 进程终止并且产生core 文件
SIGFPE 算术运算异常,除 0 等 进程终止
SIGHUP 进程的控制终端关闭时产生这个信号 进程终止并且产生core 文件
SIGILL 代码中有非法指 进程终止
SIGINT 终端输入了CTRL+c 信号 下面用 ^c 表示 进程终止
SIGIO 异步I/O ,跟 SIGPOLL 一样 进程终止
SIGIOT 执行I/O 时产生 硬件错 进程终止并且产生core 文件
SIGKILL 该信号用户不能去捕捉和忽略它 进程终止
SIGBUS(signal 7)
#1 访问地址不对齐
通过指针访问内存数据(short、int、long等基础类型),指针值不按其指向数据对齐:例如使用最后一个bit不为0的指针方位short,或使用最后两个bit不全为0的指针访问int;
但这种访问只在部分CPU(如POWERP等)上会触发异常。
当前我们主要使用X86,支持非法对齐访问,除非代码中使能CPU对齐效验(AC),否则不会发生异常。
## 案例
例如从网络字节流中获取整形,直接使用指针强转而不采用依次读字节再移位组合,这类代码移植到有地址校验的CPU上可能会异常。
#2 访问的mmap文件的内存,超过了被映射的文件最后一个页面
mmap函数可以映射超过当前文件大小的内存空间,当内存访问超过当前文件末尾(最后一个页面)可能会引起SIGBUS被发送给进程。这么做的原因是:文件大小再任意时刻可能被其他进程修改,系统更需要通知应用发生了超过文件范围的访问,否则应用写入数据可能丢失,读取的数据有可能不是文件中的真实数据。
## 案例
代码中调用mmap的地方几乎没有,以上原因引起Bus error主要发生再用cp命令替换进程已加载的so过程中。
因此要避免直接通过cp命令换包升级,可使用的方案:先rm原so,再拷贝新的so。
#3 硬件问题
进程调用硬件驱动操作硬件,驱动检测到硬件异常,向进程发送SIGBUS。
稳定性评估模板
TS-BUG-98377 【11.0.1.7】【稳定性】【新发现】【APR】【module(com.android.dreams.phototable)】【故障类型(Crash)】APR网站上有7次Crash故障上报//android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:1617 -- Minor 挂起 李玄 lixuan0322 161版本12次
【原因分析】:H的王璨wx1004245、余书行wx495116:“不用分析处理,没有用户使用入口;该模块是给少数EMUI9时的老产品升级上来留的,基本没有产品在使用了,或者将该模块取消预置也可以”
【问题影响】:没有用户使用入口,monkey特有场景。用户无感知
【规避措施】:不用分析处理,没有用户使用入口
【评估结论】:没有用户使用入口,不会影响用户使用
【共性/遗留】:否
【解决计划】:没有用户使用入口,monkey特有场景,用户无感知,挂起
【评估人员】:程海冰
【评估日期】:20220909
TS-BUG-99579 【Ballon】【 11.0.1.10】【稳定性】【新发现】【APR】【module(distributedsche/subname:distributedsche)】【故障类型(tombstone)】APR网站上有4次tombstone故障上报///system/lib64/libc++.so (abort_message+248 -- Minor 待修改 朱星星 LQ.zhuxingxing(11/23以未复现打回)161版本1次
【原因分析】:TS-BUG-105729问题单,是踩内存问题,现在正在打小包,开启kasan,未复现问题
【问题影响】:商用已合入,建议跟踪后续版本
【规避措施】:商用已合入,建议跟踪后续版本
【评估结论】:商用已合入,建议跟踪后续版本
【共性/遗留】:否
【解决计划】:商用已合入,建议跟踪后续版本
【评估人员】:程海冰
【评估日期】:20220909
TS-BUG-106441 【Ballon】【12.0.1.122】【稳定性】【新发现】【APR】【Module(com.cmcc.cmvideo)】【故障类型(Crash)】APR网站上有27次Crash故障上报/android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4500 -- Minor 待分析 朱星星 LQ.zhuxingxing(11/23以未复现打回)161版本9次
【原因分析】:上报次数较多的三方问题,起提示单作用,三方上报空指针异常,目前只在monkey下发现,应该是monkey特有的
【问题影响】:这个问题是小概率事件,建议走小概率
【规避措施】:建议走小概率
【评估结论】:三方小概率事件
【共性/遗留】:否
【解决计划】:三方小概率事件
【评估人员】:程海冰
【评估日期】:20220909
TS-BUG-106445 【Ballon】【12.0.1.122】【稳定性】【新发现】【APR】【module(com.chinamobile.mcloud )】【故障类型(Crash)】APR网站上有11次Crash故障上报/com.cmic.sso.sdk.auth.AuthnHelper.umcLoginPre(AuthnHelper.java:1 --Minor 待分析 朱星星 LQ.zhuxingxing(非标问题驳回)161版本13次
【原因分析】:上报次数较多的三方问题,起提示单作用,三方自身问题,三方应用内部空指针异常,预置应用,目前小米应用商店、华为应用商店均不支持下载安装,建议剔除
【问题影响】:目前小米应用商店、华为应用商店均不支持下载安装,建议剔除
【规避措施】:目前小米应用商店、华为应用商店均不支持下载安装,建议剔除
【评估结论】:目前小米应用商店、华为应用商店均不支持下载安装,建议剔除
【共性/遗留】:否
【解决计划】:目前小米应用商店、华为应用商店均不支持下载安装,建议剔除
【评估人员】:程海冰
【评估日期】:20220909
TS-BUG-106738 【Ballon】【12.0.1.131】【稳定性】【新发现】【APR】【Module(com.huawei.calendar)】【故障类型(Crash)】APR网站上有2次Crash故障上报/android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:172 --Minor 待分析 朱星星 LQ.zhuxingxing(h合入代码后,新版本未发现此问题)161版本3次
【原因分析】:h合入代码后,新版本未发现此问题
【问题影响】:带入修改,跟踪后续版本
【规避措施】:带入修改,跟踪后续版本
【评估结论】:带入修改,跟踪后续版本
【共性/遗留】:否
【解决计划】:带入修改,跟踪后续版本
【评估人员】:程海冰
【评估日期】:20220909
案例
ANR
107023
【现象】:【Q7503】【11.0.1.31(C11E4R4P1log) 】【稳定性】【新出现】【2/10】电脑安装H手机助手,在手机是否安装H手机助手界面,选择取消没有反应,然后弹出“应用安装器”无响应提示框
【概率】:低概率
【根因】:
如下 eventlog,com.android.packageinstaller 发生三次anr
均无dropbox信息,只有cpu调度信息,没有具体堆栈信息,无log无法具体分析,已和刘婵沟通,不能复现,冷僻场景,可小概率跟踪
Line 14949: 10-08 10:34:26.916 1392 12567 I am_anr : [0,25435,com.android.packageinstaller,818429509,Input dispatching timed out (960b6ba com.android.packageinstaller/com.android.packageinstaller.InstallStaging (server) is not responding. Waited 5000ms for MotionEvent(deviceId=4, source=0x00001002, displayId=0, action=DOWN, actionButton=0x00000000, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, classification=NONE, edgeFlags=0x00000000, xPrecision=8.0, yPrecision=8.0, xCursorPosition=nan, yCursorPosition=nan, pointers=[0: (308.2, 2283.5)]), policyFlags=0x66000000)]
Line 16410: 10-08 10:40:00.658 1392 17468 I am_anr : [0,1593,com.android.packageinstaller,818429509,Input dispatching timed out (9a2e461 com.android.packageinstaller/com.android.packageinstaller.InstallStaging (server) is not responding. Waited 5000ms for MotionEvent(deviceId=4, source=0x00001002, displayId=0, action=DOWN, actionButton=0x00000000, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, classification=NONE, edgeFlags=0x00000000, xPrecision=8.0, yPrecision=8.0, xCursorPosition=nan, yCursorPosition=nan, pointers=[0: (286.1, 2268.5)]), policyFlags=0x66000000)]
Line 17518: 10-08 10:43:10.917 1392 19411 I am_anr : [0,1595,com.android.packageinstaller,818429509,Input dispatching timed out (e107622 com.android.packageinstaller/com.android.packageinstaller.InstallStaging (server) is not responding. Waited 5000ms for MotionEvent(deviceId=4, source=0x00001002, displayId=0, action=DOWN, actionButton=0x00000000, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, classification=NONE, edgeFlags=0x00000000, xPrecision=8.0, yPrecision=8.0, xCursorPosition=nan, yCursorPosition=nan, pointers=[0: (359.1, 2239.0)]), policyFlags=0x66000000)]
10-08 10:43:23.531 1392 19411 E ActivityManager: ANR in com.android.packageinstaller (com.android.packageinstaller/.InstallStaging)
10-08 10:43:23.531 1392 19411 E ActivityManager: PID: 1595
10-08 10:43:23.531 1392 19411 E ActivityManager: Reason: Input dispatching timed out (e107622 com.android.packageinstaller/com.android.packageinstaller.InstallStaging (server) is not responding. Waited 5000ms for MotionEvent(deviceId=4, source=0x00001002, displayId=0, action=DOWN, actionButton=0x00000000, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, classification=NONE, edgeFlags=0x00000000, xPrecision=8.0, yPrecision=8.0, xCursorPosition=nan, yCursorPosition=nan, pointers=[0: (359.1, 2239.0)]), policyFlags=0x66000000)
10-08 10:43:23.531 1392 19411 E ActivityManager: Parent: com.android.packageinstaller/.InstallStaging
10-08 10:43:23.531 1392 19411 E ActivityManager: Load: 12.02 / 13.01 / 12.61
10-08 10:43:23.531 1392 19411 E ActivityManager: ----- Output from /proc/pressure/memory -----
10-08 10:43:23.531 1392 19411 E ActivityManager: some avg10=0.36 avg60=0.20 avg300=0.15 total=10344284
10-08 10:43:23.531 1392 19411 E ActivityManager: full avg10=0.00 avg60=0.02 avg300=0.00 total=3177995
10-08 10:43:23.531 1392 19411 E ActivityManager: ----- End output from /proc/pressure/memory -----
10-08 10:43:23.531 1392 19411 E ActivityManager:
10-08 10:43:23.531 1392 19411 E ActivityManager: CPU usage from 0ms to 12654ms later (2022-10-08 10:43:10.850 to 2022-10-08 10:43:23.504):
10-08 10:43:23.531 1392 19411 E ActivityManager: 218% 19345/dex2oat64: 187% user + 31% kernel / faults: 135724 minor 4 major
10-08 10:43:23.531 1392 19411 E ActivityManager: 25% 25178/com.huawei.appmarket: 14% user + 10% kernel / faults: 3662 minor
10-08 10:43:23.531 1392 19411 E ActivityManager: 19% 6546/cds_ol_rx_threa: 0% user + 19% kernel
10-08 10:43:23.531 1392 19411 E ActivityManager: 72% TOTAL: 54% user + 15% kernel + 0.2% iowait + 1.2% irq + 0.8% softirq
【无法下一步分析的具体原因:无log,无法继续分析
【需要测试重新提供的信息:复现后正常抓取log即可
【影响】:anr
【解决计划】:小概率跟踪
【开发复现总次数】:50
【复现方案或测试建议】:如单问题描述
【复现方案评审人员】:景旭
【现象】:【2100965622][ 应用使用问题/ 爱奇艺 /稳定性(使用中闪退、无响应、卡死、黑白屏) /使用中冻屏卡死(无弹框) ]爱奇艺使用移动数据播放影片,从外面回家,进屋后自动连接wifi成功,此时正在播放广告,过程中程序无响应
【概率】:低概率
【根因】:
综下所述,用户反馈为非问题,建议剔除
1、
问题发生时间2022-02-22 23:42:19,用户反馈的问题发生时间,下面目录下并没有打印出anr堆栈
NEP-AN00_NEP-AN00+12.0.1.112(SP2C04E2R2P2log)_ID103_QUES2100965622_TMX9K21B30900202_20220222234334_BetaClub\dropbox
2、
NEP-AN00_NEP-AN00+12.0.1.112(SP2C04E2R2P2log)_ID103_QUES2100965622_TMX9K21B30900202_20220222234334_BetaClub\hilogs\eventslogcat-log.I162.20220222-234329
eventlog中搜索am_anr,并未发现anr信息
3、
在hilog中并没有application not resptonding的字样
【影响】:爱奇艺 anr
【下一步计划】:用户反馈为非问题,建议剔除
脚本分析
获取Android设备中的全部数据信息及日志
故障上报
故障日志
故障现象