手机在输入界面进入退出导致手机重启 (Watchdog重启问题分析)

2023-05-16

9820E E516横屏项目,手机在使用过程中出现framework crash。通过log工具发现是

WATCHDOG KILLING SYSTEM PROCESS: Blocked in monitor com.android.server.am.ActivityManagerServiceEx on foreground thread (android.fg), 

Blocked in handler on main thread (main), 

Blocked in handler on WindowManager thread (WindowManager)。

WATCHDOG重启

然后main log 里面没有看到有效信息,

systemlog 里面

1-01 08:47:43.009   624   808 W Watchdog: *** WATCHDOG IS GOING TO KILL SYSTEM PROCESS: Blocked in monitor com.android.server.am.ActivityManagerServiceEx on foreground thread (android.fg), Blocked in handler on ActivityManager (ActivityManager), Blocked in handler on WindowManager thread (WindowManager)

01-01 08:47:43.009   624   808 D ActivityManager: dumpStackTraces begin

01-01 08:47:43.009   624   808 D ActivityManager: dumpStackTraces NATIVE_STACKS_OF_DEFAULT_PREDUMP pid 218

01-01 08:47:43.679   624   808 D ActivityManager: dumpStackTraces nativeProcs pid 197

01-01 08:47:43.789   624   808 D ActivityManager: dumpStackTraces nativeProcs pid 218

01-01 08:47:44.239   624   808 D ActivityManager: dumpStackTraces nativeProcs pid 224

01-01 08:47:45.029   624   808 D ActivityManager: dumpStackTraces firstPids(0) pid 624

01-01 08:47:47.839   624   808 D ActivityManager: dumpStackTraces NATIVE_STACKS_OF_DEFAULT pid 218

01-01 08:47:48.289   624   808 D ActivityManager: dumpStackTraces NATIVE_STACKS_OF_DEFAULT pid 224

01-01 08:47:49.099   624   808 D ActivityManager: dumpStackTraces end

01-01 08:47:49.099   624   808 W Watchdog: *** WATCHDOG after dumpStackTraces

01-01 08:47:52.109   624   808 W Watchdog: *** WATCHDOG after the second dumpKernelStackTraces

01-01 08:47:54.109   624   808 W Watchdog: *** WATCHDOG start addErrorToDropBox

01-01 08:47:54.489   624   808 W Watchdog: *** WATCHDOG end addErrorToDropBox

01-01 08:47:54.489   624   808 W Watchdog: *** WATCHDOG KILLING SYSTEM PROCESS: Blocked in monitor com.android.server.am.ActivityManagerServiceEx on foreground thread (android.fg), Blocked in handler on ActivityManager (ActivityManager), Blocked in handler on WindowManager thread (WindowManager)

01-01 08:47:54.489   624   808 W Watchdog: foreground thread stack trace:

01-01 08:47:54.489   624   808 W Watchdog:     at com.android.server.am.ActivityManagerService.monitor(ActivityManagerService.java:16858)

01-01 08:47:54.489   624   808 W Watchdog:     at com.android.server.Watchdog$HandlerChecker.run(Watchdog.java:192)

01-01 08:47:54.489   624   808 W Watchdog:     at android.os.Handler.handleCallback(Handler.java:733)

01-01 08:47:54.489   624   808 W Watchdog:     at android.os.Handler.dispatchMessage(Handler.java:95)

01-01 08:47:54.489   624   808 W Watchdog:     at android.os.Looper.loop(Looper.java:136)

01-01 08:47:54.489   624   808 W Watchdog:     at android.os.HandlerThread.run(HandlerThread.java:61)

01-01 08:47:54.489   624   808 W Watchdog: ActivityManager stack trace:

01-01 08:47:54.489   624   808 W Watchdog:     at com.android.server.am.ActiveServices$ServiceMap.handleMessage(ActiveServices.java:185)

01-01 08:47:54.489   624   808 W Watchdog:     at android.os.Handler.dispatchMessage(Handler.java:102)

01-01 08:47:54.489   624   808 W Watchdog:     at android.os.Looper.loop(Looper.java:136)

