美文网首页
Monkey测试出现第三方应用crash分析

Monkey测试出现第三方应用crash分析

作者: Maker0812 | 来源:发表于2020-04-20 20:33 被阅读0次

问题描述:

测试工程师提了一个bug: Monkey测试时一个第三方应用多次出现Crash。

分析:

查看error.txt 找到异常堆栈, 发现:
调用FW中的MediaSessionManager.dispatchMediaKeyEventInternal()方法时获取的mService对象为null, 导致空指针异常, 引起crash。

12-31 11:30:06.330 18259 18259 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'void android.media.session.ISessionManager.dispatchMediaKeyEvent(java.lang.String, boolean, android.view.KeyEvent, boolean)' on a null object reference
12-31 11:30:06.330 18259 18259 E AndroidRuntime: at android.media.session.MediaSessionManager.dispatchMediaKeyEventInternal(MediaSessionManager.java:324)

因MediaSessionManager中多个方法均需要调用mService的方法, 如果在MediaSessionManager.dispatchMediaKeyEventInternal()做判空处理,那么其它方法也需要处理。需要找出mService根本原因。因之前log信息不全, 请测试提供了main log。发现在每个FATAL Exception信息前存在avc denied。因此怀疑是Selinux权限导致。从堆栈信息看问题是在调整声音时出现的。

本地测试:打开第三方应用, 按音量键, 必现crash。
抓log分析, 就是由于avc denied导致。系统组将此应用作为特殊的应用(RSU APK)管理。单独用一个te文件管理权限, 未对访问media_session_service添加权限。

解决:

转系统组处理。

可使用audit2allow工具解析audio log, 在te文件中添加权限

总结:

此问题的相同问题存在了将近一年半。之前owners的分析和解决方案是:因第三方应用调用FW接口出现异常, 认为此为第三方应用问题,需推动第三方解决。此问题还是存在一些疑惑:从代码提交记录看,之前的开发工程师按照RSU需求加了一个TE文件来管理RSU APK。因时间关系,没找到具体需求。

相关文章

网友评论

      本文标题:Monkey测试出现第三方应用crash分析

      本文链接:https://www.haomeiwen.com/subject/uenjihtx.html