[FAQ14812]如何快速对系统重启问题进行归类

2023-10-26

[DESCRIPTION]
 
 当手机发生系统重启,即导致kernel重启的异常时,会在手机中的/data/aee_exp目录下保存异常重启的db。工程师可以通过GAT的bug report功能,或者直接通过adb pull,把对应的db从手机中抓回来。进一步,对于异常重启的类型,需要通过GAT工具解开db档案(解开方式参考MTK-online上的文档GAT_User_Guide(Customer).docx之5.1的部分),对里面的SYS_KERNEL_LOG/SYS_LAST_LOG/SYS_REBOOT_REASON 内容进行解析,才能知道具体的重启的类型。
 一般来说,导致kernel重启的异常重启,包括Kernel Panic, Watchdog Timeout, Hardware Reboot这三种类型。一个完整的Kernel Panic,其db解开来会包含如下的 档案:
 
 
 
[SOLUTION]
 
 1. Kernel Panic
    即linux kernel发生了无法修复的错误,从而导致panic。通过查看SYS_KERNEL_LOG的内容,kernel Panic进一步可以分为如下几类:
a. 普通的data abort。从SYS_KERNEL_LOG中,可以检索到如下的info:
 
Unable to handle kernel NULL pointer dereference at virtual address XXXXXXXX
 
如上的XXXXXXXX代表某个非法地址。这种类型是最多的。
 
b. oom 主动触发的panic。从SYS_KERNEL_LOG中,可以检索到如下的info:
 
Kernel panic - not syncing: Out of memory and no killable processes...
 
此种类型的panic一般是某个process或者APK耗尽了memory资源,从而kernel主动触发的panic重启。对于这种类型的重启,强烈建议工程师把如上的info填写到eService 的标题中,这样MTK可以对eService进行一次到位的分配。
 
c. undefined instruction,未定义指令异常。从SYS_KERNEL_LOG中,可以检索到如下的info:
 
Internal error: Oops - undefined instruction
 
此类异常较为少见,可能是CPU/DRAM 不稳定或者受干扰导致的问题。
 
d. bad mode异常,即PC处于一个无效的virtual address。从SYS_KERNEL_LOG中,可以检索到如下的info:
 
Bad mode in Synchronous Abort handler detected
...
[14820.652408]-(1)[682:VSyncThread_0][<ffffffc000088f90>] bad_mode+0x78/0xb0
 
此类异常较为少见,可能的原因是stack错乱,或者未注册回调函数引起。
 
 
2. watchdog 超时
 
a. 底层看门狗超时。从SYS_KERNEL_LOG中,可以检索到如下的info:
 
for arm64 platform
PC is at aee_wdt_atf_info+0x4c8/0x6dc
LR is at aee_wdt_atf_info+0x4c0/0x6dc
 
for arm32 platform
PC is at aee_wdt_irq_info+0x104/0x12c
LR is at aee_wdt_irq_info+0x104/0x12c
 
此类异常较为常见,多见于底层频繁irq/bus卡死,导致kicker无法被schedule,从而引起watch dog触发中断,引导系统进入FIQ处理流程,最终call到BUG触发重启。
 
b.上层hang_detect 触发看门狗超时。从SYS_KERNEL_LOG中,可以检索到如下的info:
 
[ 2131.086562] (0)[77:hang_detect][Hang_Detect] we should triger HWT ...
...
 
[ 2180.467416]-(0)[77:hang_detect]PC is at aee_wdt_irq_info+0x154/0x170

[ 2180.467426]-(0)[77:hang_detect]LR is at aee_wdt_irq_info+0x154/0x170
...
 
此异常类型较为常见,多见于GPU/SD卡/eMMC 无法满足surfacelinger/system_server的通讯需求,从而导致上层卡死,进而主动触发看门狗超时重启。对于这种类型的重启,强烈建议工程师把如上的Hang_Detect关键字填写到eService 的标题中,这样MTK可以对eService进行一次到位的分配。
 
3. Hardware Reboot
 
