Bug #117479

【AF】【EVT3】【压测】【偶现】在OTA压测过程中,设备升级后重启时,桌面出现”Quickstep没有响应“的提示

Added by 移动测试一组_CDTS 刘强 about 2 years ago. Updated about 2 years ago.

Status:CLOSEDStart date:2023-04-14
Priority:HighDue date:2023-05-10
Assignee:移动测试一组_CDTS 刘强% Done:

100%

Category:CD-APP
Target version:-
Need_Info:-- Found Version:0086-0090
Resolution:FIXED Degrated:No
Severity:Major Verified Version:
Reproducibility:Occasionally Fixed Version:2023-05-23
Test Type:ST Root cause:编码问题

Description

【测试步骤】
1、使用脚本进行OTA压测:0086-0090
2、升级成功后设备自动重启
3、重启后查看设备基本功能

【预期结果】
3、设备基本功能正常

【实际结果】
3、桌面出现”Quickstep停止运行“的提示

Screenshot_20230411-051222.png (684 KB) 移动测试一组_CDTS 刘强, 2023-04-14 11:44

OTA.txt Magnifier (2.28 MB) 移动测试一组_CDTS 刘强, 2023-04-14 11:44

anr_2023-04-11-05-10-13-729 (1.48 MB) CD FW 曹覃刚, 2023-04-14 16:41

Screenshot_20230411-051222

History

#1 Updated by 移动测试一组_CDTS 刘强 about 2 years ago

  • Subject changed from 【AF】【EVT3】【压测】【偶现】在OTA压测过程中,设备升级后重启时,桌面出现”Quickstep停止运行“的提示 to 【AF】【EVT3】【压测】【偶现】在OTA压测过程中,设备升级后重启时,桌面出现”Quickstep没有响应“的提示

#2 Updated by CD FW 曹覃刚 about 2 years ago

  • File anr_2023-04-11-05-10-13-729 added
  • Category changed from CD-FW to CD-APP
  • Status changed from New to ASSIGNED
  • Assignee changed from CD FW 曹覃刚 to CD APP-王宏

Hi 王宏
桌面发生anr
suspend all histogram: Sum: 280us 99% C.I. 0.090us-193.040us Avg: 16.470us Max: 197us
DALVIK THREADS (27):
"main" prio=5 tid=1 Runnable | group="main" sCount=0 ucsCount=0 flags=0 obj=0x7192b3f8 self=0xb40000711f883be0 | sysTid=2718 nice=-10 cgrp=default sched=0/0 handle=0x72e93824f8 | state=R schedstat=( 294153651 88911975 460 ) utm=23 stm=6 core=6 HZ=100 | stack=0x7fd383f000-0x7fd3841000 stackSize=8188KB | held mutexes= "mutator lock"(shared held)
at com.android.launcher3.WorkspaceLayoutManager.addInScreen(WorkspaceLayoutManager.java:93)
at com.android.launcher3.Workspace.addInScreen(Workspace.java:3473)
at com.android.launcher3.WorkspaceLayoutManager.addInScreenFromBind(WorkspaceLayoutManager.java:49)
at com.android.launcher3.Launcher.bindItems(Launcher.java:2454)
at com.android.launcher3.Launcher.bindItems(Launcher.java:2376)
at com.android.launcher3.model.BaseLoaderResults$WorkspaceBinder.lambda$bindWorkspaceItems$7(BaseLoaderResults.java:245)
at com.android.launcher3.model.BaseLoaderResults$WorkspaceBinder$$ExternalSyntheticLambda5.execute(unavailable:-1)
at com.android.launcher3.model.BaseLoaderResults$WorkspaceBinder.lambda$executeCallbacksTask$9$BaseLoaderResults$WorkspaceBinder(BaseLoaderResults.java:266)
at com.android.launcher3.model.BaseLoaderResults$WorkspaceBinder$$ExternalSyntheticLambda8.run(unavailable:-1)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7880)
at java.lang.reflect.Method.invoke(Native method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1009)

#3 Updated by CD APP-王营 about 2 years ago

  • Due date set to 2023-04-18

#4 Updated by CD APP-王宏 about 2 years ago

  • Assignee changed from CD APP-王宏 to CD APP-王营

#5 Updated by CD APP-王营 about 2 years ago

  • Due date changed from 2023-04-18 to 2023-04-21

