.claude/skills/check-trace/SKILL.md
Analyze the JIT dispatch trace to diagnose boot stalls or crashes
npx skillsauth add sebastianbiallas/pearpc check-traceInstall 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.
Analyze jitc_trace.log for the pattern or address $ARGUMENTS.
If no argument, check the tail of the trace to diagnose what the CPU is doing.
Check trace tail (last 30 lines):
tail -30 jitc_trace.log
Identify the pattern:
Count exception dispatches:
grep -c 'pa=00000300' jitc_trace.log # DSI count
grep -c 'pa=00000900' jitc_trace.log # DEC count
grep -c 'pa=00000c00' jitc_trace.log # SC count
If argument is a hex address, search for dispatches to/from that address:
grep 'pa=ADDRESS\|ea=ADDRESS' jitc_trace.log | head -20
Check DEC timer status:
grep '\[DEC\]' BOOT_LOG | tail -5
Check WATCH events:
grep '\[WATCH\]' BOOT_LOG | tail -10
DISPATCH ea=EFFECTIVE_ADDR pa=PHYSICAL_ADDR msr=MSR_VALUE
SEQ_NUM pc=PA msr=MSR cr=CR lr=LR ctr=CTR r0=R0 r1=SP r2=R2 r3=R3 r4=R4 r5=R5 dec=DEC
ea = effective (virtual) address the kernel seespa = physical address after translationdec = decrementer register value (should change over time)r1 = stack pointer (0xC01Cxxxx for idle thread, 0xC04Dxxxx for init thread)tools
--- name: dump-printk description: Extract and display the Linux kernel printk ring buffer from a PearPC memory dump allowed-tools: Bash, Read argument-hint: [dump-file] [search-term] --- # Extract Kernel Printk Buffer Use `scripts/debug/memdump.py printk` to extract the printk ring buffer. ``` python3 scripts/debug/memdump.py printk $ARGUMENTS ``` If no arguments, use `memdump_jit.bin`. Report the last printk message, any Oops, and what boot stage was reached.
tools
--- name: compare-dumps description: Compare memory regions between generic and JIT memory dumps to find divergences allowed-tools: Bash, Read argument-hint: [subcommand] [args...] --- # Compare Memory Dumps Use `scripts/debug/memdump.py` subcommands: ``` # Read words at a PA (accepts kernel VA, auto-converts): python3 scripts/debug/memdump.py read memdump_jit.bin PA [count] # Diff two dumps at a PA: python3 scripts/debug/memdump.py diff memdump_generic.bin memdump_jit.bin PA [count] # Sear
testing
Check that aarch64 JIT interpreter functions match generic CPU behavior
tools
Analyze a kernel Oops from the printk buffer in a PearPC memory dump