windbg-user-exception-triage
Skill469 starsChanged 36 days agoMITView on GitHub
Use when a native C/C++ app, service, or user-mode driver host (including UMDF) crashes with a structured exception in a dump or WinDbg session, including native faults inside managed processes. Not for managed .NET exceptions, WinUI/XAML app errors, or kernel bugchecks.
In this repository11 other files it gives its agents.
- windbg-diagnostic-methodSkill
- windbg-kernel-bugcheck-triageSkill
- windbg-kernel-irp-lifecycle-triageSkill
- windbg-kernel-lock-deadlock-triageSkill
- windbg-kernel-verifier-triageSkill
- windbg-user-heap-corruption-investigationSkill
- windbg-user-mutex-held-across-co-awaitSkill
- windbg-user-ttd-reverse-debugging-triageSkill
- windbg-user-virtual-memory-exhaustionSkill
- windbg-user-wait-chain-analysisSkill
- sample-skillSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 4 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 8
Load
windbg-diagnostic-methodfirst: if it is not already loaded in this conversation, and apply it throughout for evidence ranking, … - Distinctive: line 15
Start here for access violations, heap corruption, stack overflow, fail-fast, breakpoints, and other structured exceptions in a native …
- Distinctive: line 38
Use matching binaries and PDBs for your modules and public Windows symbols.
- Distinctive: line 53
Do not classify every address in a heap range as a lifetime bug.
- Distinctive: line 67
Use the memory-exhaustion skill when commit evidence supports that branch.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
User-Mode Exception Triage
Load windbg-diagnostic-method first if it is not already loaded in this
conversation, and apply it throughout for evidence ranking, hypothesis testing,
confidence calibration, independent review, and report validation. This skill
adds the bug-family-specific commands and evidence requirements.
When to use
Start here for access violations, heap corruption, stack overflow, fail-fast, breakpoints, and other structured exceptions in a native application, service, or user-mode driver host process dump. This includes UMDF driver failures that occur in their user-mode host. Confirm the dump type from WinDbg; the filename extension alone does not distinguish user-mode from kernel-mode dumps.
Workflow
1. Establish the exception context
.exr -1
.ecxr
k
!analyze -vRecord the exception code, address, parameters, access type, registers, module,
and stack. .ecxr selects the saved exception context when available. If no
exception context was captured, report that limitation rather than treating the
currently selected thread as the faulting thread.
Use matching binaries and PDBs for your modules and public Windows symbols. Investigate mismatches or truncated stacks before naming a failing source line.
2. Classify and choose an available investigation
| Evidence | Next step |
0xC0000005 with allocation/free or overrun evidence | windbg-user-heap-corruption-investigation |
0xC0000374 heap corruption | windbg-user-heap-corruption-investigation |
0xC0000017, 0x8007000E, or an allocation-failure path | windbg-user-virtual-memory-exhaustion |
| Lock/unlock failure following coroutine suspension | windbg-user-mutex-held-across-co-await |
| A TTD recording is available and earlier mutation is in question | windbg-user-ttd-reverse-debugging-triage |
| No crash exception and evidence of blocked work | windbg-user-wait-chain-analysis |
| A kernel dump reports a bugcheck | windbg-kernel-bugcheck-triage |
Do not classify every address in a heap range as a lifetime bug. Check access type, faulting instruction, object layout, and valid allocation boundaries.
3. Investigate families without a dedicated skill
- Access violation without a match: identify the read/write/execute target, object/register used, and whether bounds, ownership, or synchronization was violated. Distinguish a null pointer from stale or corrupted state.
0xC0000409/ fail-fast: inspect exception parameters and the documented fast-fail subcode, then the failing condition and call path. The historical status name alone does not prove a buffer overrun or rule one out. Not every fast-fail carries an HRESULT.0xC00000FD/ stack overflow: inspect stack bounds and frame sizes; test recursion, reentrancy, large frames, and inability to commit stack growth. Use the memory-exhaustion skill when commit evidence supports that branch.0xE06D7363/ MSVC C++ exception: establish whether it was handled, identify the throw/catch path with available symbols, and inspect the exception information supported by the runtime/version. A first-chance throw is not automatically a defect. This package does not decode thrown-object layouts or fully diagnosenoexcept/termination behavior.- Stowed/WinRT exceptions: preserved error information can precede the final failure. Correlate its originating stack and nested errors with the application; this package does not include a XAML extension workflow.
- Illegal instruction or breakpoint: distinguish CPU/architecture or code-corruption hypotheses from intentional assertions/debug breaks.
Validation
- Exception context and code are established, or their absence is stated.
- Faulting instruction and relevant object/register agree with the hypothesis.
- Alternatives are tested against evidence, not just stack names.
- Missing memory, symbols, and specialized exception coverage are explicit.
- The proposed fix addresses a demonstrated invariant and has a repro/test plan.
References
Feedback
For this skill, follow the plugin's FEEDBACK.md and report a reviewed, sanitized
issue to WinDbg-Feedback.
Include windbg-user-exception-triage and the package version from plugin.json; do not
upload dumps or private source automatically.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