■ Current conclusion
分析中
Launcher桌面发生anr的原因如下:
04-11 05:10:25.328 1553 4032 E ActivityManager: Reason: Input dispatching timed out (595168f com.android.launcher3/com.android.launcher3.uioverrides.QuickstepLauncher (server) is not responding. Waited 5005ms for FocusEvent(hasFocus=true))

分析trace文件中,Launcher加载数据过程中有锁未释放,Log如下:
"launcher-loader" prio=5 tid=19 TimedWaiting | group="main" sCount=1 ucsCount=0 flags=1 obj=0x133c1588 self=0xb40000711f8b9a10 | sysTid=2785 nice=10 cgrp=default sched=0/0 handle=0x6f318dfcb0 | state=S schedstat=( 29957232 32796666 178 ) utm=1 stm=1 core=2 HZ=100 | stack=0x6f317dc000-0x6f317de000 stackSize=1039KB | held mutexes=
at java.lang.Object.wait(Native method)
- waiting on <0x0d86c4fa> (a com.android.launcher3.model.LoaderTask)
at java.lang.Object.wait(Object.java:442)
at com.android.launcher3.util.LooperIdleLock.awaitLocked(LooperIdleLock.java:57)
at com.android.launcher3.model.LoaderTask.waitForIdle(LoaderTask.java:166)
- locked <0x0d86c4fa> (a com.android.launcher3.model.LoaderTask)
at com.android.launcher3.model.LoaderTask.run(LoaderTask.java:221)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.os.HandlerThread.run(HandlerThread.java:67)

Launcher桌面的数据是异步加载,从UI层产生的错误的log来看,WorkspaceLayoutManager 在 addInScreen() 方法中发生anr

■ Next action

继续分析Launcher从获取数据到绑定item到workspace流程中,在哪一个环节会造成anr问题。

#6 Updated by CD APP-王营 about 2 years ago

■ Current conclusion
分析中,暂时未能找到异常原因,正在根据log分析anr发生之前的系统行为。

■ Next action
1、继续分析log
2、尝试复现此问题

#7 Updated by CD APP-王营 about 2 years ago

■ Current conclusion
已有一种方案,可修改后验证
■ My analysis

Log中提示Launcher主线程任务太多,从此处着手进行优化,SharedPreference第一次读写数据的时候比较耗时,放在Application中进行初始化。
此问题会继续在以下文档下更新:
https://thundersoft.feishu.cn/docx/T5zldHBUMohQ1jxfgULc9tsKndc

■ Next action
优化后验证

#8 Updated by CD APP-王营 about 2 years ago

■ Current conclusion
对比了异常情况和正常启动的log发现如下差异:

ota升级后正常启动的log会调用LauncherModel的startLoader()方法并抛出异常:
04-26 03:16:15.733 2700 2700 D Launcher.Model: startLoader
04-26 03:16:15.733 2700 2700 D Launcher.Model: java.lang.Exception
04-26 03:16:15.733 2700 2700 D Launcher.Model: at com.android.launcher3.LauncherModel.startLoader(LauncherModel.java:360)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at com.android.launcher3.LauncherModel.addCallbacksAndLoad(LauncherModel.java:340)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at com.android.launcher3.Launcher.onCreate(Launcher.java:530)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at com.android.launcher3.BaseQuickstepLauncher.onCreate(BaseQuickstepLauncher.java:147)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at android.app.Activity.performCreate(Activity.java:8094)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at android.app.Activity.performCreate(Activity.java:8074)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1330)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3609)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3793)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2211)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at android.os.Handler.dispatchMessage(Handler.java:106)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at android.os.Looper.loopOnce(Looper.java:201)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at android.os.Looper.loop(Looper.java:288)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at android.app.ActivityThread.main(ActivityThread.java:7880)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at java.lang.reflect.Method.invoke(Native Method)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
04-26 03:16:15.733 2700 2700 D Launcher.Model: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1009)

启动log已经上床normalStart_new

异常情况下的log中没有此log,说明异常情况下Launcher数据的加载流程出现问题或者block.

■ Next action
现有log中未能分析出异常产生的原因,添加强化日志,复现此问题,再根据最新日志分析流程中可能出现的问题

■Submit URL

https://dev.thundercomm.com/gerrit/c/general/platform/packages/apps/Launcher3/+/196622

