[Android稳定性] 第031篇 [原理篇] Linux内核内存检测工具KASAN 5月前查看 评论
[Android稳定性] 第031篇 [原理篇] Linux内核内存检测工具KASAN

Kasan(Kernel Address Sanitizer)是一个动态检测内存错误的工具,主要功能是检查内存越界访问和使用已释放的内存等问题。Kasan集成在Linux内核中,随Linux内核代码一起发布,并由内核社区维护和发展。在Android内核开发中,Android包括内核地址排错程序(KASan)。KASan是内核与编译时修改的组合,形成了一个插桩系统,可以实现更简单的bug发现和根本原因分析。KASan可以检测内核中许多类型的内存违规行为,包括堆栈、堆和全局变量中的出界读取和写入操作,并可检测释放后再使用和双重释放错误。

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

本文分析了在运行kasan版本corgi: 4967550时出现的死机问题,问题概率为4/7。通过分析dmesg日志,确定问题类型为slab-out-of-bounds,问题函数为usbpd_mi_vdm_received_cb,越界地址为ffffff808d6c0a60。通过trace32工具恢复现场,定位到死机原因为for循环中的数组越界访问。最终,通过修改循环次数为rx_msg->data_len/sizeof(u32),成功解决问题。