Bug #117441

测试 Test-IT #111062: V3.0功能测试

测试 Test-IT #111069: AF-V3.0--Launcher/SystemUI-小窗模式入口

【AF】【EVT3】【小窗模式】登录网易云音乐,点击社区,页面跳转两秒钟之后网易云小窗崩溃

Added by CD TEST-方永红 over 2 years ago. Updated about 2 years ago.

Status:CLOSEDStart date:2023-04-13
Priority:UrgentDue date:
Assignee:CD TEST-方永红% Done:

100%

Category:LC
Target version:-
Need_Info:-- Found Version:FlatBuild_HH_MCE_FSE.M.R.user.01.00.0091.C103(X103)
Resolution:FIXED Degrated:--
Severity:Critical Verified Version:FlatBuild_HH_MCE_FSE.M.R.user.01.00.0098.C103(X103)
Reproducibility:Every time Fixed Version:
Test Type:ST Root cause:三方App在申请权限时失败,未做异常处理,crash了.
系统只有开发权限给三方App来解决,兼容性问题.

Description

【测试步骤】
1、登录网易云音乐
2、打开网易云音乐小窗
3、点击社区

【预期结果】
3、跳转到社区页面并且显示正常

【实际结果】
3、页面跳转两秒钟之后网易云小窗崩溃

4131518.txt Magnifier (4.55 MB) CD TEST-方永红, 2023-04-13 15:22

Phone-STS40X190078 2023-04-13 15-18-18.mp4 (6.68 MB) CD TEST-方永红, 2023-04-13 15:22

4131525.txt Magnifier (4.3 MB) CD TEST-方永红, 2023-04-13 15:32

4141038.txt Magnifier (41.6 MB) CD TEST-方永红, 2023-04-14 10:43

History

#1 Updated by CD TEST-方永红 over 2 years ago

  • File 4131525.txtMagnifier added
  • Priority changed from High to Urgent

测试内容补充
在网易云小窗崩溃后再次打开该小窗,进行两次正常-mini小窗的切换,设备上层重启

#2 Updated by CD TEST-方永红 over 2 years ago

4.14
【测试版本】
0086user
【测试步骤】
1、安装网易云音乐(华为应用市场下载)
2、打开应用->点击社区(此版本未合入小窗强制启动功能,所以应用是全屏显示的)
【测试结果】
2、大概2-5秒后,网易云应用崩溃
【备注】
日志见附件

#3 Updated by CD FW-鲁凯峰 over 2 years ago

更新下状态

Case1
【测试版本】
0090user

【测试步骤】
1、安装网易云音乐(华为应用市场下载/官网下载)
2、打开应用 (默认以小窗模式启动)->点击社区

【测试结果】
2、大概2-5秒后,网易云应用崩溃

Case2
【测试版本】
0090user-debug

【测试步骤】
1、安装网易云音乐(华为应用市场下载/官网下载)
2、打开应用 (默认以小窗模式启动)->点击社区

【测试结果】
2、大概2-5秒后,网易云应用不会崩溃

结合上面测试的情况,该问题和小窗无关系,不管是不是以小窗的模式启动,在user版本都会出现网易云崩溃的情况

#4 Updated by CD FW-鲁凯峰 over 2 years ago

结合log来看, 就是网易云申请网络的binder的挂了,导致网易云被杀掉

//启动网易云音乐
04-11 05:11:44.777 1569 5861 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.netease.cloudmusic/.activity.IconChangeDefaultAlias bnds=[1768,636][2044,896]} from uid 10073

//申请网络的binderDied,其中就包括了pid 7490, 这个就是网易云
04-11 05:11:55.918 1569 3091 D ConnectivityService: ConnectivityService NetworkRequestInfo binderDied(uid/pid:10133/7490, android.os.BinderProxy@8b05f74)

