windbg-diagnostic-meth…
Use with every WinDbg plugin investigation to apply evidence-first reasoning, confidence…
Use when a native app, service, or user-mode driver host allocation fails; distinguish VA exhaustion, fragmentation, and commit pressure. Not for managed .NET heap growth, proving a leak from one snapshot, or corruption.
$ npx -y skills add microsoft/win-dev-skills --skill windbg-user-virtual-memory-exhaustion --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/windbg-user-virtual-memory-exhaustionContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when a native app, service, or user-mode driver host allocation fails; distinguish VA exhaustion, fragmentation, and commit pressure. Not for managed .NET heap growth, proving a leak from one snapshot, or corruption.
name: windbg-user-virtual-memory-exhaustion description: 'Use when a native app, service, or user-mode driver host allocation fails; distinguish VA exhaustion, fragmentation, and commit pressure. Not for managed .NET heap growth, proving a leak from one snapshot, or corruption.'
**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.
Investigate `E_OUTOFMEMORY` (`0x8007000E`), `STATUS_NO_MEMORY` (`0xC0000017`), `bad_alloc`, or failed heap/virtual allocations in an application, service, or user-mode driver host (including UMDF). Record the actual API, requested size/alignment, architecture, flags, and error. Free physical RAM does not rule out insufficient virtual address space, commit pressure, or applicable limits.
!address -summary !address !heap -s
Compare available regions with the attempted allocation's contiguous range and alignment requirements. Distinguish reserved, committed, free, image, mapped, stack, and heap ranges. A large reservation consumes VA without committing its entire range. Heap internals may require more than the user's requested bytes.
Report unavailable pages/map data rather than inferring completeness from a limited dump.
| Mechanism | Evidence needed | |---|---| | VA exhaustion | Process address range/architecture and little usable free VA | | Fragmentation | Free space exists, but no suitable contiguous/aligned region | | System commit pressure | Commit usage/limit near the failure, not just free RAM | | Process/job memory limit | Actual configured limit and relevant usage/accounting | | Allocation policy/API failure | API-specific constraints, flags, or allocator policy |
Use contemporaneous system memory counters or an appropriate live/kernel session for system commit data. A process PEB is not a documented `MaximumCommit` source. A process's committed bytes alone do not establish a system-wide or job limit.
For 32-bit targets inspect `/LARGEADDRESSAWARE` and the host architecture; 2 GB versus up to 4 GB depends on those settings. Verify current documented limits for the target Windows version and architecture instead of applying one 64-bit limit to every system.
!address -f:Heap !address -f:Stack !heap -stat -h <heap-address>
Use `!address -?` and `!heap -?` for allocator/version-specific support. Classify dominant heaps, stacks, mappings, images, and reserved arenas. Large or numerous allocations are not automatically leaks: map them to cache policy, owners, workload, and expected lifetimes.
Collect authorized time-series counters, repeated comparable snapshots, or allocation/free tracing across the workload. Compare warm-up with steady-state behavior and verify whether memory is reclaimed when work finishes.
One snapshot plus process uptime cannot prove a leak rate. For a suitable user-mode recording use `windbg-user-ttd-reverse-debugging-triage`; for damaged allocations use `windbg-user-heap-corruption-investigation` instead.
Define the lifetime of any references returned before eviction.
contract; distinguish decommit from release.
pressure source, and do not convert a failed allocation into a silent success.
Name the failing allocation and pressure mechanism, identify the consumer with evidence, and exercise the remedy through warm-up, sustained load, and cleanup. Verify memory remains bounded or the intended allocation succeeds under the required constraints. Document configured system/job limits separately.
Follow `FEEDBACK.md` and submit reviewed, sanitized feedback to [WinDbg-Feedback](https://github.com/microsoft/WinDbg-Feedback/issues). Include `windbg-user-virtual-memory-exhaustion` and the package version from `plugin.json`; no automatic dump or memory-content upload.
Agent plugins for Windows development and debugging—from apps and services to kernel-mode drivers—with GitHub Copilot, Claude Code, OpenAI Codex, and more. Add this repo as a marketplace once, then install the plugins you need.
Repo: microsoft/win-dev-skills
Use with every WinDbg plugin investigation to apply evidence-first reasoning, confidence…
Use when a kernel dump reports a Windows bugcheck; decode parameters and recover exception or…
Use when kernel evidence shows stalled I/O, a power IRP, or completion/cancellation misuse;…
Use when kernel threads block on driver synchronization or Verifier reports a lock-order…
Use when a kernel dump contains Driver Verifier violations; inspect flags, bugcheck subcodes,…
Use when a native C/C++ app, service, or user-mode driver host (including UMDF) crashes with…