| Previous | Next |
| STATUS_PORT_ALREADY_HAS_COMPLETION_LIST | STATUS_INVALID_THREAD |
STATUS_CALLBACK_RETURNED_THREAD_PRIORITY
The callback leaked a thread-priority change
The Windows thread pool reuses workers across unrelated workloads. A callback that calls SetThreadPriority changes scheduling state on the physical worker, not only on the logical work item. Returning with a different base priority biases later callbacks and can cause starvation, latency spikes, or unexpected CPU consumption.
Callback priority configured through the thread-pool environment is different from mutating the worker thread directly. Prefer the callback-environment mechanism when the intent is to prioritize work relative to other pool items, and restore any unavoidable thread-level change before returning.
What to inspect
- Log entry and exit base priority, callback environment priority, worker thread ID, and the code that changed it.
- Restore the exact previous priority value in structured cleanup.
- Do not assume the next callback belongs to the same subsystem or accepts the modified scheduling class.
- Check helper libraries that silently enter background or multimedia scheduling modes.
References
- Microsoft Open Specifications: NTSTATUS values
- Microsoft: SetThreadPriority
- Microsoft: SetThreadpoolCallbackPriority
- Microsoft: pooled threads and callback environments
Looking for a different code? Search another status or error code.