hardware reboot是watch dog直接发出reset信号,导致整个系统重启;在重启之前,并没有触发任何异常处理流程。一般情况下,hardware reboot对应的db不会有SYS_KERNEL_LOG 可以排查,只能从SYS_LAST_KMSG获知异常之前kernel的动作,以及从SYS_REBOOT_REASON 获知异常时的CPU寄存器值和其它参数。
从ZZ_INTERNAL 档案,可以知道发生了hardware reboot
Hardware Reboot,0,0,99,/data/core/,0,,HW_REBOOT,Fri Jul  3 14:31:53 CST 2015,1
 
 
 
就上面所罗列的诸多异常重启,工程师务必把如上黄底部分的log片段拷贝到eService的Description栏位,并把红色的关键字填写到eService的标题中,这样,可以大大加快eService的分配流程。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[FAQ14812]如何快速对系统重启问题进行归类 的相关文章

  • 数据未正确加载到 Firebase 应用程序中

    我在 android studio 上使用 firebase 创建了一个应用程序 使用移动 otp 进行身份验证后会出现一个搜索视图 当用户在搜索视图上搜索时 它将过滤结果并转到回收器视图等 第一次启动活动 即身份验证后的家庭活动 应用程序
  • 应用示例,使用Android备份服务

    您知道任何 Android 应用程序 开源 如果可能的话 它使用安卓备份服务 http developer android com guide topics data backup html 我需要有关如何在实际应用程序中使用备份服务的示例
  • android 中的自定义 MediaPlayer 类

    我刚刚完成了一个项目 我使用网络视图进行视频播放 现在我被要求用自定义播放器替换 webview 部分 玩家应该能够处理 HLS 如果我使用VideoView和MediaController 我可以播放直播 但不幸的是 MediaContr
  • 如何在eclipse中打开项目

    我下载了 LISTView 教程的 zip 文件 其中包含所有文件 但我不知道如何在 Eclipse 中打开它 因为它只是打开文件 而不是整个项目 我从这里下载的 http mfarhan133 wordpress com 2010 10
  • 将 gradle-tool 更新到 3.1.0-beta3 或 3.2.0-alpha03 后出现新错误

    只是一个具有 prod 和 mock 风格的普通项目 在应用程序 build gradle中 sourceSets main java srcDirs blabla bla test java srcDirs blabla bla andr
  • Android 上可拖动、滚动和缩放的三角形 ImageView

    我已经添加三个不同的bitmap to one ImageView如下图所示 但问题是我无法编辑它Bitmap被设定为ImageView 我想要拖动 滚动和缩放个体Bitmap in the ImageView 我的获取组合的代码bitma
  • 等待设备时出错:AVD 的模拟器进程 .... 已被终止

    我是Andriod开发的新手 在运行该应用程序时遇到了一个奇怪的问题 如下图所示 我也google了一下 但没有找到有用的答案 谁能告诉我我能做什么 gt 我找到了这个 只需转到这个目录 cd ANDROID HOME Sdk emulat
  • 我在 Android studio 中遇到错误

    在此输入图像描述 https i stack imgur com bvqID png我是安卓新手 我刚刚在 android studio 中创建了一个项目 并且在它的中遇到了问题manifest xml 错误是在 android icon
  • 如何在 Android 上重复使用 AlertDialog 来表示是/否?

    我正在尝试找到重用显示自定义标题的对话框的方法 然后将 是 否 单击发送到启动该对话框的函数 我有两个按钮 保存 和 关闭 两者都调用 是 否 对话框 一个显示 您要保存 另一个显示 关闭更改吗 我认为我的程序非常 脏 但我想它可以工作 但
  • 如何在状态栏显示通知?

    所以我在我的活动中创建了此通知 Notification n new Notification Builder getApplicationContext setContentTitle New mail from sender setCo
  • 小部件双击

    我有一个小部件 AppWidgetProvider 我想知道是否有办法支持多次点击 示例 1 如果是第一次点击widget 那么widget的ImageButton会发生变化 例如 改变颜色 2 如果是第二次 则打开一个Activity A
  • 原包AndroidManifest属性有什么用?

    我使用 apktool 提取 Jelly Bean 上默认浏览器的清单 清单中出现了这一行
  • 使用 Gradle 在多个 Android 应用程序之间共享 Android 库

    我有 Android 应用程序 A 和 B 我想将每个应用程序中的重复代码提取到共享库 L 中 如何使用 Gradle 执行此操作 我之前见过这个问题的一些排列 但答案很少 最接近 最好的已问问题是这个 多个 Android 应用程序依赖于
  • 活动丢失后终止异步任务

    这是我的过程和问题 在此应用程序中 您单击菜单按钮 在此菜单中 您按下切换按钮 该按钮将启动异步任务 每 30 秒发出一次提示音 该任务是在选中切换时持续运行 并在取消选中时取消 只要您留在菜单窗口中 就可以启动和停止该过程 检查切换框 如
  • 如何获取另一个应用程序的版本名称

    我想获取 Minecraft Pocket Edition 的版本名称 示例 0 13 0 b5 这是MCPE 我的世界袖珍版 的包 com mojang minecraftpe 我想要版本为String 我怎样才能做到这一点 我的获取包名
  • 如何确定 Android UI 元素的 XPATH。硒 + Appium

    我目前正在使用 Appium 和 Selenium 自动化 Android 应用程序 并且在通过 ID 定位元素时遇到了一些问题 我想使用 XPATH 但不知道如何获取 android UI 元素的 XPATH 有谁知道如何确定元素的 XP
  • Ripple 需要 API 级别 21(当前最低为 11),android?

    我有下面的可绘制的
  • NestedScrollView 用完滚动内容后,停止折叠工具栏折叠

    在 Android 中 如果 NestedScrollView 没有滚动的内容 如何让 CollapsingToolbar 停止折叠 此功能目前存在于 Android 5 1 1 上的联系人应用程序中 但是 在我的代码中 当 NestedS
  • Android 自定义相机 - 在矩形内裁剪图像

    我有一个自定义相机应用程序 它有一个居中的矩形视图 如下所示 当我拍照时 我想忽略矩形之外的所有内容 该视图与我的 XML 视图中的 Camera Preview 或 SurfaceView 没有任何联系 如下所示
  • “android.view.View 已弃用” - 还有什么可以使用或如何修复?

    我刚刚开始尝试 Android Studio 按照视频教程上的说明进行操作 这是我对这个人告诉我的看法 但我不断收到错误消息 View is deprecated 我该如何解决 或者我该用什么来代替 这是我的代码 public class

