[Android稳定性] 第044篇 [问题篇] Unable to handle kernel write to read-only memory at virtual address 3月前查看 评论
[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 3月前查看 评论
[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 3月前查看 评论
[Android稳定性] 第041篇 [问题篇] Unable to handle kernel paging request at virtual address 00046ffca9037bf9

您好,根据您提供的信息,我总结了以下内容: **问题现象**:设备在系统休眠过程中出现死机。 **分析步骤**: 1. **初步定位模块**:问题出现在系统休眠过程中,设备陆续suspend,出问题的dev为disp_feature/disp-DSI-0。suspend流程中,disp-DSI-0的class被注销。 2. **第一个问题点**:display的初始化流程被电源键的中断触发函数触发,而没有走正常的display流程。 3. **第二个问题点**:`mi_disp_core_deinit`函数中,`class_destroy(g_disp_core->class)`导致class被销毁,但`g_disp_feature`仍然指向class,导致内存访问异常。 4. **第三个问题点**:`mi_disp_feature_init`函数中,kfree(df)后没有将df和g_disp_feature置为NULL,可能导致内存访问异常。 **问题总结**: * 死机原因是class的状态被销毁后没有同步给g_disp_feature。 * 需要将g_disp_core和g_disp_feature都置为NULL,并修复display初始化流程。 **建议**: * 修复display初始化流程,确保走正常流程。 * 在`mi_disp_core_deinit`函数中,将g_disp_core和g_disp_feature都置为NULL。 * 检查其他地方是否有类似的内存访问问题。 希望以上信息对您有所帮助!

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

本文记录了工厂老化测试中多台机器死机的情况,作者评估为DDR问题。文章详细描述了8个案例,并分析了判定为DDR问题的依据,包括内核执行异常、空指针解引用、地址大小错误等。作者总结了DDR不稳定可能是原因,包括内存访问错误、多核系统的并发性、内存映射与虚拟内存、缓存一致性问题等。最后,作者建议对出问题的机器进行DDR压力测试,以验证DDR是否为问题根源。

[Android稳定性] 第005篇 [问题篇] 原子状态调度引起死机 8月前查看 评论
[Android稳定性] 第005篇 [问题篇] 原子状态调度引起死机

本文讨论了在多核系统中因锁使用不当导致的死机异常问题。作者通过两个案例说明了当在原子状态下执行调度命令时会出现BUG,并分析了原因,指出使用全局变量来控制加解锁操作是多此一举且易出错的。文章强调应正确使用锁来保护临界区,避免使用全局变量来控制锁状态,以防止并发执行时的问题。

[Android稳定性] 第043篇 [问题篇] Unable to handle kernel NULL pointer dereference at virtual address 9月前查看 评论
[Android稳定性] 第043篇 [问题篇] Unable to handle kernel NULL pointer dereference at virtual address

在测试版本V816.0.24.8.26.UGUCNXM的稳定版挂测中,出现了大量的空指针引用错误。通过离线解析工具分析dump文件,发现问题的核心在于对NULL指针的引用。具体表现为在`mutex_lock`函数中尝试对一个来自`iocb->ki_filp->private_data`的NULL变量加锁,而这个变量是从`struct file`结构体中获取的。进一步检查发现,这与`/proc/hwinfo`节点有关,当尝试读取这个节点时,会导致手机死机。此节点是早期指纹需求所创建,目前已无实际用途,因此解决方案建议移除该节点。