04-11 05:11:55.918 6410 6410 I ExtensionLog: [IPCClientBinder]serviceConnection, onServiceDisconnected, name: ComponentInfo{com.netease.cloudmusic/com.netease.android.extension.servicekeeper.service.ipc.server.IPCCommunicationAndroidService}
04-11 05:11:55.918 6410 6410 I ExtensionLog: [IPCClientBinder]detach...
04-11 05:11:55.918 7198 7198 I ExtensionLog: [IPCClientBinder]serviceConnection, onServiceDisconnected, name: ComponentInfo{com.netease.cloudmusic/com.netease.android.extension.servicekeeper.service.ipc.server.IPCCommunicationAndroidService}
04-11 05:11:55.918 7198 7198 I ExtensionLog: [IPCClientBinder]detach...
04-11 05:11:55.918 6410 6410 E ExtensionLog: [IPCClientBinder]detach, ipcServer.detach error:
04-11 05:11:55.918 6410 6410 E ExtensionLog: android.os.DeadObjectException
04-11 05:11:55.918 6410 6410 E ExtensionLog: at android.os.BinderProxy.transactNative(Native Method)
04-11 05:11:55.918 6410 6410 E ExtensionLog: at android.os.BinderProxy.transact(BinderProxy.java:571)
04-11 05:11:55.918 6410 6410 E ExtensionLog: at com.netease.android.extension.servicekeeper.service.ipc.tx.d$a$a.I0

//网易云进程挂了
04-11 05:11:55.919 1569 2060 I ActivityManager: Process com.netease.cloudmusic (pid 7490) has died: fg TOP
04-11 05:11:55.919 1569 2060 I am_proc_died: [0,7490,com.netease.cloudmusic,0,2]

另外还做了个测试,在关闭wifi的情况下,做相同的测试步骤,不会导致网易云崩溃

所以请wifi的同学看看,为什么网易云去申请网络的binder挂了,应该是和selinux权限有关系,因为在debug版本上不会出现崩溃的问题

#5 Updated by CD FW-鲁凯峰 over 2 years ago

  • Category changed from 窗口定制 to LC
  • Assignee changed from CD FW-鲁凯峰 to CD LC 陶洪普

#6 Updated by CD LC 陶洪普 over 2 years ago

从附件中的41* 三分日志看,存在如下权限异常,com.netease.cloudmusic 的context是: untrusted_app_29
申请阻止的权限如下:
$ grep auditd 41* | grep cloudmusic | audit2allow

#============= untrusted_app_29 ==============
allow untrusted_app_29 sysfs:dir { read open };

#============= untrusted_app_29 ==============
allow untrusted_app_29 ab_update_gki_prop:file { map getattr open };
allow untrusted_app_29 adbd_prop:file open;
allow untrusted_app_29 cache_file:lnk_file read;
allow untrusted_app_29 charger_config_prop:file { map getattr open };
allow untrusted_app_29 charger_prop:file { getattr open };
allow untrusted_app_29 net_dns_prop:file { map getattr open };
allow untrusted_app_29 sysfs:dir { read open };
allow untrusted_app_29 sysfs:file { read open };
allow untrusted_app_29 vendor_default_prop:file { map getattr open };
allow untrusted_app_29 wifi_hal_prop:file { read open };

#============= zygote ==============
allow zygote untrusted_app_29:process ptrace;

------------------------
请问com.netease.cloudmusic 的context是: untrusted_app_29,这个正常吗?

关闭wifi的情况下,做相同的测试步骤,不会导致网易云崩溃

关闭WiFi后,是否没有其他连接网络的方式了? 通过Ethernet是否有这个问题?

因为在debug版本上不会出现崩溃的问题

Debug版本是否已关闭wifi? 对于Selinux userdebug与user设置应该相同,没有区别啊

#7 Updated by CD LC 陶洪普 over 2 years ago

