| Previous | Next |
| STATUS_INVALID_DISPOSITION | STATUS_BAD_STACK |
STATUS_UNWIND
The dispatcher is unwinding frames rather than reporting a root fault
STATUS_UNWIND is used as an exception code when the runtime starts an unwind without another supplied exception record. During unwinding, termination handlers run and nonvolatile register state is reconstructed while frames are removed. Seeing this code in a trace therefore does not prove that an application fault originated at that point.
Inspect the ExceptionFlags and the operation that called RtlUnwind or its language-runtime equivalent. The actionable failure may be an earlier exception, a long jump, cancellation path, or explicit nonlocal transfer. If unwinding later fails with STATUS_BAD_STACK, STATUS_INVALID_DISPOSITION, or STATUS_BAD_FUNCTION_TABLE, preserve this original unwind record together with the metadata for the frame where validation broke.
What to inspect
- Check EXCEPTION_UNWINDING, EXIT_UNWIND, TARGET_UNWIND, and COLLIDED_UNWIND flags.
- Find the target frame and target instruction supplied to the unwind operation.
- Distinguish an explicit unwind from propagation of an earlier fault.
- Preserve pdata/xdata and runtime function tables for the failing module.
References
- Microsoft Learn: x64 exception handling
- Microsoft Learn: EXCEPTION_RECORD
- ReactOS source: AMD64 unwind implementation
- Microsoft Learn: Exception Dispatching
Looking for a different code? Search another status or error code.