01-01 08:47:54.489   624   808 W Watchdog:     at com.android.server.am.ActivityManagerService$AThread.run(ActivityManagerService.java:2006)

01-01 08:47:54.489   624   808 W Watchdog: WindowManager thread stack trace:

01-01 08:47:54.489   624   808 W Watchdog:     at com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:7486)

01-01 08:47:54.489   624   808 W Watchdog:     at android.os.Handler.dispatchMessage(Handler.java:102)

01-01 08:47:54.489   624   808 W Watchdog:     at android.os.Looper.loop(Looper.java:136)

01-01 08:47:54.489   624   808 W Watchdog:     at android.os.HandlerThread.run(HandlerThread.java:61)

01-01 08:47:54.489   624   808 W Watchdog: *** GOODBYE!

 

以为没有价值

(从目前查到的凶手是WindowManagerService看,这个信息是有价值的,提到的几个service都应该检查是否有耗时操作)

 

然后进行各种联想还原,发现无效,最后发现这个和ANR是一样的,有用的信息都在traces.log里面,有记录当前卡在哪里了

顺序查找,看下是否有修改的耗时的地方。就能发现问题了,

当前我们后行添加的修改是在  at com.android.server.wm.WindowManagerService.getActivity(WindowManagerService.java:5968)

(当前手机特殊为横屏手机,微信应用在这个几面显示旋转了,研发在这个类里面通过判断顶层应用是否为微信,强制进行了旋转使其正常,产生问题)

跟log吻合

"Binder_1" prio=5 tid=9 MONITOR

  | group="main" sCount=1 dsCount=0 obj=0x41821bf0 self=0x80e44688

  | sysTid=653 nice=0 sched=0/0 cgrp=apps handle=-2132523968

  | state=S schedstat=( 420131427 522294460 1825 ) utm=20 stm=22 core=1

  at com.android.server.am.ActivityManagerService.getTasks(ActivityManagerService.java:~7225)

  - waiting to lock <0x4182a3f8> (a com.android.server.am.ActivityManagerServiceEx) held by tid=64 (Binder_9)

  at android.app.ActivityManager.getRunningTasks(ActivityManager.java:785)

  at android.app.ActivityManager.getRunningTasks(ActivityManager.java:821)

  at com.android.server.wm.WindowManagerService.getActivity(WindowManagerService.java:5968)

  at com.android.server.wm.WindowManagerService.updateRotationUncheckedLocked(WindowManagerService.java:6030)

  at com.android.server.wm.WindowManagerService.updateOrientationFromAppTokensLocked(WindowManagerService.java:3735)

  at com.android.server.wm.WindowManagerService.relayoutWindow(WindowManagerService.java:3043)

  at com.android.server.wm.Session.relayout(Session.java:190)

  at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:235)

  at com.android.server.wm.Session.onTransact(Session.java:125)

  at android.os.Binder.execTransact(Binder.java:427)

  at dalvik.system.NativeStart.run(Native Method)

log里同样发现   at com.android.internal.policy.impl.PhoneWindowManager.getTopActivity(PhoneWindowManager.java:4255) 应该也是有隐患的。

 "InputDispatcher" prio=10 tid=30 MONITOR

  | group="main" sCount=1 dsCount=0 obj=0x419556a8 self=0x81726e48

  | sysTid=710 nice=-8 sched=0/0 cgrp=apps handle=-2123208264

  | state=S schedstat=( 1637991276 961247664 12418 ) utm=95 stm=68 core=0

  at com.android.server.am.ActivityManagerService.getTasks(ActivityManagerService.java:~7225)

  - waiting to lock <0x417eb3f8> (a com.android.server.am.ActivityManagerServiceEx) held by tid=59 (Binder_5)

  at android.app.ActivityManager.getRunningTasks(ActivityManager.java:785)

  at android.app.ActivityManager.getRunningTasks(ActivityManager.java:821)

  at com.android.internal.policy.impl.PhoneWindowManager.getTopActivity(PhoneWindowManager.java:4255)

  at com.android.internal.policy.impl.PhoneWindowManager.interceptKeyBeforeDispatching(PhoneWindowManager.java:2481)

  at com.android.server.wm.InputMonitor.interceptKeyBeforeDispatching(InputMonitor.java:382)

  at com.android.server.input.InputManagerService.interceptKeyBeforeDispatching(InputManagerService.java:1353)

  at dalvik.system.NativeStart.run(Native Method)

 

 

 

