1.正常情況下,當手機非第一次重啟,kernel的hang_monitor 會正常啟動:
2. 當手機發生fwr後,由於kernel會正常執行,所以hang_detect的機制理論上會正常工作;
// hang_detect的工作機制流程
kernel-3.18/drivers/misc/mediatek/aee/aed/monitor_hang.c
以上是在monkey測試中發現一例卡在開機階段的問題。分析如下:
灰屏的問題現場debug分析如下:
1. 初步分析問題原因是由於在開啟過程中,啟動displaymanagerservice後,去等待螢幕亮起時,由於需要與sf進行ipc通訊;但sf binder現場耗盡無法處理,導致一直卡在開機階段;
//啟動display階段
06-06 17:44:09.958 10128 10128 i systemserver: waitfordisplay
06-06 17:44:19.343 10128 10140 i systemserver: msftime=0
06-06 18:14:01.059 10128 10140 i systemserver: msftime=0
//displaymanagerservice onbootphase 階段
06-06 17:44:09.954 10128 10128 i systemservicemanager: starting com.android.server.display.displaymanagerservice
06-06 17:44:09.958 10128 10128 i systemservicemanager: starting phase 100
//displaymanagerservice 新增預設display
06-06 17:44:09.954 10128 10128 i systemservicemanager: starting com.android.server.display.displaymanagerservice
06-06 17:44:09.965 10128 10152 i displaymanagerservice: display device added: displaydeviceinfo else
//每次count reset
reset_hang_info();
}log裡可以驗證這點:
count在11的基礎上加4 說明走了else的邏輯,且每次都reset了count的值
<6>[427067.792783] (2)[139:hang_detect][hang_detect] hang_detect thread counts down 15:11, status 0.
<6>[427067.792783] (2)[139:hang_detect][hang_detect] hang_detect thread counts down 15:11, status 0.
<6>[427097.796111] (2)[139:hang_detect][hang_detect] hang_detect thread counts down 15:11, status 0.
<6>[427097.796111] (2)[139:hang_detect][hang_detect] hang_detect thread counts down 15:11, status 0.
解決方案:
該問題hang_detect存在這種情況,且不止一例,如果以後在kernel檔案發現counts 比hd_timeout_count 大4 ,說明kick時,system_server 被重啟過。
由於這塊屬於bsp,給出的建議有如下2種:
1 . 當檢測到system_server 不存在時,繼續下一次迴圈
system_server_pid = findtaskbyname("system_server");
+if (system_server_pid != -1)
+if ((hd_detect_enabled == 1)) {
- if ((hd_detect_enabled == 1) && (system_server_pid != -1))
2.去掉如下判斷,因為在if條件裡還會判斷hang_detect的超時機制,還會觸發hang_detect
+if ((hd_detect_enabled == 1)) {
- if ((hd_detect_enabled == 1) && (system_server_pid != -1))
方案由bsp 評估合入。 monkey入門 monkey測試入門
1.設安裝包 apk 包名為 com.2.把安裝包放在 c monkey monkey為新建的資料夾 3.cmd進入命令列,手機和電腦連線。手機開啟開發者模式,允許除錯 二 輸入命令 cd c monkey 這樣就進入了放置安裝包的目錄下,就可以安裝安裝包了 1.安裝包 adb install ap...
Monkey測試2 Monkey測試策略
monkey的測試策略 一.分類 monkey測試針對不同的物件和不同的目的採用不同的測試方案,首先測試的物件 目的及型別如下 測試的型別分為 應用程式的穩定性測試和壓力測試 測試物件分為 單一apk和apk集合 測試的目的分為 解決問題的測試 忽略異常的測試 和驗收測試 不忽略異常的測試 二.應用...
monkey測試 安卓測試之monkey
安卓手機最簡單的隨機壓力測試工具monkey真的是測試的福星,人人都可以用,只需要敲一串命令即可 舉例 adb shell monkey p com.android.camera ignore crashes ignore timeouts throttle 300 s 10 v 1000 各引數說...