| Previous | Next |
| ERROR_WAIT_NO_CHILDREN | ERROR_DIRECT_ACCESS_HANDLE |
ERROR_CHILD_NOT_COMPLETE
What ERROR_CHILD_NOT_COMPLETE means
The requested child process has not completed, so its final termination state is not yet available. This status can be a normal nonblocking-wait result rather than a fatal failure. The caller queried completion before the child exited.
Common causes
- A zero-timeout or polling wait checks too early
- The child is blocked on I/O or synchronization
- The parent assumes launch implies immediate completion
- The child is hung during shutdown
How to investigate
- Measure child runtime and record the wait timeout
- Inspect the child process state and active threads
- Distinguish expected long-running work from a hang
- Check whether the parent should wait asynchronously instead of polling
Developer guidance
Treat the result as “not yet” when the API contract defines it that way. Use a bounded timeout, cancellation, and progress reporting rather than a tight polling loop.
Administrator and support guidance
Inspect the child before killing it; it may be performing legitimate work. Capture elapsed time and the resource on which it waits.
How this code differs from related results
Unlike ERROR_WAIT_NO_CHILDREN, a relevant child exists. The unresolved question is completion, not ownership.
Evidence worth collecting
For ERROR_CHILD_NOT_COMPLETE, begin the trace at the operation where a zero-timeout or polling wait checks too early. Preserve the exact API boundary, numeric result, process and thread identifiers, relevant object state, and the component version. The first verification point should be to measure child runtime and record the wait timeout. This evidence distinguishes the specific this result contract from a later secondary failure.
Recovery and verification
Recovery for it should address the observed condition rather than merely retrying the same call. After the change, reproduce the scenario in which a zero-timeout or polling wait checks too early, then confirm that the intended operation completes and that cleanup returns all associated resources. Also verify that the next repeated operation follows the same successful path without increasing the resource class implicated by this result.
When to escalate
Escalate this result with a minimal reproduction focused on the failing process-control boundary. Include the operating-system build, binary architecture, runtime or compatibility-layer version, the exact input values, and a timestamped trace showing a zero-timeout or polling wait checks too early. For the result escalation record, note whether changing concurrency, object lifetime, target process, module set, or endpoint location alters the result.
References
Looking for a different code? Search another status or error code.