从上面log看和历史出现问题 以下getTopActivity()方法(Android4.4做状态栏待机透明和非待机黑色判断是否为待机界面也使用了这个方法,出现过null的问题切换黑屏)不建议在系统级别常用服务或者类中操作

    public String getActivity(){

        ActivityManager manager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);

        List<ActivityManager.RunningTaskInfo> runningTaskInfos = manager.getRunningTasks(1);

        if (runningTaskInfos != null)

            return runningTaskInfos.get(0).topActivity.getClassName();

        else

            return null;

    }

 

经验:Watchdog现象先看traces.log

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手机在输入界面进入退出导致手机重启 (Watchdog重启问题分析) 的相关文章

  • win10能ping通虚拟机ip,虚拟机ping不通win10ip的解决方法

    win10能ping通虚拟机ip xff0c 虚拟机ping不通win10ip的解决方法 参考文章 xff1a xff08 1 xff09 win10能ping通虚拟机ip xff0c 虚拟机ping不通win10ip的解决方法 xff08
  • spring入门-配置文件

    文章目录 1 spring基础应用1 1 引入依赖1 2 创建服务类1 3 创建配置文件1 4 测试 2 依赖注入2 1 依赖注入方式2 1 1 构造方法2 1 2 set方法2 1 3 测试 2 2 依赖注入的数据类型2 2 1 基本数据
  • Android 9.0 修改system分区的容量大小

    1 前言 在android 9 0的系统ROM定制化开发中 在内置过多的app的时候 会发现系统rom会非常大 原生系统system分区已经不够用了 所以这时就需要加大系统systemui分区 来容纳过多的app systemui分区在系统
  • 使用JMF实现音乐播放(java多媒体编程)

    JMF实际上是Java的一个类包 JMF 2 1 1技术提供了先进的媒体处理能力 xff0c 从而扩展了 Java平台 的功能 这些功能包括 xff1a 媒体捕获 压缩 流转 回放 xff0c 以及对各种主要媒体形式和编码的支 持 xff0

