| Previous | Next |
| STATUS_ABANDONED_WAIT_63 | STATUS_ALREADY_COMPLETE |
STATUS_USER_APC
A user-mode APC interrupted the alertable wait
User APCs run only when the target thread enters an alertable wait, except for special user APC variants. Native wait routines can report this status when delivery takes precedence over the timeout or object signal. It is a control-flow result, not a failure of the waited operation.
After the APC returns, the original wait condition may still be unsatisfied. Code that requires the object, delay, or I/O condition must loop and recompute any remaining timeout. Treating APC delivery as successful completion can consume uninitialized output or release synchronization too early.
What to inspect
- Record whether the wait was alertable, which APC was queued, and whether the target condition became signaled independently.
- Use an absolute deadline or recalculate the remaining relative timeout across repeated APC interruptions.
- Avoid recursive alertable waits inside APC routines because they can recursively dispatch more APCs.
- Keep APC payload and target-thread lifetime valid until delivery or explicit cancellation is resolved.
References
- Microsoft Open Specifications: NTSTATUS values
- Microsoft: QueueUserAPC
- Microsoft: Asynchronous Procedure Calls
- Microsoft: WaitForMultipleObjectsEx
Looking for a different code? Search another status or error code.