1周前
[Android稳定性] 第65篇 SELinux 设置为 permissive 模式后出现的 kernel panic
项目在 bringup 阶段发现,将手机 SELinux 设为 permissive 后系统会在进入 Android 前死机。通过 fulldump 与内核日志可见 panic 原因是 UBSAN 报告的数组越界,触发点位于 uzram 模块的 zram_submit_bio。借助自研工具 kernel-panic-killer,AI 自动还原异常路径:反汇编发现 zram_submit_bio 中通过 current_algo 计算压缩算法索引,逻辑为 algo = current_algo; 访问 zram->comps[algo - 1]。由于 current_algo 默认为未初始化的
2025-04-09
[Android稳定性] 第031篇 [原理篇] Linux内核内存检测工具KASAN
Kasan(Kernel Address Sanitizer)是一个动态检测内存错误的工具,主要功能是检查内存越界访问和使用已释放的内存等问题。Kasan集成在Linux内核中,随Linux内核代码一起发布,并由内核社区维护和发展。在Android内核开发中,Android包括内核地址排错程序(KASan)。KASan是内核与编译时修改的组合,形成了一个插桩系统,可以实现更简单的bug发现和根本原因分析。KASan可以检测内核中许多类型的内存违规行为,包括堆栈、堆和全局变量中的出界读取和写入操作,并可检测释放后再使用和双重释放错误。