Loading...
Loading...
Use when the user has a crash log (.ips, MetricKit JSON, legacy .crash text, .xccrashpoint bundle, or pasted text) that needs analysis.
npx skill4agent add charleswiltgen/axiom axiom-analyze-crashNote: This audit may use Bash commands to run builds, tests, or CLI tools.
xcsymxcsym crash.ipscommand -v xcsymxcsym crash <file> --format=standardpattern_tagimages.missingimages.mismatchedxcsym verify <file>xcsym find-dsym <uuid>| Exit | Meaning | Next step |
|---|---|---|
| 0 | All images matched | Read |
| 2 | Main dSYM missing (or input not found/unreadable) | Locate the archive or set |
| 3 | Main UUID mismatch | Different build than the archive on disk — |
| 4 | Main arch mismatch | Pass |
| 6 | Command timeout | Retry with |
| 7 | Main matched, others missing/mismatched | Expected for stripped third-party frameworks |
flagxcsym crash --format=summary <file>crashanonymize-crash{"tool":"xcsym","error":"hang_report","message":"...","input":"...","routing":"..."}bug_type=298"error":"hang_report".ipsexception.typeexception.subtypetermination.codepattern_tag| pattern_tag | What it means | First thing to check |
|---|---|---|
| Force-unwrapped a | Identify the |
| | Read Application Specific Info for the assertion message; verify the invariant the assertion guards |
| Wrong actor/executor or queue assertion ( | Read |
| Dereferenced invalid/deallocated memory | Identify the object whose lifetime is too short; check weak vs strong captures, delegate weak references |
| Hit thread stack guard page | Look for unbounded recursion in the crashed thread's frames |
| Access to freed object or heap corruption | Enable NSZombies/Guard Malloc; look for prematurely released objects |
| CPU hit an invalid opcode | Usually Swift runtime trap — check for implicit |
| Violated a guarded fd/resource | Common with SQLite across |
| Uncaught NSException | Read Application Specific Info for the exception name and reason |
| | Check Application Specific Info for the payload reason; often a runtime contract violation |
| Main thread blocked too long (0x8BADF00D) | Profile main thread; look for synchronous I/O, long loops, or deadlocks |
| User swiped the app closed (0xDEADFA11) | Not a bug — informational |
| UIApplication background task exceeded its window (0xBAADCA11) | Shorten background work or use |
| File accessed while device locked (0xdead10cc) | Use |
| Binary rejected after launch (0xc51bad0X) | Check signing state, entitlement consistency, TestFlight/archive profile alignment |
| System killed for memory pressure | Check memory high-water marks via Instruments; look for leaks, cache growth, image/media buffering |
| Exceeded CPU/wakeups budget | Profile for spin loops, excessive timer wakeups, background CPU work |
| UIKit/AppKit API called off main thread | Search for background-thread UI updates; wrap with |
| Runaway SwiftUI update graph | Look for |
| No rule matched | Read the raw output and file a gap report — consider adding a new rule |
## Crash Analysis Report
### Summary
- **App**: [from crash.app.name] [crash.app.version]
- **OS**: [crash.os.platform] [crash.os.version] [is_simulator?]
- **Arch**: [crash.arch]
- **Pattern**: [crash.pattern_tag] ([crash.pattern_confidence])
### Exception
- **Type**: [crash.exception.type] ([crash.exception.signal])
- **Codes**: [crash.exception.codes]
- **Subtype**: [crash.exception.subtype]
- **Termination**: [crash.termination.namespace] [crash.termination.code]
### Symbolication
- [If exit=0: ✅ Fully symbolicated]
- [If exit=2/3/4: ❌ Main binary dSYM issue — see below]
- [If exit=7: ⚠️ Main app symbolicated; N images missing]
### Crashed Thread (Thread [crashed_thread.index])
### Analysis
[Interpretation: what the pattern_tag means for THIS crash, given the frames]
### Root Cause Hypothesis
[Most likely cause based on pattern_tag + frame evidence]
### Actionable Steps
1. [Specific step from the pattern → fix guidance table]
2. [Next step tailored to the crashed-thread frames]
3. [Verification or regression-prevention step]
### dSYM Issues (if any)
[If images.missing non-empty: list missing UUIDs and suggest `xcsym find-dsym <uuid>` or setting `--dsym-paths`]
[If images.mismatched non-empty: list mismatches with expected vs found UUID; suggest which archive to pull].ipsxcsym crash /tmp/crash.ips --format=standardpattern_tagswift_forced_unwrapcrashed_threadContentView.body.getterContentView.body.getter!guard letnilxcsym verify <file>xcsym find-dsym <uuid>…"error":"hang_report"images.missing[0].uuidxcsym find-dsym <uuid>find-dsym<uuid>XCSYM_DSYM_PATHS=/path/to/downloads xcsym crash <file>.xcarchiveXCSYM_DSYM_PATHSdSYMs/xcsym crash --no-symbolicatepattern_tagimage_offsetimages.missingimages.mismatchedxcsym crash <file> --no-spotlight --format=standardxcsym crash <file> --no-symbolicateXCSYM_FRAMEWORK_SCAN_TIMEOUT--dsym-paths"error":"hang_report"triage-analyzerunclassifiedtriage-analyzeraxiom-analyze-triageaxiom-tools (skills/xcsym-ref.md)axiom-shipping (skills/testflight-triage.md)axiom-shipping (skills/production-triage.md)triage-analyzeraxiom-performance (skills/metrickit-ref.md)axiom-performance (skills/hang-diagnostics.md)bug_type=298axiom-performance (skills/memory-debugging.md)jetsam_oomaxiom-concurrencyswift_concurrency_violationmain_thread_checker_violationaxiom-build (skills/xcode-debugging.md)