解析bugreport,根据不同的log分析Android重启的原因
这种情况是最简单的,我们可以查看LAST_KMSG的最后一行,就可以得到相应的重启原因。1
Restarting system with command: ***
这种情况就是系统出错导致的重启。可以按一下四种情况去诊断其重启原因。
一般分为两个层面的重启,一种是hard reboot,一般是kernel 或者 radio-level的错误导致重启;另一种是在kernel正常运行的情况下Android runtime的重启,可能是由Deadlock,System server process crash或native crash导致的。
诊断是否有kernel panic, 可以check kernel logs里是否有如下log1
2
3
4[ 424.909515] Kernel panic - not syncing: Fatal exception
[ 424.909606] Backtrace:
[ 424.909790] [<c005a5ec>] (dump_backtrace+0x0/0x10c) from [<c05f38dc>] (dump_stack+0x18/0x1c)
[ 424.909973] r6:c5cccf00 r5:00000000 r4:c08505a0 r3:00000000
Radio level的错误可以查看LAST_KMSG中是否有如下log1
2[ 535.383270] ARM9 has CRASHED
[ 535.383666] smem: DIAG 'MOD SM-TM 00000
死锁的error log如下,可以从EVENT_LOG或者SYSTEM_LOG中查找。1
04-04 14:06:16.888 885 1089 W Watchdog: *** WATCHDOG KILLING SYSTEM PROCESS: null
log如下,也是从EVENT_LOG或者SYSTEM_LOG中查找。关键字:
*** FATAL EXCEPTION IN SYSTEM PROCESS
1 | 01-01 12:45:11.950 E/AndroidRuntime( 4429): *** FATAL EXCEPTION IN SYSTEM PROCESS: main |
Native crash的log都是从一行星号开始, 可以作为标志去SYSTEM_LOG中查找。1
2
3
4
5
6
7
8
9
1007-28 11:31:21.675: INFO/DEBUG(2880): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
07-28 11:31:21.675: INFO/DEBUG(2880): Build fingerprint: 'verizon/voles/sholes/sholes:2.2.2/FRG83G/91102:user/release-keys'
07-28 11:31:21.675: INFO/DEBUG(2880): pid: 2893, tid: 2894 >>> com.gnychis.coexisyst <<<
07-28 11:31:21.675: INFO/DEBUG(2880): signal 11 (SIGSEGV), fault addr 2d4eedb4
07-28 11:31:21.675: INFO/DEBUG(2880): r0 2d4eeda4 r1 00000000 r2 00000024 r3 00000000
07-28 11:31:21.675: INFO/DEBUG(2880): r4 00d3e770 r5 00000000 r6 4184ff98 r7 4184ffa4
07-28 11:31:21.675: INFO/DEBUG(2880): r8 100ffad0 r9 4184ff9c 10 4184ff84 fp 100ffe30
07-28 11:31:21.675: INFO/DEBUG(2880): ip 85b7efec sp 100ffa88 lr 845d13f8 pc 845f8c38 cpsr 60000010
07-28 11:31:21.675: INFO/DEBUG(2880): d0 6472656767756265 d1 4472fb3844714069
...