[Android稳定性] 第047篇 [问题篇] Unexpected kernel BRK exception at EL1 4月前查看 评论
[Android稳定性] 第047篇 [问题篇] Unexpected kernel BRK exception at EL1

**问题背景**:多款手机在启用移动热点功能后出现死机现象,涉及BUGO19-6212、BUGO19-6235和BUGO19-6210等多个JIRA问题。 **问题现象**:设备在启用热点后崩溃。经过测试,发现启用热点功能会导致设备死机,与预期不符。 **问题分析**:通过分析堆栈信息和汇编代码,初步判断问题为数组越界。寄存器W26的值超出数组最大值,导致数组越界,进而触发BRK异常。 **wlan模块分析**:在wlan模块中,存在两个for循环,重复复制了同一批非indoor信道,导致pcl_len值翻倍,超出数组最大值。 **解决方案**:删除第二个for循环,避免重复复制信道,从而解决数组越界问题。

[Android稳定性] 第044篇 [问题篇] Unable to handle kernel write to read-only memory at virtual address 4月前查看 评论
[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 4月前查看 评论
[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 5月前查看 评论
[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稳定性] 第005篇 [问题篇] 原子状态调度引起死机 10月前查看 评论
[Android稳定性] 第005篇 [问题篇] 原子状态调度引起死机

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

[Android稳定性] 第043篇 [问题篇] Unable to handle kernel NULL pointer dereference at virtual address 11月前查看 评论
[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`节点有关,当尝试读取这个节点时,会导致手机死机。此节点是早期指纹需求所创建,目前已无实际用途,因此解决方案建议移除该节点。