云栖梦泽
林渡
Blog
  • 首页
  • 开始浏览
    • 人世间
      • 世间风声
      • 人间烟火
    • 壹句话
    • 山中功课
      • LRDP2
      • 技术分享
      • ARM体系架构
      • Linux内存管理
      • Android稳定性
    • 云外光影
      • 动物与植物
      • 美食
      • 生活气息
      • 人物
    • 文章归档
      • 技术分享
      • 视频类型
      • 音频类型
      • 图文类型
      • 图片类型
  • 专题
    • 众星
    • 豆瓣
    • 足迹
    • 走心评论
    • 林渡的网盘
  • 留言板
  • 关于
    • 关于我
    • 一些声明
      • 站点声明
      • 隐私政策
    • 网站统计
  • 欢迎订阅!

欢迎来到云栖梦泽,为您导读全站动态
  • 老司机 1小时前留言 多年维修经验来看,这篇文章的方法确实靠谱。特别是分区回读那部分,图示很直观。
  • 技术达人 3小时前留言 blackbox的设计思路很清晰,特别是分区管理这块,解决了日志分散的问题。期待看到更多实现细节!
  • 明珠有泪 5小时前留言 看完感觉收获很大,之前一直对ftrace日志的导出和解析不太了解,现在清楚多了。顺便分享下,我用ramdump解析ftrace遇到过输出文件丢失的情况,后来发现是参数没写全,提醒大家注意下~
  • 暴躁的寿司 1日前留言 文章写得不错,但有些术语解释得不够通俗。比如'enter_lazy_tlb'这个函数,如果能用更直白的语言说明它的作用会更好。另外,代码示例很赞!
  • 安卓开发小白 1日前留言 作为一个新手,这篇文章有点难懂,但是关于日志时间线的问题确实是我们经常遇到的痛点。
  • 安卓爱好者 1日前留言 图片步骤很清晰,跟着操作一次就成功了!感谢分享~
  • 质量守护者 1日前留言 请问作者,blackbox在实际项目中应用后,稳定性问题定位时间缩短了多少?有没有具体数据可以分享?
  • 夏天的小鱼 1日前留言 请问通过fastboot指令设置ftrace时,如果遇到字符长度限制,有没有比较优雅的解决办法?手动去改源码好像有点麻烦,还会影响到后续OTA升级吗?
  • 活泼的汉堡 1日前留言 低电关机流程确实是个容易出问题的地方!我们项目中也遇到过类似情况,后来是在Android framework层增加了电源状态检查,确保上层应用都退出后再执行底层shutdown。
  • 调试小能手 2日前留言 最近正好遇到这个问题,按照文章方法解决了!不过建议补充下不同版本QFIL的兼容性问题。
2025 年 9 月
日一二三四五六
123456
78910111213
14151617181920
21222324252627
282930
« 8 月  
最近文章
  • 2025-09-05 高效工作的秘诀:时间管理
  • 2025-09-04 琴棋书画诗酒花与柴米油盐酱醋茶的人生辩证
  • 2025-09-04 透视人生的意义:活出属于自己的答案
  • 2025-08-27 [Android稳定性] 第058篇 [方法篇] 高通平台使用QFIL回读分区
  • 2025-08-23 [linux内存管理] 第029篇 谁把folio的函数定义“藏”起来了?
  • 2025-08-19 【深入内核】ARM64下的内核栈
  • 2025-08-11 【深入内核】内核printk原理介绍
  • 2025-08-08 [LRDP2] 解析插件之dmesg
热门文章
  • 2025-06-06 高通平台xbl启动流程补充
  • 2025-06-27 [Android稳定性] 第053篇 [方法篇] 稳定性问题分析指导
  • 2025-06-25 [Android稳定性] 第052篇 [方法篇] HMI项目中如何使用QCAP解析minidump?
  • 2024-12-15 [Android稳定性] 第000篇 Android稳定性系列开篇
  • 2025-06-04 [Android稳定性] 第046篇 [方法篇] 如何使用trace32恢复AOP现场?
  • 2025-07-21 高通以及MTK平台内核单独编译ko的原理
  • 2025-06-09 【深入内核】linux ftrace详解
  • 2025-06-04 [Android稳定性] 第045篇 [问题篇] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00007f00
