[Android稳定性] 第000篇 Android稳定性系列开篇 2024-12-15 2 条
[Android稳定性] 第000篇 Android稳定性系列开篇

本文集深入探讨了Android稳定性问题,分为方法篇、原理篇和问题篇三个部分。方法篇介绍了稳定性分析的方法,包括高通Android平台稳定性分析、watchdog分析流程、crash分析以及RCU Stall问题的分析等。原理篇详细解析了subsystem ramdump、mtdoops、minidump、blackbox等稳定性相关原理,以及高通平台watchdog机制和QCOM常见reboot类型流程。问题篇则列举了多种稳定性问题案例,如原子状态调度引起的死机、中断风暴导致的panic、内存分配失败、slab内存泄露等,并分析了其原因及解决方案。

[Android稳定性] 第64篇 blk_mq_tags Use-After-Free 导致系统级 I/O 死锁 6日前 1 条
[Android稳定性] 第64篇 blk_mq_tags Use-After-Free 导致系统级 I/O 死锁

围绕 SPRD UMS9230 平台在 DDR Qualify.TT 测试中出现的冻屏问题,分析通过 ramdump、vmlinux 等工件定位到根因在内核 Block 层:blk_mq_tags 结构体发生 use-after-free,Scsi_Host.tag_set.tags 指针指向已被释放并被 cpumask/IRQ affinity 对象重用的 kmalloc-128 slab。内存中出现 “effective_affinity” 字符串,进一步印证该区域已被 IRQ 亲和性相关对象覆盖。由于 blk_mq_hw_ctx.tags 和 sched_tags 均为 NULL,当 E

[Android稳定性] 第63篇 EROFS 解压缩页面 Use-After-Free 导致 Kernel Panic 6日前 评论
[Android稳定性] 第63篇 EROFS 解压缩页面 Use-After-Free 导致 Kernel Panic

围绕一次发生在 Qualcomm Ravelin SNP-AN00 平台上的 kernel panic,分析聚焦于 EROFS 压缩文件系统在 LZ4 解压过程中出现的 translation fault。根因是函数 z_erofs_lz4_decompress_partial 通过 __memcpy 访问压缩源页时,源页与目标页已被 page allocator 释放并填充为标准毒化值 dead000000000400,形成典型的 use-after-free。

[linux内存管理] 第046篇 Page Cache脏页回写机制深入分析 2026-04-10 1 条
[linux内存管理] 第046篇 Page Cache脏页回写机制深入分析

围绕 Linux‑6.1 的 Page Cache 脏页回写机制展开,承接上一篇“脏页标记”,完整追踪数据从被修改到落盘的路径。先提炼回写要解决的三大问题:何时触发、由谁执行、如何高效写回;再从历史演进切入,对比早期全局 pdflush/kupdated 与现代按设备划分的 bdi_writeback 框架,重点解析 backing_dev_info、bdi_writeback 等核心结构中与脏页控制、阈值、速率限制和等待队列相关的关键字段。通过源码路径展示回写线程从 bdi_queue_work 被唤醒,到 wb_workfn 轮询任务、wb_do_writeout 扫描 inode 链表并

[LRDP2] 解析插件之logcat 2026-02-28 评论
[LRDP2] 解析插件之logcat

通过logcat_v3和logcat_vma两套解析方案,工具能够应对大多数Android设备的内存布局变化,成功从ramdump中还原出logcat日志。整个过程涉及进程内存读取、数据结构逆向、多线程解析、日志去重等技术点,充分体现了ramdump parser工具的灵活性和强大功能。 本文重点剖析了logcat_v3的实现细节,从定位log buffer,到解析日志块,再到合并内核日志,每一步都力求清晰。希望读者能从中了解到Android logcat在内存中的存储方式,以及离线解析工具背后的工作原理。