What does Windows error code 162 (ERROR_SIGNAL_PENDING) mean?

 
Could be also:
ConstantTypeOS
MEMORY_IMAGE_CORRUPTBugCheck CodeWindows
Previous Next
ERROR_BAD_PATHNAME ERROR_MAX_THRDS_REACHED

ERROR_SIGNAL_PENDING

What ERROR_SIGNAL_PENDING means

A signal is already pending for the target, so another equivalent signal cannot be queued. The result indicates coalescing or a single-pending-signal rule in a legacy signaling mechanism. The first signal has not yet been consumed, acknowledged, or cleared.

Common causes

  • The sender retries before the target handles the first signal
  • The target handler is blocked
  • Acknowledgement was lost or not propagated
  • Multiple producers signal the same target without coordination

How to investigate

  1. Correlate each send with target receipt and acknowledgement
  2. Measure pending duration and target handler latency
  3. Check whether multiple producers share the same signal channel
  4. Verify the pending flag is cleared after both success and cancellation

Developer guidance

Make signaling edge-triggered or maintain an explicit work queue. A signal should mean “work is available,” while the queue records how much work exists.

Administrator and support guidance

Repeatedly sending the same signal can amplify the problem. Inspect the target process health and pending work before forcing termination.

How this code differs from related results

This differs from ERROR_TOO_MANY_SEM_REQUESTS, which concerns semaphore state accounting rather than process signaling.

Evidence worth collecting

For ERROR_SIGNAL_PENDING, begin the trace at the operation where the sender retries before the target handles the first signal. 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 correlate each send with target receipt and acknowledgement. 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 the sender retries before the target handles the first signal, 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 the sender retries before the target handles the first signal. 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.