热门标签
  • 价值观 1
  • 生产力工具 1
  • Linux内核 1
  • 理想与现实 1
  • 人生态度 1
  • 人生意义 1
  • 精神追求 1
  • 番茄工作法 0
  • 习惯养成 0
  • 生活美学 1
  • 内核栈 1
  • 任务优先级 0
  • 反思 1
  • 个人成长 1
  • 时间管理 1
  • 效率提升 0
  • 自我认知 1
  • 烟火气 1
  • 任务管理 1
  • 寄存器 1
  • 高效工作 1
  • 页面管理 1
  • minidump 3
  • kmalloc 1
  • kasan 2
  • dtc 1
  • 内存规整 1
  • setup_arch 1
  • 进程栈 2
  • mtdoops 1
  • QFIL 1
  • memory 3
  • git 1
  • 编译器优化 1
  • buddy 3
  • memblock 4
  • LDO 1
  • 虚拟地址 2
  • ACK 1
  • ANR 0
  • arm64 2
  • crash 4
  • 内存管理 5
  • hang 1
  • vercel 1
  • dumpsys 1
  • spinlock 2
  • 消费主义 1
  • 线性映射 1
  • io 1
8127° 143 9 73
当您评论及浏览文章且浏览器未禁止COOKIE时,会为您显示最近10条回复及前8篇文章的浏览记录。
正在阅读:足迹

足迹

今天是云栖梦泽·

2024-11-11

随机阅读「linux-dead-lock-detect-lockdep」
阅读 **死锁概念**:死锁是指多个进程(线程)因等待已被其他进程占有的资源而陷入阻塞的状态。死锁一旦发生,程序本身无法解决,只能依靠外部力量使程序恢复运行。Linux 提供了检测死锁的机制,主要分为 D 状态死锁和 R 状态死锁。 **死锁类型**: * **D 状态死锁**:进程等待 I/O 资源无法得到满足,长时间处于 TASK_UNINTERRUPTIBLE 睡眠状态。触发成因复杂多样,可能因为 synchronized_irq、mutex lock、内存不足等。 * **R 状态死锁**:进程长时间处于 TASK_RUNNING 状态垄断 CPU 而不发生切换,导致多 CPU 间互锁,整个系统无法正常调度。 **常见错误**: * AA: 重复上锁 * ABBA: 曾经使用 AB 顺序上锁,又使用 BA 上锁 * ABBCCA: 这种类型是 ABBA 的扩展。AB 顺序 , AB 顺序,CA 顺序。 * 多次 unlock **AB-BA 死锁的形成**:假设有两处代码都要获取两个锁(lockA 和 lockB),如果进程 P 持有 lockA 后再去获取 lockB,而此时恰好由进程 Q 持有 lockB 且它也正在尝试获取 lockA,那么此时就是处于死锁的状态。 **lockdep 死锁检测模块**:lockdep 是 Linux 内核中的一种死锁检测机制,通过跟踪锁类的使用历史状态和依赖关系,以确保锁类状态和锁类之间的依赖总是正确的。lockdep 会检测并报告死锁风险,并提供相应的出错处理机制。 **检查规则**: * 单锁状态规则:一个软中断不安全的锁类也是硬中断不安全的锁类。 * 多锁依赖规则:同一个锁类不能被获取两次,不能以不同的顺序获取两个锁类,同一个锁实例在任何两个锁类之间,嵌套获取锁的状态前后需要保持一致。 **使用实例**:Lockdep 检测到死锁风险时,会打印相应的风险提示,并建议开发者修复代码,避免死锁。
壹行随十人
  • 风记星辰
  • 星风之痕
  • 山海云栈
  • 秘柯云仓
  • 问心斋
  • 轻雅阁
  • 迷鹿屋
  • 世上云川
  • 菲兹克斯喵
云栖梦泽版权所有 · 架构于Halo及为您增强体验的THYUU/星度主题
苏ICP备2025185582号-1 苏ICP备2025185582号-1 苏公网安备32060102321049号 苏公网安备32060102321049号 BlogsClub BlogsClub
总访问量:| 访客人数: