![[Android稳定性] 第039篇 [问题篇] 记几次判断为DDR不稳定导致的死机问题](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/25/4/cover_android_stability_039.png)
[Android稳定性] 第039篇 [问题篇] 记几次判断为DDR不稳定导致的死机问题
本文记录了工厂老化测试中多台机器死机的情况,作者评估为DDR问题。文章详细描述了8个案例,并分析了判定为DDR问题的依据,包括内核执行异常、空指针解引用、地址大小错误等。作者总结了DDR不稳定可能是原因,包括内存访问错误、多核系统的并发性、内存映射与虚拟内存、缓存一致性问题等。最后,作者建议对出问题的机器进行DDR压力测试,以验证DDR是否为问题根源。
![[Android稳定性] 第040篇 [问题篇] 高通平台tz busy造成的卡死问题](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/25/4/cover_android_stability_040.png)
[Android稳定性] 第040篇 [问题篇] 高通平台tz busy造成的卡死问题
当前文章内容已隐藏,输入密码后可见。
![[Android稳定性] 第038篇 [问题篇] 在workqueue中取消自身导致的workqueue自锁](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/25/4/cover_android_stability_038.png)
[Android稳定性] 第038篇 [问题篇] 在workqueue中取消自身导致的workqueue自锁
当前文章内容已隐藏,输入密码后可见。
![[Android稳定性] 第033篇 [问题篇] suspend时shedule io操作导致线程阻塞引发死机](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/25/4/cover_android_stability_033.png)
[Android稳定性] 第033篇 [问题篇] suspend时shedule io操作导致线程阻塞引发死机
当前文章内容已隐藏,输入密码后可见。
![[Android稳定性] 第036篇 [原理篇] 理解中断上下文、进程上下文以及进程调度之间的关系](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/25/4/cover_android_stability_036.png)
[Android稳定性] 第036篇 [原理篇] 理解中断上下文、进程上下文以及进程调度之间的关系
本文深入探讨了进程上下文、中断上下文以及 Linux 进程调度器(如 CFS)的概念和关联性。进程上下文是内核代码为特定进程执行任务的环境,能被调度、休眠和参与 CFS 调度。中断上下文是内核响应中断时运行的代码环境,不能睡眠,且不直接参与调度。SoftIRQ 和 Tasklet 作为中间层,处理中断后的任务。三者之间的关联性体现在中断上下文可以触发调度事件,而进程上下文可以主动调用调度器。文中还列举了在中断上下文中不能调用的函数或行为,并强调了中断上下文中禁止使用可能引起睡眠或阻塞的函数,以避免系统问题。
![[Android稳定性] 第037篇 [问题篇] vote函数持锁造成经典的AB-BA死锁](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/25/4/cover_android_stability_037.png)
[Android稳定性] 第037篇 [问题篇] vote函数持锁造成经典的AB-BA死锁
当前文章内容已隐藏,输入密码后可见。

【深入内核】Linux 内核栈详解:你所需要知道的一切
本文深入解析了 Linux 内核栈的概念与重要性,详细介绍了内核栈的组成、大小、使用场景及其与用户栈的差异。文章强调了内核栈溢出等问题的严重性,并提供了避免常见错误的建议,如避免在内核栈上分配大数组,使用 kmalloc 分配缓冲区,以及开启 DEBUG_STACK_USAGE 选项进行栈使用检测。此外,文章还介绍了调试内核栈的方法和内核栈溢出的日志示例,为开发者和调试者提供了实用的指导。
![[Android稳定性] 第035篇 [问题篇] 中断风暴触发watchdog bite](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/25/4/cover_android_stability_035.png)
[Android稳定性] 第035篇 [问题篇] 中断风暴触发watchdog bite
**问题背景**:系统出现死机现象,且插上屏幕后问题消失。 **问题分析**: 1. **dmesg分析**:发现watchdog被触发,导致系统死机。 2. **堆栈分析**:`dsi_ctrl_hw_cmn_ctrl_reset()`函数卡住,没有正常返回。 3. **中断分析**:系统处于中断风暴状态,`msm_drm`和`dsi_ctrl`模块中断触发频率异常高。 4. **中断号分析**:通过T32工具查找中断号,进一步确定问题根源。 **根本原因**: 某个设备中断(如QtiBus/IPC/CAN)在IRQ handler中未及时退出,导致CPU被中断处理任务占满,无法进行正常调度,最终触发watchdog并导致死机。
![[Android稳定性] 第034篇 [问题篇] 进程阻塞触发watchdog bite死机](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/25/4/cover_android_stability_034.png)
[Android稳定性] 第034篇 [问题篇] 进程阻塞触发watchdog bite死机
当前文章内容已隐藏,输入密码后可见。
![[Android稳定性] 第032篇 [原理篇] 高通平台 OCP & 组合键 Warm Reset 机制详解](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/25/4/cover_android_stability_032.png)
[Android稳定性] 第032篇 [原理篇] 高通平台 OCP & 组合键 Warm Reset 机制详解
一、引言 在基于 Qualcomm 平台的 Android 系统开发与调试过程中,常见的系统重启场景包括 Watchdog 重启、用户触发 reboot、按键长按重启等。而其中较为底层且难以捕捉的两种重启方式是: OCP(Over Current Protection)触发的 Warm Reset
![[Android稳定性] 第031篇 [原理篇] Linux内核内存检测工具KASAN](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/25/4/cover_android_stability_031.png)
[Android稳定性] 第031篇 [原理篇] Linux内核内存检测工具KASAN
本文介绍了Kernel Address Sanitizer (KASAN) 的功能、原理和配置方法。KASAN 是一个动态检测内存错误的工具,主要用于检测内存越界访问和使用已释放的内存等问题。它通过使用“额外”的内存来标记内存的状态,并在每次内存访问时检查对应影子内存的值是否有效,从而实现内存错误的检测。KASAN 集成在 Linux 内核中,可以在编译内核时通过添加相应的配置项来启用。
![[Android稳定性] 第030篇 [问题篇] I2C bus hang 导致锁线程阻塞导致卡死](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/25/4/cover_android_stability_030.png)
[Android稳定性] 第030篇 [问题篇] I2C bus hang 导致锁线程阻塞导致卡死
当前文章内容已隐藏,输入密码后可见。