与曹覃刚,鲁凯峰同步后,
按照上面需要的Selinux权限,先全部加上,编译user版本,明天确认结果后,再决定下一步Action: 是否合入?如何解决该类问题?

#9 Updated by CD LC 陶洪普 over 2 years ago

  • Status changed from New to ASSIGNED

#10 Updated by CD LC 陶洪普 over 2 years ago

Selinux有些是nevel allow的,删除了一些,这个是 新的Jnekins编译连接
http://jenkins.thundercomm.com:8080/view/Figure/job/VerifyBuild_for_IOT_6490/3461/
已请测试确认该版本中。

#11 Updated by CD TEST-方永红 over 2 years ago

4.25
【测试版本】
FlatBuild_HH_MCE_FSE.M.D.user.01.00.C103.202304250724

【测试结果】
验证PASS

【测试步骤】
1、单副屏、WIFI连接时,打开应用,跳转至社区页面,测试10次,应用未崩溃
2、单副屏、WIFI不连接时,打开应用,跳转至社区页面,测试10次,应用未崩溃
3、副屏与中控连接,WIFI连接时,打开应用,跳转至社区页面,测试10次,应用未崩溃
4、副屏与中控连接,WIFI不连接时,打开应用,跳转至社区页面,测试10次,应用未崩溃

#12 Updated by CD LC 陶洪普 over 2 years ago

  • Assignee changed from CD LC 陶洪普 to CD TPM-王祥林

1. VB验证,CloudMusic可以正常使用
2. 从临时patch看,下面几个启动了作用。
allow untrusted_app_29 net_dns_prop:file { map getattr open };
allow untrusted_app_29 proc_net:file { read getattr open };
allow untrusted_app_29 wifi_hal_prop:file { read open };
需要判断是否会添加权限来这么修改?如果可以,我们再确认这个music App添加哪些必须的权限。
谢谢!

#13 Updated by CD LC 陶洪普 over 2 years ago

更新到 https://dev.thundercomm.com/gerrit/c/general/platform/system/sepolicy/+/196004/10 到 updated set 10.
对应的下面的规则:(因com.netease.cloudmusic 是untrusted_app_29, 只对其进行修改,以后App如有更新,再修改.)
avc: denied { open } for comm="getprop" path="/dev/__properties__/u:object_r:ab_update_gki_prop:s0" dev="tmpfs" ino=15433 scontext=u:r:untrusted_app_29:s0:c130,c256,c512,c768 tcontext=u:object_r:ab_update_gki_prop:s0 tclass=file permissive=1 app=com.netease.cloudmusic
avc: denied { getattr } for comm="getprop" path="/dev/__properties__/u:object_r:ab_update_gki_prop:s0" dev="tmpfs" ino=15433 scontext=u:r:untrusted_app_29:s0:c130,c256,c512,c768 tcontext=u:object_r:ab_update_gki_prop:s0 tclass=file permissive=1 app=com.netease.cloudmusic
avc: denied { map } for comm="getprop" path="/dev/__properties__/u:object_r:ab_update_gki_prop:s0" dev="tmpfs" ino=15433 scontext=u:r:untrusted_app_29:s0:c130,c256,c512,c768 tcontext=u:object_r:ab_update_gki_prop:s0 tclass=file permissive=1 app=com.netease.cloudmusic

avc: denied { open } for comm="getprop" path="/dev/__properties__/u:object_r:adbd_prop:s0" dev="tmpfs" ino=15435 scontext=u:r:untrusted_app_29:s0:c130,c256,c512,c768 tcontext=u:object_r:adbd_prop:s0 tclass=file permissive=1 app=com.netease.cloudmusic

avc: denied { read } for comm="Thread-25" name="cache" dev="dm-5" ino=16 scontext=u:r:untrusted_app_29:s0:c130,c256,c512,c768 tcontext=u:object_r:cache_file:s0 tclass=lnk_file permissive=1 app=com.netease.cloudmusic

