| Previous | Next |
| ERROR_USER_APC | ERROR_ALERTED |
ERROR_KERNEL_APC
Kernel APC affected a low-level wait path
ERROR_KERNEL_APC is Windows system result 738 (0x000002E2). Application code should not interpret it as notification that a user APC routine executed.
This result is associated with kernel asynchronous procedure call processing. Its handling belongs to the native or driver layer that exposed the status, including IRQL, wait mode, and thread-state rules.
Where this value belongs
- Driver diagnostics translate a kernel APC wait interruption to Win32 code 738.
- A native subsystem resumes a wait after normal or special kernel APC processing.
- Instrumentation observes APC delivery while analyzing thread scheduling.
Kernel APCs serve kernel-mode operations and thread mechanics. It does not select a user handle, does not identify a timeout, and does not authorize user-mode code to invoke a completion callback.
Common interpretation mistakes
- It is mishandled when code 738 is treated as ERROR_USER_APC.
- It is mishandled when user-mode retry policy is applied without retaining the native status.
- It is mishandled when a driver ignores IRQL and wait-mode constraints around APC delivery.
- It is mishandled when the first driver stack responsible for exposing the marker is lost.
Diagnostic sequence
- Capture the native status and stack before Win32 translation.
- Identify whether the wait was kernel mode or user mode and whether it was alertable.
- Record IRQL and critical-region state where available.
- Inspect the driver or subsystem that initiated the wait.
- Check for repeated APC delivery that prevents forward progress.
- Use a kernel trace or dump to verify the thread resumes at a valid state.
Evidence worth keeping
- preserve native wait status and conversion path.
- preserve kernel stack and owning driver.
- preserve IRQL, wait mode, and alertable state.
- preserve thread APC disable or critical-region state.
- preserve forward-progress timing across repeated deliveries.
It without a native stack is usually too weak for root-cause analysis because public application contracts rarely expose this marker directly.
Correct handling and recovery
Let the responsible kernel component complete APC processing and re-enter its wait according to native rules. Escalate repeated or invalid state transitions to driver debugging.
User-mode backoff is not a repair. A recurring it pattern requires examination of the driver wait loop, APC disable state, and forward progress.
Difference from nearby values
ERROR_USER_APC is tied to user callback delivery in an alertable wait. It identifies kernel processing and should remain in the kernel diagnostic domain.
Practical scenario
A driver wait repeatedly resumes for kernel APCs but never reaches its device event. ETW and a kernel dump show a critical-region imbalance preventing normal progress; balancing the region fixes the loop.
Implementation guidance
Driver developers should retain NTSTATUS, IRQL, and stack context instead of exporting only code 738. Operators should update or isolate the responsible driver after evidence identifies it.
Record kernel_apc_driver, kernel_apc_wait_mode, kernel_apc_irql, kernel_apc_stack_hash, and kernel_apc_progress_interval.
References
Looking for a different code? Search another status or error code.
