| Previous | Next |
| STATUS_HARDWARE_MEMORY_ERROR | STATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED |
STATUS_THREADPOOL_HANDLE_EXCEPTION
The thread-pool wait operation failed instead of signaling or timing out
A thread-pool wait normally completes because the handle becomes signaled or the timeout expires. This diagnostic status records a third path: the underlying wait returned an exception or failure. Invalid handle lifetime, closing a handle while it remains registered, or corruption of the wait object can be responsible.
The registered handle must remain valid until the wait is disarmed and outstanding callbacks have completed. Closing it first creates a race because the numeric value can be reused for an unrelated object while the pool still owns a wait registration.
What to inspect
- Capture the nested status value, wait object address, handle value, callback object, and registration generation.
- Call
SetThreadpoolWaitwith a null handle to disarm the wait before closing the underlying object. - Wait for outstanding callbacks when teardown requires deterministic handle lifetime.
- Use separate synchronization to prevent rearming a wait concurrently with destruction.
References
- Microsoft Open Specifications: NTSTATUS values
- Microsoft: Thread Pool API
- Microsoft: threadpoolapiset.h functions
- Microsoft: pooled threads and callback environments
Looking for a different code? Search another status or error code.