avc: denied { open } for comm="pool-6-thread-1" path="/dev/__properties__/u:object_r:net_dns_prop:s0" dev="tmpfs" ino=15582 scontext=u:r:untrusted_app_29:s0:c130,c256,c512,c768 tcontext=u:object_r:net_dns_prop:s0 tclass=file permissive=1 app=com.netease.cloudmusic
avc: denied { getattr } for comm="pool-6-thread-1" path="/dev/__properties__/u:object_r:net_dns_prop:s0" dev="tmpfs" ino=15582 scontext=u:r:untrusted_app_29:s0:c130,c256,c512,c768 tcontext=u:object_r:net_dns_prop:s0 tclass=file permissive=1 app=com.netease.cloudmusic
avc: denied { map } for comm="pool-6-thread-1" path="/dev/__properties__/u:object_r:net_dns_prop:s0" dev="tmpfs" ino=15582 scontext=u:r:untrusted_app_29:s0:c130,c256,c512,c768 tcontext=u:object_r:net_dns_prop:s0 tclass=file permissive=1 app=com.netease.cloudmusic

avc: denied { read } for comm="Thread-25" name="u:object_r:wifi_hal_prop:s0" dev="tmpfs" ino=15771 scontext=u:r:untrusted_app_29:s0:c130,c256,c512,c768 tcontext=u:object_r:wifi_hal_prop:s0 tclass=file permissive=1 app=com.netease.cloudmusic
avc: denied { open } for comm="Thread-25" path="/dev/__properties__/u:object_r:wifi_hal_prop:s0" dev="tmpfs" ino=15771 scontext=u:r:untrusted_app_29:s0:c130,c256,c512,c768 tcontext=u:object_r:wifi_hal_prop:s0 tclass=file permissive=1 app=com.netease.cloudmusic

#14 Updated by CD LC 陶洪普 over 2 years ago

  • Assignee changed from CD TPM-王祥林 to CD LC 陶洪普

#16 Updated by CD LC 陶洪普 about 2 years ago

因为删除了部分权限后(认为三方App不应该申请这部分权限),仍复现闪退现象,Rollback 到 comment #11 测试通过的版本.
https://dev.thundercomm.com/gerrit/c/general/platform/system/sepolicy/+/196004/12

Next,code review

#17 Updated by IoT scm about 2 years ago

Gerrit Merge Information
ID Project Branch Uploader
196004 general/platform/system/sepolicy Pre_figure_turbox-c2130c-la1.1-qssi12-dev
Security: Add necessary Selinux policy for untrusted_app_29
Add necessary Selinux policy for untrusted_app_29, otherwise the app
com.netease.cloudmusic may crash.
TC-RID: 1201-0203501
IssueID: TS-R-BUG-117441
Change-Id: I0173c7149b257a850196ab588906cb2a2dc23ab0

#18 Updated by CD LC 陶洪普 about 2 years ago

  • Status changed from ASSIGNED to RESOLVED
  • Assignee changed from CD LC 陶洪普 to CD TEST-方永红
  • Resolution changed from -- to FIXED
  • Verified Version set to 请使用20230506及其之后DB确认

patch 0505晚上已合入,请使用20230506及其之后DB确认.
谢谢!

#19 Updated by CD LC 陶洪普 about 2 years ago

  • Root cause set to 三方App在申请权限时失败,未做异常处理,crash了. 系统只有开发权限给三方App来解决,兼容性问题.

#20 Updated by CD TEST-方永红 about 2 years ago

  • Status changed from RESOLVED to VERIFIED
  • Verified Version changed from 请使用20230506及其之后DB确认 to FlatBuild_HH_MCE_FSE.M.R.user.01.00.0098.C103(X103)

5.9
验证通过

#21 Updated by CD TEST-方永红 about 2 years ago

  • Status changed from VERIFIED to CLOSED
  • % Done changed from 0 to 100

Also available in: Atom PDF