Crash Story · Early release · Free

Your crash, told as a story.

Packet Story explains your captures. Crash Story explains your crashes. Paste in the console output of a Zephyr or NCS fatal error, the ***** FAULT ***** banner, the register dump, all of it, and add the zephyr.elf from the build that was running. Crash Story turns that wall of hex into a readable report: what faulted, which instruction, which function and line, what every fault-register bit means in plain English, and what most likely caused it.

Runs entirely on your machine. Nothing is sent anywhere.

The top of a real Crash Story report on a coredump: the verdict, the story, and the null-pointer reading with its evidence

A real Crash Story report: a coredump opened up, verdict first, the likely cause shown with its evidence.

What you get

Decode first, then the likely cause

  • A verdict up top: fault class, faulting instruction, fault address, faulting thread.
  • Every set bit, explained. Every set bit of CFSR, HFSR, MMFAR and BFAR named and explained, with the raw values kept beside the plain English.
  • A symbolized backtrace when the ELF matches, including candidate frames from a coredump, each labelled by how it was found.
  • The thread list from a coredump: names, states, stack pointers.
  • Likely-cause readings (null pointer, stack overflow, divide by zero, bad function pointer, assertion) that always show their evidence and are labelled as heuristics, not verdicts.
  • A "what this log cannot tell us" section in every report.
The top of a real Crash Story report on a stack-overflow crash, with the kernel-fabricated frame labelled

A stack-overflow report: the frame the kernel fabricated is labelled as such, and the ELF verdict says plainly what cannot be confirmed.

Honesty

The honesty rule

If the ELF you provide is not the build that crashed, Crash Story says so and withholds the symbols instead of inventing plausible ones. If the log came without an ELF, you still get the full register decode, with the symbol sections marked unavailable. Deterministic throughout: the same input always gives the same report, and nothing is sent anywhere. The tool runs entirely on your machine.

Requirements

Requirements and honest limits

  • Needs: Python 3.8 or newer. Windows, macOS and Linux.
  • Optional: pyelftools, for file and line resolution (without it you still get function names).
  • Input: a Zephyr or NCS fatal-error log, with or without #CD: coredump blocks from the Zephyr coredump logging backend, plus the matching zephyr.elf if you have it.
  • Early release scope: ARM Cortex-M Zephyr and NCS crashes. Register decode covers the Cortex-M fault registers; other architectures parse at the header level only.
  • The backtrace is the faulting PC, the return address, and labelled stack-scan candidates from a coredump, not a full unwind.
  • A plain log checked against a very similar sibling build can pass the match check; the report says "consistent with this crash", never "proven".
Download

Get Crash Story free

Enter your email to join the Bit to Board newsletter and unlock the download. The tool itself needs no account and phones nothing home.

Please enter a valid email address.

The email gate is a newsletter signup, nothing more: no account is created for the tool, and the zip is a plain file on this site.