问题:当我们遇到了手机死机问题(hang issue),如何进行处理?
如果手机死机,并且没有重启(reboot),可能的原因:
1、 在kernel中,进程中有一些dead lock,同时Android service也堵塞了(blocked),但是time interrupt和dog kick仍然能够running。因此手机没有重启。
2、 Deadlock发生在android userspace server,如service manager 或者serviceflinger。
两种情景抓取log:
1、 adbshell 能够工作
通过adb获取一些信息,如adb bugreport > D:\bugreport.txt。
一些Android framework dead lock可能导致bugreport hang。因此需要先获取一些简单log,如dmesg和logcat log。再进行adb bugreport操作。获取dmesg log之后,通过sysrq 接口获取更多信息。
kernel/Documentation/sysrq.txt显示 stack for all active CPUecho l >/proc/sysrq-trigger
显示hold lock echo d > /proc/sysrq-trigger
显示 hrtimerecho q > /proc/sysrq-trigger
disk sleep(uninterruptable sleep)时显示tasks,如阻塞在mutex或者hardware
register access。echo w &