Bug #112532
测试 Test-IT #110961: V2.0功能测试
测试 Test-IT #111047: AF-V2.0-小窗模式
【AF】【EVT】【小窗模式】连续两次打开音乐小窗,第二次打开后不关闭,直至进入屏保模式,进入屏保模式后有概率无法操作,3-5分钟后设备自动重启
Status: | CLOSED | Start date: | 2022-10-12 | |
---|---|---|---|---|
Priority: | Urgent | Due date: | ||
Assignee: | CD TEST-方永红 | % Done: | 100% | |
Category: | CD-FW | |||
Target version: | VX1_MCE_FSE_V2.0_update_20221012 | |||
Need_Info: | -- | Found Version: | FlatBuild_VX1_MCE_xx.xx_FSE.D.userdebug.0.0.0.20221012.alpha | |
Resolution: | FIXED | Degrated: | -- | |
Severity: | Critical | Verified Version: | FlatBuild_VX1_MCE_xx.xx_FSE.D.userdebug.0.0.0.20221018 | |
Reproducibility: | Occasionally | Fixed Version: | 2022-10-20 | |
Test Type: | IT | Root cause: | DreamManagerService中isDreaming方法存在lock,实际上DreamManagerService上大部分公开方法都持有这个锁,当进入Dream的时候DreamManagerService中方法调用频繁,锁竞争造成死锁anr |
Description
【前提条件】
1、设备已开机
【测试步骤】
1、打开音乐小窗模式,关闭
2、再次打开音乐小窗模式,不关闭
【预期结果】
3、正常进入屏保模式,单击屏保回到该状态
【实际结果】
3、进入屏保模式后有概率无法操作,3-5分钟后设备自动重启
【复现率】
30%,VC1和VX1的屏幕上均有复现
History
#1 Updated by CD FW 曹覃刚 over 2 years ago
- Assignee changed from CD FW 曹覃刚 to DL FW-张挽强
Hi
在不使用小窗模式打开音乐软件,不会有这个问题
请帮忙调查,谢谢
#2 Updated by DL FW-张挽强 over 2 years ago
- Assignee changed from DL FW-张挽强 to CD TEST-方永红
分析:
10-12 02:58:23.356 1125 1666 E Watchdog: First set of traces taken from /data/anr/anr_2022-10-12-02-57-31-337
10-12 02:58:23.396 1125 1666 E Watchdog: Second set of traces taken from /data/anr/anr_2022-10-12-02-58-10-243
10-12 02:58:23.471 1125 6570 I DropBoxManagerService: add tag=system_server_watchdog isTagEnabled=true flags=0x6
10-12 02:58:23.486 1125 1666 W Watchdog: *** WATCHDOG KILLING SYSTEM PROCESS: Blocked in handler on foreground thread (android.fg), Blocked in handler on display thread (android.display), Blocked in handler on animation thread (android.anim), Blocked in handler on PowerManagerService (PowerManagerService)
10-12 02:58:23.486 1125 1666 W Watchdog: android.fg annotated stack trace:
10-12 02:58:23.486 1125 1666 W Watchdog: at com.android.server.dreams.DreamManagerService$4.onDreamStopped(DreamManagerService.java:511)
发生死锁导致anr 期望可以提供全日志 包括dropbox anr 另外提供一下问题发生的时间点 谢谢
#3 Updated by CD TEST-方永红 over 2 years ago
- File Log_Music_ANR_10-15_02_08.zip added
#4 Updated by CD TEST-方永红 over 2 years ago
- Assignee changed from CD TEST-方永红 to DL FW-张挽强
#5 Updated by CD TEST-方永红 over 2 years ago
- File Log_music_ANR_10-15_06_02-03.zip added
#6 Updated by DL FW-张挽强 over 2 years ago
- Status changed from New to ASSIGNED
- Assignee changed from DL FW-张挽强 to CD- FW-石豪
"Binder:8933_F" prio=5 tid=150 Blocked
| group="main" sCount=1 ucsCount=0 flags=1 obj=0x13600080 self=0xb400007d13bd62f0
| sysTid=12923 nice=0 cgrp=default sched=0/0 handle=0x7ad4676cb0
| state=S schedstat=( 1868413121 1398833426 5373 ) utm=83 stm=103 core=2 HZ=100
| stack=0x7ad457f000-0x7ad4581000 stackSize=991KB
| held mutexes=
at com.android.server.wm.ActivityTaskManagerService$LocalService.notifyDreamStateChanged(ActivityTaskManagerService.java:5353)
- waiting to lock <0x00627d1e> (a com.android.server.wm.WindowManagerGlobalLock) held by thread 17
at com.android.server.dreams.DreamManagerService.cleanupDreamLocked(DreamManagerService.java:466)
at com.android.server.dreams.DreamManagerService.stopDreamLocked(DreamManagerService.java:432)
at com.android.server.dreams.DreamManagerService.finishSelfInternal(DreamManagerService.java:229)
- locked <0x0adb8d59> (a java.lang.Object)
at com.android.server.dreams.DreamManagerService.access$1800(DreamManagerService.java:71)
at com.android.server.dreams.DreamManagerService$BinderService.finishSelf(DreamManagerService.java:678)
at android.service.dreams.IDreamManager$Stub.onTransact(IDreamManager.java:245)
at android.os.Binder.execTransactInternal(Binder.java:1179)
at android.os.Binder.execTransact(Binder.java:1143)
"android.anim" prio=5 tid=17 Blocked
| group="main" sCount=1 ucsCount=0 flags=1 obj=0x14681398 self=0xb400007d13ab91b0
| sysTid=8955 nice=-10 cgrp=default sched=0/0 handle=0x7b12d77cb0
| state=S schedstat=( 8904928424 3440726525 21052 ) utm=420 stm=470 core=4 HZ=100
| stack=0x7b12c74000-0x7b12c76000 stackSize=1039KB
| held mutexes=
at com.android.server.dreams.DreamManagerService.isDreamingInternal(DreamManagerService.java:190)
- waiting to lock <0x0adb8d59> (a java.lang.Object) held by thread 150
at com.android.server.dreams.DreamManagerService.access$1400(DreamManagerService.java:71)
at com.android.server.dreams.DreamManagerService$BinderService.isDreaming(DreamManagerService.java:614)
at android.app.DreamManager.isDreaming(DreamManager.java:114)
at com.android.server.wm.InsetsPolicy.getStatusControlTarget(InsetsPolicy.java:350)
at com.android.server.wm.InsetsPolicy.updateBarControlTarget(InsetsPolicy.java:141)
at com.android.server.wm.DisplayPolicy.updateSystemUiVisibilityLw(DisplayPolicy.java:2658)
at com.android.server.wm.DisplayPolicy.finishPostLayoutPolicyLw(DisplayPolicy.java:2047)
at com.android.server.wm.DisplayContent.applySurfaceChangesTransaction(DisplayContent.java:4318)
at com.android.server.wm.RootWindowContainer.applySurfaceChangesTransaction(RootWindowContainer.java:1076)
at com.android.server.wm.RootWindowContainer.performSurfacePlacementNoTrace(RootWindowContainer.java:852)
at com.android.server.wm.RootWindowContainer.performSurfacePlacement(RootWindowContainer.java:805)
at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementLoop(WindowSurfacePlacer.java:177)
at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:126)
at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:115)
at com.android.server.wm.WindowSurfacePlacer$Traverser.run(WindowSurfacePlacer.java:57)
- locked <0x00627d1e> (a com.android.server.wm.WindowManagerGlobalLock)
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)
at com.android.server.ServiceThread.run(ServiceThread.java:44)
分析:
tid150和 tid17死锁
tid 150
at com.android.server.dreams.DreamManagerService.finishSelfInternal 持有DreamManagerService.mlock
at com.android.server.wm.ActivityTaskManagerService$LocalService.notifyDreamStateChanged(ActivityTaskManagerService.java:5353) 等待WindowManagerGlobalLock
tid17
at com.android.server.wm.WindowSurfacePlacer$Traverser.run(WindowSurfacePlacer.java:57) 持有WindowManagerGlobalLock
at com.android.server.dreams.DreamManagerService.isDreamingInternal(DreamManagerService.java:190) 等待DreamManagerService.mlock
由于这笔代码造成了死锁 希望相关人员看一下
https://dev.thundercomm.com/gerrit/c/general/platform/frameworks/base/+/153120
#7 Updated by CD- FW-石豪 over 2 years ago
- Status changed from ASSIGNED to RESOLVED
- Assignee changed from CD- FW-石豪 to CD TEST-方永红
- % Done changed from 0 to 100
- Resolution changed from -- to FIXED
- Verified Version set to FlatBuild_VX1_MCE_xx.xx_FSE.D.userdebug.0.0.0.20221018
- Fixed Version set to 2022-10-20
- Root cause set to DreamManagerService中isDreaming方法存在lock,实际上DreamManagerService上大部分公开方法都持有这个锁,当进入Dream的时候DreamManagerService中方法调用频繁,锁竞争造成死锁anr
【根本原因】DreamManagerService中isDreaming方法存在lock,实际上DreamManagerService上大部分公开方法都持有这个锁,当进入Dream的时候DreamManagerService中方法调用频繁,锁竞争造成死锁anr
【解决方案】避免在进入Dream的时候调用DreamManagerService中的方法,根据日志,多窗口模式下进入Dream时,调用DreamManagerService中isDreaming方法造成死锁。改用prop的参数保存Dream状态,根据prop参数来判断Dream状态。
【提交代码】https://dev.thundercomm.com/gerrit/c/general/platform/frameworks/base/+/156458
【合入时间】10.19,需要在10.20或以后的版本中验证
【验证方法】
1、小窗模式的时候,等待屏保,进入屏保后,回到桌面。多次操作。
2、小窗模式,多次关闭,然后打开,等待屏保,进入屏保后,回到桌面。
预期效果:进入屏保,后顶部状态栏不显示,不可下拉,不会出现界面卡死
#8 Updated by CD TEST-方永红 over 2 years ago
- Status changed from RESOLVED to VERIFIED
10.20测试一天没有复现,可以关闭
#9 Updated by CD TEST-方永红 over 2 years ago
- Status changed from VERIFIED to CLOSED
#10 Updated by CD FW-王伟 over 2 years ago
ID | Project | Branch | Uploader |
156458 | general/platform/frameworks/base | Pre_figure_turbox-c2130c-la1.1-qssi12-dev | shihao0506@thundersoft.com |
AF:ScreenSaver:Record Dream status to prop sys.dream.status 1.Multi window mode to enter screen saver hidden status bar 2.In AOSP logical multi window mode, the status bar is forced to be displayed, which has been changed to screen saver hidden status bar Change-Id: I6811a71a96fcb745809720b1f6d228209a24af72 TC-RID: 0301-0300601 IssueID: TS-R-DF-112532 |