【系统异常分析】
你必须十分努力,才能看起来毫不费力
纸上得来终觉浅,绝知此事要躬行
展开
-
tombstone 分析
Coredump 是分析Android native exception和kernel exception的利器,coredump是核心转储,可以理解为当进程发生异常无法挽救时,OS机制把这块出问题的内存取出来打包成核心转储供给离线分析用。有了coredump 不但可以定位具体出异常的代码所在文件行数,还可以离线调试,一步步还原问题现场,抓出导致异常真凶.但是很多时候由于系统挂得太突然等某些原原创 2016-11-18 21:41:25 · 12679 阅读 · 2 评论 -
TEE OS内发生segment fault导致的Android Crash
现象使用错误手指触摸指纹5次,指纹被锁定后,按power灭屏再亮屏,手动解图形锁概率发生卡住,另外插入USB不复现。分析Exception Class: SWTException Type: system_server_watchdogCurrent Executing Process: system_serverTrigger time:[2018-01-02 12:51:47.93449] p...原创 2018-03-24 15:52:15 · 1443 阅读 · 0 评论 -
AlarmManager使用不当导致的充电低概率dead lock-6580-O1平台
记录碰到的一个比较简单的Android dead lock分析过程。现象:偶现一次开机充电过程中断开充电器后,充电指示灯长亮,手机屏幕全黑,按power键无法点亮屏幕(有log)DEBUG:Exception Log Time:[Wed Mar 21 09:16:58 CST 2018] [424.407980]Exception Class: SWTException Type: system_...原创 2018-03-24 15:20:53 · 758 阅读 · 0 评论 -
FTM下执行full test,进入camera test卡住,稍后手机重启
遇到一个重启问题,比较简单,记录下分析思路,6580平台.现象:FTM (apk)下执行full test,到进入camera test的时候高概率出现卡顿死机现象。第一感觉是camera test模块出了问题,拿到mtklog,查看aee_exp_backup目录,发现有SWI跟KE出现,使用最新版本GAT工具解开SWI和KE 的db.首先看NE的db解析:Exception Cl原创 2017-12-12 17:59:40 · 1651 阅读 · 0 评论 -
hang_detect类死锁解题案例分析
背景知识【hang detect 机制】MTK在内核中新增了一个用于监视system_server的SW watchdog字符设备驱动:/dev/RT_Monitor,该设备会启动一个内核线程循环去check system_server线程的状态,若system_server不存在则表明Andriod在执行restart,若system_server存在,hang_detect_counter 就原创 2018-01-20 13:38:53 · 5589 阅读 · 2 评论 -
高通8937平台手机关机概率卡住问题分析
异常现象:高通8937平台手机执行开关机压力测试出现概率性无法关机,平均复现概率为1/400次, 问题出现时手机黑屏,看上去像死机,但充电灯在亮着.分析:拿到机器发现adb还可以使用,那既然adb还可以用,说明系统并没有发生kernel panic,只是由于某种原因导致关机Thread发生了stuck,跟死锁的现象有点像,问题是概率发生并且概率比较低,能想到比较合适的分析方原创 2016-09-28 13:17:59 · 5297 阅读 · 4 评论 -
一台机器执行monkey test测试出现概率死机
记录一次概率死机的debug过程,概率性问题无法验证,仅是对现有的资料做出推理分析,若有不对的地方,欢迎各位看官拍砖。现象:发现一台机器执行monkey test测试出现概率死机现象,mt6580-N平台。拿到mtklog,发现有发生NE和KE,使用GAT工具的logview-》open Aee db解压db发现Build Info: 'alps-mp-n0.mp2:alps-mp-n原创 2017-12-14 13:18:22 · 3338 阅读 · 2 评论 -
高通平台Linux kernel死机解题心得
1、前言1.1 目的能够借助相关调试工具,使用一般分析手段分析、定位解决项目过程中遇到的死机类系统稳定性问题,提升工作效率持续积累,拓宽知识深度和广度1.2 死机?指系统发生致命性异常导致主动或者被动进入系统完全不可用的状态,导致系统死机的问题原因有很多,排除硬件问题,还有这些大模块:Android、Linux kenrel、modem、TZ 等等,各个子系统都原创 2017-08-20 22:39:28 · 29869 阅读 · 15 评论 -
Crash加载ramdump报cpu_possible_mask异常问题
在使用Crash调试ramdump的时候发现一个错误,这里记录下。$ crash vmlinux sysdumpcrash 7.1.3Copyright (C) 2002-2014 Red Hat, Inc.Copyright (C) 2004, 2005, 2006, 2010 IBM CorporationCopyright (C) 1999-200原创 2017-05-20 15:28:09 · 2569 阅读 · 5 评论 -
Trace32 加载MTK平台 SYS_MINI_RDUMP
MTK平台发生kernel panic之后会生成 aee_exp目录,里面会有相应的db文件,解开可以得到SYS_MINI_RDUMP文件,这个是一个微型的ramdump,一般只有几MB大小,结合vmlinux可以使用trace32调试。1、将以下内容保存到 debug.cmm;ocal &off if os.file.size("SYS_MINI_RDUMP")0x2原创 2017-04-15 17:31:41 · 3206 阅读 · 0 评论 -
高通平台 ramdump-parser 简介
ramdump 是什么?简单来说就是把系统memory中的某一个时间点的的数据信息通过一定手段取出来保存起来的内存崩溃文件,属于ELF文件格式。当系统发生致命错误无法恢复的时候,主动触发抓取ramdump把异常现场保留下来供离线分析定位问题是一种非常重要的高级调试手段。高通的ramdump触发后可以连USB通过PC工具拉出来,都是一堆binary文件,需要使用特定的脚本工具进一步解原创 2017-04-15 16:57:16 · 21311 阅读 · 11 评论 -
early_suspend 休眠死机
现象:待机状态下,按Power键或者自动进入休眠,稳定死机.1、取出db解开获取SYS_MINI_RDUMP, 使用 gdb 调试:android@c0490:~/log/6601/20151220-goodix-KE$ arm-linux-androideabi-gdb vmlinux SYS_MINI_RDUMP GNU gdb (GDB) 7.6Copyrig原创 2015-12-21 19:13:53 · 1820 阅读 · 2 评论 -
待机时反复按Power键概率性重启-定位问题
现象:待机时反复按power键休眠会有概率性重启,概率 >= 50%,但连接USB线情况下不会出现,所有怀疑是系统进入休眠才发生了异常,取出mtklog看到有db产生,确实发生了KE(kernel exception),取出db 和 vmlinux (必须是和当前软件是同一次编译的)后,使用GAT工具解开db,取出 SYS_MINI_RDUMP,使用 gdb 调试:andr原创 2015-12-19 12:05:03 · 1986 阅读 · 5 评论 -
待机时反复按Power键概率性重启 - 解决问题
上一篇主要分析了如何根据KE后AEE留下的内存转存 db文件(SYS_MINI_RDUMP),使用gdb调试,分析汇编指令和源代码,一步一步追踪,抓住导致死机的凶手地址。在经过一系列分析代码追踪,log打印验证等手段后,最终发现凶手是silead_fp_dev这个设备驱动。 本篇接着上一篇内容,分析如何最终解决问题。 上一篇中,我用dump_stack() 打印出silead_fp原创 2015-12-19 16:25:50 · 1461 阅读 · 0 评论 -
深入 kernel panic 流程
一、前言 我们在项目开发过程中,很多时候会出现由于某种原因经常会导致手机系统死机重启的情况(重启分Android重启跟kernel重启,而我们这里只讨论kernel重启也就是 kernel panic 的情况),死机重启基本算是影响最严重的系统问题了,有稳定复现的,也有概率出现的,解题难度也千差万别,出现问题后,通常我们会拿到类似这样的kernel log信息(下面log仅以调用BUG原创 2016-11-19 22:19:48 · 18353 阅读 · 2 评论 -
Dexopt代码修改导致的低概率Android soft watchdog timeout
现象:使用过程中手机低概率卡住,等待30s左右死机重启,6580-O1平台.分析:Exception Class: SWTException Type: system_server_watchdogCurrent Executing Process: system_serverTrigger time:[2018-01-01 00:16:30.483495] pid:639Backtrace: P...原创 2018-03-26 20:44:11 · 1709 阅读 · 0 评论