skills/ohos-issue-graphics-sysfreeze-analysis/SKILL.md
Use when analyzing OpenHarmony sysfreeze/appfreeze logs to diagnose process freeze and thread blocking issues. Triggers on SERVICE_BLOCK, THREAD_BLOCK_6S, IPC deadlock, task queue blocking, or when user requests sysfreeze/process stuck analysis.
npx skillsauth add openharmonyinsight/openharmony-skills ohos-issue-graphics-sysfreeze-analysisInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
分析 OpenHarmony 图形相关模块的 Sysfreeze 日志,诊断进程冻结和线程阻塞问题的根本原因。
用户环境提供 llvm 工具(llvm-readelf/llvm-addr2line/llvm-objdump 等)。
确认日志完整性
确认符号表可用
llvm-addr2line -Cfpie path/to/so offsetld-musl-xxx.so 即 libc.so确认故障类型
Reason 字段,确认是 SERVICE_BLOCK 还是 THREAD_BLOCK记录关键信息
TIMESTAMP:故障发生时刻,用于在 hilog 日志中锁定时间范围TID:发生问题的线程 ID,问题分析从此线程开始查看整机资源状态
ReclaimAvailBuffer:整机剩余可用内存,判断是否低内存问题
ThermalLevel info:热等级 ≥ 5 时,系统可能受热限频影响性能分析当前任务
查看两次检测(SERVICE_WARNING/SERVICE_BLOCK,或 THREAD_BLOCK_3S/THREAD_BLOCK_6S)的 Current Running 任务:
验证时间合理性
假设最后一个 watchdog 任务在 T 时刻提交:
分析任务队列
检查各优先级任务队列(VIP、Immediate、High、Low、Idle),重点关注:
分析前先问自己三个问题:
根据两次抓取的调用栈分析线程阻塞关系,分析时必须解栈。
重要:分析从基本信息中的 Tid:<TID> 线程开始。
对比两次抓栈
分析线程状态(如果有)
state、utime、stime、priority、nice、clkutime/stime 和抓栈时间间隔,确定线程在用户态和内核态的执行时长分析堆栈阻塞模式
识别栈顶的阻塞函数,参考 常见阻塞模式
识别阻塞类型
查找阻塞源头
递归分析阻塞
如果是IPC 阻塞处理
BinderCatcher 信息,获取源为 当前进程号:当前线程号 的同步调用对端进程号:对端线程号 信息,查找 PeerBinder Stacktrace 中对应的进程抓栈获取流水日志
hilog 和 hilog_kmsg 文件分析流水日志
TIMESTAMP 问题发生时间附近的日志确定根本原因
绘制阻塞路径
分析业务信息
生成分析报告
重要:完成分析后生成报告并保存到文档。
不要跳过解栈步骤
不要忽略整机资源状态
不要孤立分析单个线程
不要在信息不足时强行下结论
不要忽略时间信息
信息不足时的处理
| 缺失信息 | 处理方式 | |----------|----------| | 符号表不存在 | 指出需要哪些 so 的符号表,无法精确定位代码行号 | | 只有一次抓栈 | 说明缺少对比信息,无法判断是否同一任务阻塞 | | hilog 缺失 | 仅依赖堆栈和任务队列分析,报告中标注日志缺失 | | BinderCatcher 缺失 | IPC 阻塞分析受限,尝试从堆栈推断对端 |
解栈失败时的处理
llvm-readelf 验证 so 是否包含符号表阻塞链无法闭合时的处理
整机问题优先级判断
当同时存在业务问题和整机问题时:
何时读取:
何时不要读取:
development
Run local code quality checks covering a subset of OpenHarmony gate CI (copyright, CodeArts C/C++) plus additional local checks (pylint/flake8, shellcheck/bashate, gn format). Use before committing to reduce gate failures. Triggers on: /oh-precommit-codecheck, "门禁检查", "门禁预检", "检查代码", "run codecheck", "check code quality", "lint my code", "代码检查", or after completing code implementation. WHEN to use: before git commit, before creating PR, after modifying C/C++/Python/Shell/GN files, when gate CI fails with codecheck defects, or when you want to preview what gate will flag.
development
OpenHarmony PR full lifecycle workflow. Five modes: - Commit: standardized commit with DCO sign-off and Issue linking - Create PR: commit + push to fork + create Issue + create PR on upstream - Fix Codecheck: fetch gate CI codecheck defects from a PR and auto-fix them - Review PR: fetch a PR's changes to local for code review - Fix Review: fetch unresolved review comments from a PR and auto-fix them Triggers on: /oh-pr-workflow, "提交代码", "创建PR", "提个PR", "commit", "修复告警", "修复门禁", "修复codecheck", "fix codecheck", "review pr", "review这个pr", "看下这个pr", "检视pr", "修复review", "修复检视意见", "fix review", or a GitCode PR URL with fix/review intent.
testing
分析 HM Desktop PRD 文档,提取需求信息、验证完整性、检查章节顺序(需求来源→需求背景→需求价值分析→竞品分析→需求描述)、检查 KEP 定义、检测需求冲突并生成结构化分析报告。适用于用户请求:(1) 分析或审查 PRD 文档, (2) 从需求中提取 KEP 列表, (3) 检查 PRD 完整性或一致性, (4) 将需求映射到模块架构, (5) 验证 PRD 格式合规性, (6) 验证竞品分析章节完整性。关键词:PRD分析, requirement extraction, KEP验证, completeness check, chapter order validation, 竞品分析检查, analyze PRD, 需求提取, 完整性检查, 章节顺序验证
development
基于 PRD 文档自动生成鸿蒙系统设计文档,包括架构设计文档和功能设计文档。生成前会分析 OpenHarmony 存量代码结构,确保与现有架构兼容。架构设计文档第2章必须为竞品方案分析,位于需求背景之后。适用于用户请求:(1) 生成架构设计文档, (2) 生成功能设计文档, (3) 从 PRD 生成设计文档, (4) 创建系统架构设计, (5) 编写功能规格说明, (6) 分析 OH 代码结构。关键词:architecture design, functional design, design doc, 竞品方案分析, OpenHarmony code analysis, 架构设计, 功能设计, 设计文档生成, OH代码分析, analyze codebase, competitor analysis