9小时前
[linux内存管理] 第 047 篇 Linux 内存回收(Memory Reclaim)总体架构
Memory Reclaim 是 Linux 内存管理的重要组成部分,也是理解内核内存管理的关键。本文以 Linux 5.15 为主线,从整体架构的角度梳理 Memory Reclaim 的工作流程、核心模块及源码结构,为后续深入分析页面回收机制做好铺垫。
3日前
[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 默认为未初始化的
1周前
再看《孩子王》观后感:当AI成为每个人的“字典”之后
2026-06-01
[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
2026-06-01
[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。
2026-05-06
[开源项目] GitNexus + Claude Code 配置与使用指南
GitNexus 是一款将代码仓库自动索引为知识图谱的工具,它会追踪项目中的每个依赖、调用链、集群和执行流,并通过 MCP(Model Context Protocol)暴露给 Claude Code,使 AI 代理真正理解代码的全局架构与复杂关系。在实际开发场景中,GitNexus 的核心价值体现在四个方面:让 AI 在分析和修改代码时不再遗漏隐含依赖和调用链;在改动代码前,可以准确评估变更的“爆炸半径”,降低引入潜在 bug 的风险;调试时能沿着调用链快速锁定错误源头,节省排查时间;进行重构和多文件重命名时更安全可控,减少对线上系统的影响。
2026-04-10
[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 链表并
2026-04-01
AI时代笔记工作流:构建下一代知识管理引擎
2026-03-24
认知加速度:AI时代最残酷的鸿沟,正在此刻拉开
真正拉开的差距,不只是技术工具,而是思维范式的鸿沟。
2026-03-20
Linux 内核崩溃分析报告 - AI
作者展示了一份由 AI 生成的内核崩溃分析报告,并借此示范如何系统排查数组越界问题。案例中,qteeconnector@1 进程在 smcinvoke_dlkm 模块的 prepare_send_scm_msg() 内触发数据中止异常,原因是结构体中的边界字段被破坏:本应是一个很小的回调计数,却变成了 0x80010001 这种高得离谱的值,导致循环迭代数百万次,最终访问到未映射地址 0xffffff8005700000,引发崩溃。报告详细记录了从初始 bt、查看内核日志、确认模块基址,到对故障函数反汇编、检查结构体内存布局、用地址和寄存器值反证越界过程的完整推理链
2026-03-11
AI时代的思考:内核稳定性工程师离失业还有多久?
当 AI 能读 ramdump、调 crash、自己规划分析路径并输出报告时,内核稳定性工程师并不会被替代,但大量“敲命令、翻日志、整理报告”的重复劳动将被快速重构。作者提出的工具,不是简单封装 crash,而是让 AI 真正进入 ramdump 分析闭环:工程师只需提供标准化输入(vmcore 或分离 DDR dump 的 dump_spec、vmlinux、模块符号、crash 参数),AI 基于 Claude skills 和 MCP 调用 crash-mcp,在受控环境中打开会话、执行命令、解读输出、决定下一步分析动作,并最终按模板生成结构化报告。在这个时代,作为稳定性工程师,我们离失业还剩多久?
2026-03-06
[linux内存管理] 第045篇 per-CPU变量的静态与动态分配
延续前一篇对 per-CPU 基础与初始化的分析,这一部分聚焦于内核中的静态 per-CPU 变量及其使用方式。之后将问题的重点放在了动态per-CPU变量的分配逻辑上,并通过一个案例来分析分配逻辑的内部细节。