![[Android稳定性] 第042篇 [问题篇] 数组越界导致的Unexpected kernel BRK exception at EL1](https://iliuqi-obsidian.oss-cn-shanghai.aliyuncs.com/20250530185516136.png)
[Android稳定性] 第042篇 [问题篇] 数组越界导致的Unexpected kernel BRK exception at EL1
在reboot压力测试中,一台设备出现死机,死机类型为Unexpected kernel BRK exception at EL1,发生在CPU7上的fg_mac_read_block函数。通过分析内核调用跟踪和源码,发现死机是由于fg_checksum函数中的数组越界引起的。具体来说,t_len没有做范围限制,导致在t_buf[35]大于42时,访问t_buf数组越界。解决方案是在t_len大于42时将其限制为42。此外,分析还发现不能完全相信trace32解析处的变量结果,某些情况下需要根据寄存器值来推导实际值。此外,编译器优化也对代码执行产生了影响,例如在某些情况下直接将结果赋值给寄存器,不再运行时计算。
![[Android稳定性] 第041篇 [问题篇] Unable to handle kernel paging request at virtual address 00046ffca9037bf9](https://iliuqi-obsidian.oss-cn-shanghai.aliyuncs.com/20250520191844464.png)
[Android稳定性] 第041篇 [问题篇] Unable to handle kernel paging request at virtual address 00046ffca9037bf9
问题现象 死机 分析步骤 [ 189.052980][ T5068] Unable to handle kernel paging request at virtual address 00046ffca9037bf9 [ 189.052991][ T5068] Mem abort info:

MTK平台模块加载顺序控制
一、文件位置 在讲述模块加载顺序控制前,我们需要了解一些基础知识点,也就是模块位置。 启动模式 存储 显示 拨号键盘 电池 PMIC 触摸屏 NFC/WLAN/蓝牙 传感器 相机 恢复 Y Y Y Y Y N N N N 充电 Y Y Y Y Y N N N N</
![[Android稳定性] 第039篇 [问题篇] 记几次判断为DDR不稳定导致的死机问题](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/25/4/cover_android_stability_039.png)
[Android稳定性] 第039篇 [问题篇] 记几次判断为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篇 [原理篇] 理解中断上下文、进程上下文以及进程调度之间的关系
一、三者概念的梳理 1.1 进程上下文(Process Context) 当内核代码是在为一个具体进程执行某项任务(比如响应系统调用)时,就是在“进程上下文”。 是普通用户或内核线程运行的上下文。 可以被调度、休眠、阻塞。 拥有完整的进程信息(task_struct)。 可以执行阻塞操作,比如 sl
![[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内核栈的概念、重要性以及在使用过程中可能遇到的常见问题。以下是摘要总结: 文章首先解释了内核栈的定义及其在内核代码运行时的作用,强调每个线程都有一块独立的内核栈。在ARM64架构下,内核栈大小默认为16KB,不可扩展。内核栈中保存了函数调用链、局部变量、寄存器上下文等信息。 文章还探讨了内核栈的常见错误操作,如分配过大的数组或返回栈上变量的地址,可能导致栈溢出等问题。并对比了内核栈与用户栈的差异。 最后,文章提供了调试内核栈的方法和内核栈溢出的日志示例,给出了避免内核栈溢出的建议,包括避免在内核栈上分配大数组、使用kmalloc分配大缓冲区以及开启DEBUG_STACK_USAGE检测等。