linux-dead-lock-detect-lockdep 9月前 评论
linux-dead-lock-detect-lockdep

死锁是多进程或线程因相互等待资源而导致系统阻塞、难以自我恢复的严重问题。Linux 内核区分 D 状态死锁(因 I/O 资源长时间等待导致局部进程间互锁,多表现为系统冻结)和 R 状态死锁(进程占用 CPU 不释放,可能引发全局系统调度失败及看门狗复位)。常见死锁类型包括重复上锁、ABBA 顺序反复上锁等,尤其是 AB-BA 死锁,最易因多线程错拿锁顺序形成。为应对复杂内核环境中的死锁风险,lockdep 死锁检测模块应运而生,通过跟踪锁类以及各锁类的依赖链,提前发现潜在死锁风险并进行详细状态分析。

[Android稳定性] 第044篇 [问题篇] Unable to handle kernel write to read-only memory at virtual address 9月前 评论
[Android稳定性] 第044篇 [问题篇] Unable to handle kernel write to read-only memory at virtual address

在老化测试中,多台机器出现黑屏问题,主要现象为使用9-11版本时,27台机器中有25台因USB问题导致dump,且问题多出现在使用33瓦充电器时。通过LOG分析,问题出现在45次重启测试中。dmesg日志显示,问题源于内存异常踩踏,具体为操作了空指针地址的结构体成员。 根本原因分析表明,在dwc3_msm模块中,存在一个空指针赋值操作,导致数据写入异常地址。解决方案建议对涉及空指针的代码进行兼容性处理,并在gerrit上提交了相关代码修改。

[Android稳定性] 第042篇 [问题篇] 数组越界导致的Unexpected kernel BRK exception at EL1 9月前 评论
[Android稳定性] 第042篇 [问题篇] 数组越界导致的Unexpected kernel BRK exception at EL1

在reboot压力测试中出现一台设备死机,分析发现是由于函数 `fg_mac_read_block` 在处理数据时,没有对数组长度进行范围限制,导致数组越界,触发 `Unexpected kernel BRK exception at EL1` 异常,最终导致设备死机。通过分析汇编代码和寄存器状态,确定问题根源并提出了修复方案,即在读取数据后增加对长度的判断,防止数组越界。同时,引申出对 `trace32` 解析结果和编译器优化行为的思考,强调了在实际调试中应结合寄存器状态进行分析,并注意编译器可能进行的优化。

[Android稳定性] 第041篇 [问题篇] Unable to handle kernel paging request at virtual address 00046ffca9037bf9 9月前 评论
[Android稳定性] 第041篇 [问题篇] Unable to handle kernel paging request at virtual address 00046ffca9037bf9

系统在休眠过程中发生死机,核心原因在于disp_feature/disp-DSI-0模块的异常。分析日志发现display初始化流程被电源键中断函数非正常触发,导致初始化时出现竞争。两个线程并发执行display相关操作,其中T710线程通过pwrkey的irq触发,导致多次试图注册disp_feature设备,引发sysfs重复命名报错(-EEXIST),随后proc目录下相关内容未能正确清理并产生资源泄漏。整个流程暴露出display初始化与电源键中断处理耦合过紧、并发管理不合理、设备注册机制缺陷等问题,易导致系统异常或内核崩溃。

MTK平台模块加载顺序控制 10月前 评论
MTK平台模块加载顺序控制

本文主要探讨了Android设备中模块加载顺序控制的相关知识点。首先,介绍了模块在文件系统中的位置要求,包括不同启动模式下模块的存放位置和加载顺序。接着,阐述了Android构建系统如何通过定义变量来支持模块加载,并举例说明了供应商内核模块的配置方式。然后,针对MTK平台,详细分析了模块加载控制机制,包括`ko_order_table.csv`文件的作用、编译逻辑以及树外驱动编译控制。最后,总结了设置模块加载顺序的原则,即通过调整`ko_order_table.csv`中的顺序来控制模块加载顺序,遵循先加载ramdisk模块,后加载vendor模块,且同一类型模块中,顺序靠前的先加载。

[Android稳定性] 第039篇 [问题篇] 记几次判断为DDR不稳定导致的死机问题 10月前 评论
[Android稳定性] 第039篇 [问题篇] 记几次判断为DDR不稳定导致的死机问题

在公司工厂老化测试过程中,出现多台机器死机,经技术分析后判断主要原因是DDR内存不稳定。文章详细记录了多个典型案例,展示不同核和线程在同一时间内频繁发生的异常,如内核试图在非可执行区域运行代码、遇到未定义指令错误、空指针解引用和地址翻译异常。通过对内核日志的深入解读,指出这些错误随机且大范围发生,反映出页表结构或内核代码段受损,极可能由DDR故障引发。此类高频和多样化的系统异常,为生产稳定性团队提供了宝贵的实操参考,有助于准确定位和快速解决类似硬件稳定性问题。

简述
在万物之间穿行,也在自我之间渡过。
生涯
  • 行业嵌入式
  • 职业Linux/Android内核工程师
  • 人生
  • 生活角色浪子、父母的娃、我夫人的老公
  • 社会角色公司职员、中华人民共和国公民
  • 类型
  • 星座 双子座
  • 生肖
  • 血型O
  • 数据
  • 发表文章171篇
  • 发表评论51个
  • 星球加热28596度
  • 最近的心情能量
  • 地图数据来源于高德地图
  • intj 建筑师
    intj 建筑师
    • 外向内向
    • 远见现实
    • 理性感受
    • 评判展望
    • 坚决起伏
  • 了解更多信息