#9 Updated by CD APP-王营 about 2 years ago

■ Current conclusion
分析中
■ My analysis

从目前logcat和trace分析,还是怀疑Laucher的主线程被block了,需要增加日志看下被block在了哪里
1. 在Launcher增加日志,从86-》增加了日志的刷机版本,ota压测,获取更多的log信息
2. 直接在90版本上进行开关机压测,看下ANR是否跟ota有关系
3. 在86版本上push 新的Launcher app,进行开关机的压测,如果没有一样的ANR发生,说明ANR可能跟Launcher没关系 。
4. 差分一下86和90之间有哪些更新,找下有没有怀疑点

■ Next action
根据当前方向继续分析。

#10 Updated by 移动测试一组_CDTS 刘强 about 2 years ago

1. Qile烧写0086版本后开机到操作界面
2. adb push updata.zip /sdcard/Download/ push升级包到设备
3. 设置搜索框输入*#149#
4. 点击升级
5. 升级完成后系统自动重启
6. 重复step1-5

#11 Updated by CD APP-王营 about 2 years ago

  • Due date changed from 2023-04-21 to 2023-05-10

#12 Updated by CD APP-王营 about 2 years ago

■ Current conclusion
OTA压测201次在第201次发生anr,已抓取Logcat 和trace
■ My analysis

根据Trace文件定位在Launcher启动后注册了一个广播接收器,此Receiver在在注册后马上收到了广播,通过SharedPreference进行数据保存,怀疑在保存之前会进行SharedPreference的初始化,此过程可能导致主线程耗时太久。

■ Next action
继续分析主线程在启动后的工作流程。

#13 Updated by CD APP-王营 about 2 years ago

  • % Done changed from 0 to 100
  • Resolution changed from -- to FIXED
  • Degrated changed from -- to No
  • Fixed Version set to 2023-05-23
  • Root cause set to 编码问题

【当前进展】
问题已处理,待验证
【分析】
从复现log中分析可知主线程任务太多被block,导致Launcher的LoaderTask回调延迟,View渲染滞后,无法响应focusEvent。
trace文件中问题定位log如下
at com.android.launcher3.util.MCUUtil.saveLastActivity(MCUUtil.java:46)
at com.android.launcher3.util.ActivityChangeReceiver.onReceive(ActivityChangeReceiver.java:15)
at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1679)
at android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0.run(unavailable:-1)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7880)
at java.lang.reflect.Method.invoke(Native method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1009)

广播接收器的onReceive方法在主线程执行,此阶段出现block会影响Launcher View的渲染
MCUUtil在获取topActivity时会获取AMS服务,拿到Activity信息,在广播接收器的intent中已经包含了Activity的数据,基于以上两点做出以下优化:

1、防止广播接收器onReceive方法中耗时block主线程,在onReceive方法中任务通过子线程来执行
2、topActivity中的数据直接从Intent中取得。

【提交】

https://dev.thundercomm.com/gerrit/c/general/platform/packages/apps/Launcher3/+/201606

#14 Updated by IoT scm about 2 years ago

Gerrit Merge Information
ID Project Branch Uploader
201606 general/platform/packages/apps/Launcher3 Pre_figure_turbox-c2130c-la1.1-qssi12-dev
AF: Launcher: Optimize receiver logic
1.Optimize activity change receiver log when save top activity info.
TC-RID: 0301-0205301
IssueID: TS-R-BUG-117479
Change-Id: I63e2f0be80a0b1a5c02e033b9fbb46b77b4a777d

#15 Updated by CD APP-王营 about 2 years ago

  • Status changed from ASSIGNED to RESOLVED
  • Assignee changed from CD APP-王营 to 移动测试一组_CDTS 刘强

#16 Updated by 移动测试一组_CDTS 刘强 about 2 years ago

压测:64次未复现
继续跟踪

#17 Updated by 移动测试一组_CDTS 刘强 about 2 years ago

  • Status changed from RESOLVED to VERIFIED

验证版本:0106版本
累积压测:190次 未出现问题
但其他测试场景出现这个error,由另一个问题跟踪:https://share.thundersoft.com/redmine/issues/118625

#18 Updated by 移动测试一组_CDTS 刘强 about 2 years ago

  • Status changed from VERIFIED to CLOSED

Also available in: Atom PDF