问题背景
最近Android v的平台频繁爆monkey异常停止的问题,分析到根因不是频繁dump堆栈导致system_server挂掉就是三方应用进程内部死锁导致anr,然后system_server挂起线程超时,system_server就崩了。
解决方案
先来看看anr导致死锁的场景如何分析
从log来看确认为system_server crash导致monkey测试停止:
从堆栈来看为art库里面的问题,但是这只是为Android提供一个运行环境,相当于jvm,细分一点就是管理进/线程环境的库,开始认为这个原生的一般不会有问题(所以作为一名开发就要敢于质疑,推陈出新):
进一步查看问题发生时间点13:17:00之前的log发现有线程挂起失败的打印,binder线程:612_11跟上面system_server crash的日志吻合: