| Previous | Next |
| STATUS_BAD_STACK | STATUS_NOT_LOCKED |
STATUS_INVALID_UNWIND_TARGET
The unwind target could not be reached safely
An unwind target must identify a valid frame in the active stack and must be reachable in the direction the dispatcher removes frames. This status indicates that the supplied target or reconstructed frame did not meet that contract. It can arise from an incorrect native RtlUnwind call, a stale frame pointer, stack corruption, or a runtime mixing contexts from different threads or stacks.
Do not substitute the current frame simply to avoid the status. Record the target frame, current stack bounds, and every frame visited before rejection. Fiber, coroutine, or callback runtimes must keep each stack’s context separate; an address valid in another reserved stack is still an invalid target for the current unwind.
What to inspect
- Compare the target frame with current stack base, limit, and unwind direction.
- Confirm that the target belongs to the same thread and active stack.
- Inspect native unwind callers and stored continuation contexts.
- Look for stack switching or callback boundaries immediately before the failure.
References
- Microsoft Learn: Exception Dispatching
- Microsoft Learn: x64 exception handling
- ReactOS source: AMD64 unwind implementation
- Microsoft Learn: EXCEPTION_RECORD
Looking for a different code? Search another status or error code.