Bug #117441
测试 Test-IT #111062: V3.0功能测试
测试 Test-IT #111069: AF-V3.0--Launcher/SystemUI-小窗模式入口
【AF】【EVT3】【小窗模式】登录网易云音乐,点击社区,页面跳转两秒钟之后网易云小窗崩溃
Status: | CLOSED | Start date: | 2023-04-13 | |
---|---|---|---|---|
Priority: | Urgent | Due 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、页面跳转两秒钟之后网易云小窗崩溃
History
#1 Updated by CD TEST-方永红 over 2 years ago
- File 4131525.txt
added
- Priority changed from High to Urgent
测试内容补充
在网易云小窗崩溃后再次打开该小窗,进行两次正常-mini小窗的切换,设备上层重启
#2 Updated by CD TEST-方永红 over 2 years ago
- File 4141038.txt
added
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: 是否合入?如何解决该类问题?
#8 Updated by CD LC 陶洪普 over 2 years ago
#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 陶洪普
#15 Updated by CD LC 陶洪普 over 2 years ago
根据更新的patch创建了新的VB user编译:
http://jenkins.thundercomm.com:8080/view/Figure/job/VerifyBuild_for_IOT_6490/3525/
#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
ID | Project | Branch | Uploader |
196004 | general/platform/system/sepolicy | Pre_figure_turbox-c2130c-la1.1-qssi12-dev | taohp0107@thundersoft.com |
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