
linux-dead-lock-detect-lockdep
本文主要介绍了死锁概念、AB-BA死锁的形成、Linux中的lockdep死锁检测模块及其使用实例。 摘要: 死锁是指多个进程因为长久等待已被其他进程占有的资源而陷入阻塞的状态。Linux中的lockdep模块可以检测死锁,它通过跟踪锁类之间的依赖关系来工作。文章介绍了死锁的概念,分析了AB-BA死锁的形成原因,并给出了lockdep的使用实例,说明了如何通过lockdep检测和修复死锁问题。
![[Android稳定性] 第044篇 [问题篇] Unable to handle kernel write to read-only memory at virtual address](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/24/11/4PSuNS.png)
[Android稳定性] 第044篇 [问题篇] Unable to handle kernel write to read-only memory at virtual address
一、问题现象 老化测试时出现黑屏现象, 9/12: 今天已经确认的现象 使用9-11的版本 72台机器出现27 个黑屏,其中25个为USB问题引起的dump(2个是电量低关机),通过LOG分析是在老化45次重启测试的时候出问题(45次重启1个半小时),9-11版本带了高通的等待probe完成 wai
![[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解析处的变量结果,某些情况下需要根据寄存器值来推导实际值。此外,编译器优化也对代码执行产生了影响,例如在某些情况下直接将结果赋值给寄存器,不再运行时计算。
![[音乐分享] 没有人是一座孤岛](https://iliuqi-obsidian.oss-cn-shanghai.aliyuncs.com/M20250526001.jpg)
[音乐分享] 没有人是一座孤岛
没有人是一座孤岛,或者,每个人都是一座孤岛。

「要经历多少,才能明白这些话的意义?」
有时候就是那一步,走出来就不一样了

「山上山下,皆是修行」
修行不仅是出家人的事,每一个人都在世间修行: 当你在山上时,要修的是不傲慢、不忘本; 当你在山下时,要修的是不气馁、不自弃; 所有得失起伏、人情冷暖,都是磨砺你的“修行场”。 修行从来不在庙里,而在人心。
![[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</