一、 SWT 手機(jī)重啟問題簡介
SWT(Software Watch Dog )主要用來監(jiān)控SystemServer等重要線程/Service的運(yùn)行情況。如果發(fā)現(xiàn)其阻塞超過60s,看門狗進(jìn)程就會把系統(tǒng)重啟,進(jìn)而保證系統(tǒng)可以恢復(fù)到正常狀態(tài)。
判斷阻塞的方法有如下兩種。
1.利用 Services 注冊monitor 去Check
2. 發(fā)送handler 到重要的Loop 線程來Check 是否阻塞。
主要是:Main Thread、UI Thread、IO Thread、Display Thread、WMS、Other Services。
3.SWT 判斷阻塞的方法
SWT 判斷阻塞的方法
二、 SWT 手機(jī)重啟問題處理流程
SWT 處理流程:
1.每半分鐘30scheck 一次system_server 進(jìn)程
檢查系統(tǒng)是否卡住,如果卡住,dump一次system_server的backtrace
2.一分鐘卡住后kill,并重新計(jì)數(shù)
如果卡住,第二次dump,并kill掉system_server進(jìn)程 ,否則重新計(jì)時(shí)。
3.SWT 處理大致流程如下
SWT 處理流程
三、 SWT 手機(jī)重啟問題的原因
導(dǎo)致SWT重啟原因的原因有很多種。
1.主要導(dǎo)致的原因如下:
檢查SWT 原因分類
四、 SWT 手機(jī)重啟問題分析流程
首先搜索關(guān)鍵watchdog,查看是否有重啟發(fā)生。
SWT 流程分析
五、SWT 手機(jī)重啟問題分析舉例
1.分析 trace ,確認(rèn)線程關(guān)系
線程被Block搜索關(guān)鍵字held by
確認(rèn)線程關(guān)系
確認(rèn)線程關(guān)系
3.線程死鎖
確認(rèn)Block的線程是否有閉環(huán)的死鎖關(guān)系。
線程死鎖
線程死鎖
4.Binder的Server 端卡住
線程狀態(tài)Native,并且callstack中含有一對
IPCThreadState::waitForResponse
IPCThreadState::talkWithDriver
的明顯特征。
Bind的Server端卡住
Bind的Server端卡住
5.SurfaceFlinger 卡住導(dǎo)致重啟
搜索關(guān)鍵字I watchdog,
查看是否有surfaceflinger hang,默認(rèn)卡住40s,就會重啟。
SurfaceFlinger 卡住
6.Native 方法執(zhí)行時(shí)間過長導(dǎo)致重啟
線程狀態(tài)Native,查看是否有
PowerManagerService.nativeSetAutoSuspend
Native 方法執(zhí)行時(shí)間過長
7.Zygote Fork 進(jìn)程時(shí)卡住
線程狀態(tài)Native,查看是否有
Process.zygoteSendArgsAndGetResult
Zygote Fork 進(jìn)程時(shí)卡住
8.Dump 時(shí)間過長
Dump超過60s可能會引起手機(jī)重啟。
搜索關(guān)鍵字dumpStackTraces或dumpStackTraces process
Dump 時(shí)間過長
9.前面有ANR 發(fā)生
前面有ANR 發(fā)生
前面有ANR 發(fā)生
10.前面有fatal JE NE KE 等Exception發(fā)生
前面有fatal JE NE KE 等Exception發(fā)生
11.自動化測試腳本有call dumpsys 去dump 系統(tǒng)信息
自動化測試腳本有call dumpsys 去dump 系統(tǒng)信息
六、 Android O以上導(dǎo) Log 注意事項(xiàng)
Android O以上的mtklog和db不在同一個(gè)目錄,需要執(zhí)行以下adb命令 導(dǎo)Log.
//1. 導(dǎo) MTK log adb pull /sdcard/mtklog //2. 導(dǎo) AEE log,如果沒有,請執(zhí)行第3步 adb pull /data/aee_exp //3.導(dǎo) data 下MTK緩存 的aee log adb pull /data/vendor/mtklog/aee_exp
-
手機(jī)
+關(guān)注
關(guān)注
35文章
6898瀏覽量
158269 -
看門狗
+關(guān)注
關(guān)注
10文章
566瀏覽量
70949 -
線程
+關(guān)注
關(guān)注
0文章
505瀏覽量
19758 -
SWT
+關(guān)注
關(guān)注
0文章
4瀏覽量
6638
原文標(biāo)題:六、 Android O以上導(dǎo) Log 注意事項(xiàng)
文章出處:【微信號:哆啦安全,微信公眾號:哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論