随机推荐

  • 学习笔记-Midjourney的关键词详解

    大家好啊 我是了不起 前一段时间ChatGPT突然火爆 大佬们纷纷下场 我也跟着努力学习 做了一些笔记 下面将陆续放出笔记 共享给小伙伴们 这是放出的第七篇 和小伙伴们与时俱进哈 Midjourney 关键词详解 为了方便小伙伴们能够更好的
  • 每天一个Python基础编程题——九九乘法表

    请用for循环打印出九九乘法表 上三角 for low in range 1 10 for row in range 1 low 1 print lt 2 format row low low row end print
  • (Mac)如何下载、安装并注册VMware Fusion虚拟机软件(Mac专用)

    写在前面 前一阵子写了一篇关于 如何下载 安装并注册VMware Workstation Pro虚拟机软件 的文章 但是有一部分用户用的是Mac 发现没有VMware Workstation Pro的Mac版本 还不愿意用价格更昂贵的pd
  • String面试题

    如何判断一个字符串中某个字符出现的次数 听到该问题 我脑海中第一反应是先把字符串转换为字符数组 然后使用foreach循环 在循环体内进行字符比对 代码如下所示 public static void main String args Str
  • GB28181-2022相对2016版“基于TCP协议的视音频媒体传输要求“调整

    规范解读 GB28181 2022针对 基于TCP协议的视音频媒体传输 实时点播 历史视频回放与下载中 TCP媒体传输重连机制 做了说明 修改后的 基于TCP协议的视音频媒体传输要求 如下 实时视频点播 历史视频回放与下载的TCP媒体传输应
  • centos7升级gcc7.1.0(libstdc++.so.6: version `CXXABI_1.3.8' not found)

    260254 w26 260254 bin source activate venv 260254 w26 260254 bin python Python 3 7 2 default Mar 25 2019 11 03 20 GCC 4
  • 哪些是常见的敏感异常Java_java敏感异常有哪些

    java敏感异常有 1 java io FileNotFoundException 泄露文件系统结构和文件名列举 2 java util jar JarException 泄露文件系统结构 java敏感异常有 1 java io FileN
  • 阶乘之和

    问题描述 输入n 计算S 1 2 3 n 的末6位 不含前导0 n lt 10 6 n 表示前n个正整数之积 样例输入 10 样例输出 37913 实现代码 include
  • 面试题笔试-带答案-1

    一 选择题 234 1 下面中哪两个可以在 A 的子类中使用 class A protected int method1 int a int b return 0 A public int method 1 int a int b retu
  • 常见springcloud的中间件

    服务注册与发现 Eureka Consul ZooKeeper 负载均衡 Ribbon LoadBalancer 配置中心 Spring Cloud Config Consul ZooKeeper 消息队列 RabbitMQ Kafka 服
  • visual studio 2015 比较代码差异的几种方法

    linux 命令行中的 diff 不太好看 加了 y 并排看也不方便 希望在两个并排窗口里看看本地文件差异 如果是想直接可视化比较两个本地文本文件的看这个 盘点6款实用的文件对比工具 你都用过吗 郝光明的博客 CSDN博客 1 如果是看本地
  • feign get方法使用对象参数

    feign get方法使用对象参数 feign中和controller中不一样的地方 controller中可以get方法使用对象参数无需任何注解 可默认绑定到对象 ApiOperation 分页列表 GetMapping paged fu
  • SpringBoot多环境开发-配置文件

    一 多环境开发详解 在Spring Boot中进行多环境开发时 你可以使用配置文件来定义每个环境的属性 Spring Boot提供了一种方便的方式来管理和加载不同环境的配置文件 以下是一些常见的配置文件命名约定 application pr
  • window.history.go(-1) 无效,不回退页面

    问题描述 如上提现页面 点击 确认提现 按钮后 ajax请求服务端 成功后 window history go 1 回退到上一页面 但是实际运行时 没有回退 还是在当前页面 为什么 html 代码
  • 连接Oracle提示 ORA-28009: 应当以 SYSDBA 身份或 SYSOPER 身份建立 SYS 连接

    用eclipse测试Oracle连接时候报错 ORA 28009 应当以 SYSDBA 身份或 SYSOPER 身份建立 SYS 连接 解决办法 打开SQL plus并且进行连接 win r敲入命令 sqlplus nolog 进入SQL
  • 系统运维日常巡检都做什么

    系统运维日常巡检都做什么 系统运维日常巡检是确保服务器和系统正常运行的关键活动 它涉及对硬件 软件和网络进行定期检查 以发现潜在问题并采取相应的措施 以下是系统运维日常巡检的一些常见任务 1 硬件检查 检查服务器硬件的健康状态 包括电源供应
  • Oracle not in查不到应有的结果(NULL、IN、EXISTS详解)

    http x spirit iteye com blog 615603 首先我要感谢aa和Liu Xing帮我发现了我日志中的错误 之前比较粗心 把3条SQL语句写成一样的了 对于给读者造成的麻烦 我深表抱歉 今天我把原文做了修订 为了对得
  • linux安装管理

    今日学习总结 Linux安装管理 RPM Package Manager RPM是一个强大的命令行驱动的软件包管理工具 用来安装 卸载 校验 查询和更新 Linux 系统上的 软件包 RPM软件的安装 删除 更新只有root权限才能使用 对
  • kafka 3.5 生产者请求中的acks,在服务端如何处理源码

    一 生产者客户端配置参数acks说明 1 acks 1 2 acks 0 3 acks 1 二 请求在写入Leader的数据管道之前 则会验证Leader的ISR副本数量和配置中的最小ISR数量 1 Leader的ISR小于配置文件中min
  • [FAQ14812]如何快速对系统重启问题进行归类

    DESCRIPTION 当手机发生系统重启 即导致kernel重启的异常时 会在手机中的 data aee exp目录下保存异常重启的db 工程师可以通过GAT的bug report功能 或者直接通过adb pull 把对应的db从手机中抓