本章建议先看[linux内存管理] 第020篇 Linux内核slab内存的越界检查——SLUB_DEBUG的原理剖析
1. linux ramdump parser解析dump查看死机原因,是Non secure wdt
123456789CPU |Reset Reason |Reset Count0 |0x00000000 (TZBSP_ERR_FATAL_NONE ) |0x000000001 |0x00000001 (TZBSP_ERR_FATAL_NON_SECURE_WDT ) |0x00000001 // 报错2 |0x00000000 (TZBSP_ERR_FATAL_NONE ) |0x000000003 |0x00000000 (TZBSP_ERR_FATAL_NONE ) |0x000000004 |0x00000000 (TZBSP_ERR_FATAL_NONE ) |0x000000005 |0x00000000 (TZBSP_ERR_FATAL_NONE ) |0x000000006 |0x00000000 (TZBSP_ERR_FATAL_NO ...
0. 前言内核稳定性问题复杂多样,最常见的莫过于“kernel panic”,意为“内核恐慌,不知所措”。这种情况下系统自然无法正常运转,只能自我结束生命,留下死亡信息。诸如:
“Unable to handle kernel XXX at virtual address XXX”“undefined instruction XXX”“Bad mode in Error handler detected on CPUX, code 0xbe000011 – SError”……
这些死亡信息是系统在什么状态下产生?如何产生?以及如何处理?
本文主要就是从这三个方面介绍,在看本章前,请确保已经看完aarch64异常模型以及Linux arm64中断处理
1. 异常处理流程本节案例参考[Android稳定性] 第015篇 [问题篇] Unable to handle kernel NULL pointer dereference的这个异常。
panic的异常如下:
1234567891011121314151617181920212223242526272829303132333435 ...
Android稳定性
未读
一、问题分析1.1 dmesg_TZ.txt1234567891011Kernel log:[41525.700710][T23239] Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: mi_binder_wait4_hook$835a4498e5ea78c0e09ecbebc9fc5a14+0x2f8/0x2fc [millet_binder][41525.700740][T23239] CPU: 5 PID: 23239 Comm: Recents-TaskRes Tainted: G WC O 5.10.198-android12-9-00085-g226a9632f13d-ab11136126 #1[41525.700753][T23239] Hardware name: Qualcomm Technologies, Inc. Parrot QRD, RUAN based on SM7435 (DT)[41525.700761][T23239] Cal ...
Kdump是Linux的一种内核崩溃捕获机制,Linux内核遇到致命错误崩溃时会触发Kdump机制将崩溃时的现场保存下来,以便后续分析和故障排查。目前市面上有很多分析Kdump的工具,例如trace32, crash tool,本文介绍crash tool在手机领域的应用,并重点介绍一些实用的技巧。然而,本文的重点并不是介绍crash tool的工作原理和基础命令,也不是为了介绍Kdump转储的原理以及其他Kdump解析工具,如果你对这些内容感兴趣,请参考本文末尾提供的参考文档。
一、为什么要用crash在手机领域常用trace32或crash来解析内核dump,选择适合的工具可以大大提高问题定位的效率,但有时候我们不得不使用crash,例如下面场景:
1.1 trace32太占用资源在手机领域中,当机器崩溃时通常会将整个内存现场全部转储下来,使用trace32工具分析这些转储信息时,首先需要将这些转储文件全部加载到本地PC端的内存中。目前市面上手机的内存容量一般为16GB或24GB,使用trace32来分析这些dump文件对PC机器的性能要求就很高了。下图展示了在一个32GB内存的 ...
Code 基于 Android U ssi、kernel-5.10
0. 重启类型本文整理的重启流程有:
adb reboot
power key reboot(弹框确认 or 直接重启)
panic reboot整体框架流程见 总流程图。具体代码流程见 重启前流程处理、重启后 reason 传递。
1. 总流程图
2. 重启前流程梳理2.1 adb reboot执行 adb reboot 后经过 adb client 端和 server 端的一些交互后
电脑侧client端,packages/modules/adb/client/main.cpp的main();
内调commandline.cpp的adb_commandline();
转到adb_connect_command();
内调adb_client.cpp的adb_connect();
内调adb_io.cpp的SendProtocolString(),获取 server端的 fd句柄;
手机侧server端,services.cpp的service_to_fd();
内 ...
0. 问题现象死机,dmesg中日志如下:
1234567891011121314151617181920[ 34.029307][ C0] ------------[ cut here ]------------[ 35.844227][ C0] msm_watchdog f410000.qcom,wdt: QCOM Apps Watchdog bark! Now = 35.844222[ 35.844236][ C0] msm_watchdog f410000.qcom,wdt: QCOM Apps Watchdog last pet at 15.841438[ 35.844243][ C0] msm_watchdog f410000.qcom,wdt: cpu alive mask from last pet ff[ 35.844347][ C0] CPU0 next event is 35840000000[ 35.844350][ C0] CPU1 next event is 34048000000[ 35.8 ...
高通watchdog的分析套路:
检查watchdog执行状态,pet、bark time,expires时间等必要信息,可以自己去看msm_watchdog_data,也可以直接检查rampaser解出来的Watchdog data(Non-secure Watchdog data)
检查msm_watchdog进程在哪个cpu上,是否处于ready?检查runqueue文件,如果ready跳到5
如果没有ready,说明没有被timer wake up,则检查timerlist看看timer是否在list中,却没有被执行
如果timer list没有被执行,检查wake timer在那个cpu,为何没有被执行,再去检查irq_stat,tasklet_vec是否有pending
如果已经ready,却没被调度,检查喂狗时间的RTB log是否有中断风暴、中断是否还能正常接收,tick中断是否正常
检查RTB log中进程调度是否正常,哪个进程一直运行阻碍了watchdog进程
检查当前进程是否禁止抢占task_struct.thread_info.preempt_count &g ...
0. watchdog的概念Watchdog主要应用于嵌入式系统,用于系统出现严重故障(如内核死锁,进入死循环,CPU跑飞等)不能恢复时,在无人为介入的情况下可以自动重新启动系统。在传统Linux 内核下, watchdog的基本工作原理是:当watchdog启动后(即/dev/watchdog 设备被打开后),如果在某一设定的时间间隔内/dev/watchdog没有被执行写操作, 硬件watchdog电路或软件定时器就会重新启动系统。Watchdog根据实现方式又可以分为硬件watchdog和软件watchdog。硬件watchdog必须有硬件电路支持,设备节点/dev/watchdog对应真实的物理设备。软件watchdog通过通过内核定时器来实现,/dev/watchdog并不对应真实的物理设备。硬件watchdog比软件watchdog有更好的可靠性。软件watchdog最大的优势是成本低,因此在可靠性要求不是很高一般民用产品被广泛使用。硬件watchdog的优势是可靠性高,因此在对可靠性要求严格 ...
5125d6810bae8c19649ddc12eea8befcf808c9983bf5e1f4d2bf2e7e1ecbca9a9d81c413dc09fe6311fb1bf883b1662e913fb4456571b28045f1116a408f326f8d03322219c0ab8b0de324b3af7dc2e7a1bcc65baa05a0661650bd78d4222d8b1a339f89387eb02d9fbc82eff60e0fb048101ed650d540be1a8c2290f87fe69a1156b9a5b8937121a9d7332a2814359bf2a40b4b223f6ea92a3373a1dc9cf14af5eca111ea534046e89ccc9b7bb57eda3a7ab586457692233a844d43a21c34aa70d8cd33b219e53f2c143123d408f42c02b471d5e048b4f430cdaa5ca3cc4a59086cd4da283304390bbba4eed335eb25765e616f5c00a7509 ...
Linux内存管理
未读
7649effcc1e019670aedcd361e485e81c2f362eb2b298e647fa3ebd367e5a266a6b5cad7fda0631ea61df877702451160dfc7561e842561672563b875f6b603b43420fc3d46faaa57bda71429f35149aa3a00f81957317a1c7d3009a544a5db82bd95a9f583bbabfe21f0ddcd289600bfb08bc92e672ab1ba7f854a5d4773ae70c4f7a4efef4c7ae2427163421a9802115eb59247bd072da7ee4f20ed4e31fde9d9db7b919ed3bae9c7b7f45a4ccb602aea27870ee728b091120ce4a76e4888bae72b8808412ed0c1f9200eec2bc85e77a81cf93d61594e9777a65c1edc44d7355827c1f98e72900dd1821875f789097203f6bcec4a01b345 ...