随机推荐

  • 19.普通类和抽象类有哪些区别?

    抽象类和普通类主要有三点比较大的区别 xff1a 1 首先应该知道 xff0c 抽象类是不能被实例化的 xff0c 就是不能用new调出构造方法创建对象 xff0c 而普通类则反之 xff01 2 抽象类的访问权限限于Public和Prot
  • NSS: client certificate not found (nickname not specified)

    NSS client certificate not found nickname not specified 报错排查及解决 curl 35 NSS client certificate not found nickname not sp
  • Linux中将tab与空格互换

    在Vim中 xff0c 有时需要将tab转换成space 使用ret命令 xff08 replace tab xff09 range ret ab new tabstop 1 tab替换为空格 set ts 61 4 set expandt
  • 搭建rtmp服务器

    大家好 xff0c 今天这篇文章主要是如何搭建一套简易直播系统 xff01 主要内容 xff0c 通过nginx 43 nginx rtmp module搭建rtmp服务器 xff0c 下图是推拉流效果图展示 开始准备工作 xff1a 1
  • 【数据结构/数组】leetcode刷题路线(持续更新)

    数据结构 数组 leetcode刷题路线 xff08 持续更新 xff09 vector常见操作具体刷题路线参考资料 vector常见操作 在STL vector xff08 使用场景 43 leetcode题库常见操作总结 xff09 一
  • leetcode第283场周赛记录

    第283场周赛记录 得分排名情况赛题分析题一 xff1a 6016 Excel 表中某个范围内的单元格 https leetcode cn com problems cells in a range on an excel sheet 题二
  • 【音频】削波失真(爆音)问题定位与解决

    音频 削波失真 爆音 问题定位与解决 Why 为什么要解决削波失真问题 What 什么是削波失真 如何定位 用户反馈的现象 音频异常环节定位 音频异常是发生在音频处理的哪个环节 不同的音频采集方式都会出现爆音问题么 如何区分正常音频与异常音
  • 【MLT】MLT多媒体框架生产消费架构解析(二)

    MLT多媒体框架生产消费架构解析 前提通过本文可以获取什么 xff1f 核心类解析Service 43 Filter为生产者添加滤镜 Demon展示为Producer xff08 MP4 xff09 添加Filter xff08 马赛克 x
  • 【MLT】MLT多媒体框架生产消费架构解析(三)

    MLT多媒体框架生产消费架构解析 前提通过本文可以获取什么 xff1f 核心类解析Properties为生产者添加滤镜 Demon展示修改Filter xff08 马赛克 xff09 效果代码 附属代码下载链接参考资料 前提 通过阅读 ML
  • 【ffmpeg】音频采集

    ffmpeg 音频采集 前言 通过命令采集音频数据 采集音频的方式 windows下采集音频 通过API采集音频数据 打开音频设备 从音频设备中读取音频数据 API 数据封装简析 代码 录制音频数据 参考资料 个人简介 个人主页 一二三o
  • ubuntu18.04安装搜狗输入法和Google Chrome

    安装搜狗输入法 xff1a 一 首先设置fcitx 1 打开Settings Language and Region Manage installed Languages 2 将 Keyboard input method system中默
  • 【ffmpeg】音频重采样

    ffmpeg 音频重采样 前言 什么是音频重采样 实现音频重采样 创建重采样上下文 初始化重采样 进行重采样 ffplay播放 参考资料 个人简介 个人主页 一二三o 0 O的博客 技术方向 C C 客户端资深工程师 直播 音视频剪辑 作者
  • 【ffmpeg】创建AAC编码器

    ffmpeg 创建AAC编码器 前言 ffmpeg编码过程 创建AAC编码器 创建编码器 创建上下文 设置采样参数 打开编码器 将帧数据提供给编码器 读取编码后的数据 将编码后的数据写入aac文件中 参考资料 个人简介 个人主页 一二三o
  • 【ffmpeg】YUV实践

    ffmpeg YUV实践 前言 生成YUV 使用摄像头采集到YUV数据 从现有的视频文件中提取YUV数据 播放YUV 播放Y分量 提取各分量 参考资料 个人简介 个人主页 一二三o 0 O的博客 技术方向 C C 客户端资深工程师 直播 音
  • 【yum】Peer cert cannot be verified or peer cert invalid

    yum 装包时 xff0c 提示 Errno 14 Peer cert cannot be verified or peer cert invalid cat etc yum repos d my repo repo my repo nam
  • 【DNS】Linux上非root用户无法使用/etc/hosts解析条目问题的排查处理

    一 问题背景 机房某台物理机故障 xff0c 触发虚拟化系统对该物理机上的虚拟机的漂移重启操作 xff0c 发现新起的虚拟机上某些应用重启失败 看相关应用启动日志 xff0c 显示无法解析主机名 xff0c 但是明明用到的主机名解析已经写在
  • ORDER BY clause is not in SELECT list

    Expression 1 of ORDER BY clause is not in SELECT list 1 mysql查询异常 xff1a 2 解决办法 xff1a 2 1 查看是否开启了only full group by规则校验2
  • R语言简介

    我们Hadoop 43 R爱好者建立了一个Hadoop和R语言的学习交流的高级LV1 QQ群 279441740 xff0c 欢迎加入学习 交流 讨论 下载 R语言简介 R语言是一种为统计计算和图形显示而设计的语言环境 xff0c 是贝尔实
  • GitHub的安装与配置

    一 安装git 1 Git下载地址 xff1a Git Downloads 进入后点击Download下载 xff0c 如下图所示 xff1a 2 进入后选择自己对应的操作系统下载 32位或64位 xff0c 如下图所示 3 下载好后进行安
  • 手机在输入界面进入退出导致手机重启 (Watchdog重启问题分析)

    9820E E516横屏项目 xff0c 手机在使用过程中出现framework crash 通过log工具发现是 WATCHDOG KILLING SYSTEM PROCESS Blocked in monitor com android