![[Android稳定性] 第047篇 [问题篇] Unexpected kernel BRK exception at EL1](https://halo-19274848.oss-cn-shanghai.aliyuncs.com/2025/06/halo_ityiau2.webp?x-oss-process=image/resize,w_800,m_lfit)
[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稳定性] 第029篇 [问题篇] 数组越界导致Unexpected kernel BRK exception at EL1](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/25/4/cover_android_stability_029_1c81c82acebdd8120bce9ae2e9352245.png)
[Android稳定性] 第029篇 [问题篇] 数组越界导致Unexpected kernel BRK exception at EL1
### 文章摘要 在高低温测试中,两例设备死机问题指向charger模块。分析日志发现,问题源于`status_change_work`函数中的数组越界,可能与bitflip问题相关。解决方案建议增加兼容性代码,确保`cyclecount`值在0到800之间,防止异常值导致数组越界。
![[Android稳定性] 第027篇 [问题篇] 数组越界导致Unexpected kernel BRK exception at EL1](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/25/4/cover_android_stability_027_c4bd7f27c2dcd67381ab558309350b7e.png)
[Android稳定性] 第027篇 [问题篇] 数组越界导致Unexpected kernel BRK exception at EL1
**摘要:** 在正常测试过程中,手机电池温度达到35度时,手机进入dump状态。问题分析显示,在`pd_policy_manager`模块的`usbpd_pm_workfunc`函数中出现了内核崩溃。进一步分析发现,`usbpd_pm_sm`函数在处理状态转换时,由于状态数组`pm_str`未包含`PD_PM_STATE_FC2_HOLD`,导致数组越界访问,引发崩溃。解决方案建议在`pm_str`数组中添加`PD_PM_STATE_FC2_HOLD`状态。
![[Android稳定性] 第010篇 [问题篇] 数组越界导致的内核panic](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/24/12/cover_android_stability_010.png)
[Android稳定性] 第010篇 [问题篇] 数组越界导致的内核panic
**摘要总结:** 服务器打包的daily版本在刷机后出现900E口死机问题。通过分析dmesg日志,发现程序在`fts_set_cur_value`函数处异常终止。进一步使用trace32工具恢复现场,确认是由于`touch_mode`数组越界导致的内存访问错误。该数组最大值被定义为15,但实际使用时传入了100,导致严重异常。
![[Android稳定性] 第009篇 [问题篇] 数组越界导致的内核panic](https://hexoimg.oss-cn-shanghai.aliyuncs.com/blog/24/12/cover_android_stability_009.png)
[Android稳定性] 第009篇 [问题篇] 数组越界导致的内核panic
**问题现象**: 部分机器插着 USB 后出现死机。 **问题分析**: 通过 `dmesg` 和 `trace32` 分析,发现死机原因是 `power_operation_mode_show` 函数中 `typec_port` 结构体的 `pwr_opmode` 成员值错误(为负数),导致数组越界。 **解决方案**: 更新 charger 模块,修复对 `pwr_opmode` 的误判,确保其值为正数,避免数组越界。 **总结**: 本次问题是由 `typec_port` 结构体的 `pwr_opmode` 成员值错误导致,通过分析定位问题,并更新 charger 模块修复了问题。