SystemUI 连续ANR导致的黑屏问题

存在几个SystemUI启动失败导致的黑屏问题

问题1:Q项目systemui先NE后ANR,anr的时候杀了刚起的systemui,导致systemui没有启动
//先发生NE
12-17 13:35:35.559 13579 13579 F DEBUG   : pid: 4265, tid: 4265, name:ndroid.systemui  >>> com.android.systemui <<<
//后发生ANR
12-17 13:35:51.417  1321  1352 I am_anr  :[0,4265,com.android.systemui,952647181,Broadcast of Intent {act=android.intent.action.SCREEN_OFF flg=0x50200010 }]
12-17 13:36:08.463  1321  3078 V ActivityManager: Death received in com.android.server.am.ActivityManagerService$AppDeathRecipient@306636cfor thread android.os.BinderProxy@d8b6d35,mPid:4265,mApp:ProcessRecord{1ee44a6 4265:com.android.systemui/u0a62}
//NE先挂掉,所以会重启
12-17 13:36:09.001  1321  3078 I am_proc_died:[0,4265,com.android.systemui,-800,6]
12-17 13:36:09.012  1321  3078 W ActivityManager: Re-adding persistent process ProcessRecord{1ee44a6 4265:com.android.systemui/u0a62}
//收到ANR,杀进程,设置process Record中的pendingStart =false,当前的pid已经设置为0了
12-17 13:36:09.026  1321  1352 I ActivityManager: Killing 0:com.android.systemui/u0a62 (adj -800): bg anr
12-17 13:36:09.045   550   550 D Zygote  : Forked child process 13818
12-17 13:36:09.048  1321  1353 W ActivityManager: ProcessRecord{1ee44a60:com.android.systemui/u0a62} start not valid, killing pid=13818, pendingStart=false;
//启动的时候发现pendingStart被人设置为false导致handleProcessStartedLocked直接退出
12-17 13:36:09.054   550   550 I Zygote  : Process 13818 exited due to signal 9 (Killed)
//走进去的时候,app.pid为0
12-17 13:36:09.026  1321  1352 I ActivityManager: Killing 0:com.android.systemui/u0a62 (adj -800): bg anr
/
问题根本是启动进程的时候不持锁了,此时kill了systemui异步启动进程,导致杀进程和启进程同步进行了。
修改方法:

frameworks/base/services/core/java/com/android/server/am/ProcessRecord.java
 void kill(String reason, @Reason int reasonCode, @SubReason int subReason, boolean noisy) {
       if (!killedByAm) {
           if (pid > 0) {
           ......
           }else{
            ///modify start
                if(!( mPersistent && info != null && "com.android.systemui".equals(info.packageName))) {
                    pendingStart = false;
                } else {
                    Slog.i(TAG, "Skipping set pendingStart = false for " + info.packageName);
                }
            //modify end
           
           }
       }  
 }


/

问题2:高负载下,system UI无法唤醒,手机无法使用

//ANR当前pid 还是1565 
09-29 13:51:36.222180 1185 15843 I am_anr : [0,1565,com.an

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值