[Android稳定性] 第025篇 [问题篇] KASAN slab-out-of-bounds内存越界问题 4月前查看 评论
[Android稳定性] 第025篇 [问题篇] KASAN slab-out-of-bounds内存越界问题

文章摘要:在kasan版本corgi:4967550中,发现4台设备死机,问题源于usbpd模块的slab-out-of-bounds。分析发现,问题出在usbpd_mi_vdm_received_cb函数中的for循环,导致内存越界。通过汇编代码和源码确认,vdos起始地址为0xffffff808d6c0a58,范围为0x8。解决方案是调整循环次数,使用rx_msg->data_len/sizeof(u32)来控制。此外,问题是由KASAN检测出的slab内存泄漏,可通过内存分布和alloc/free track进一步分析。

[Android稳定性] 第024篇 [方法篇] RCU Stall问题如何进行分析? 4月前查看 评论
[Android稳定性] 第024篇 [方法篇] RCU Stall问题如何进行分析?

RCU是一种针对多核多线程环境的内存同步机制,适用于读多写少的场景,通过读写操作分离提高系统效率。RCU Stall是RCU子系统在检测到异常时触发的状态,常见原因包括任务长时间运行、RCU临界区未退出等。分析RCU Stall的方法包括查看内核日志、任务堆栈回溯、检查长时间运行任务和调整RCU参数等。实例中通过dmesg日志分析确认RCU Stall问题,并通过触发panic获取更多信息。