| Previous | Next |
| ERROR_TOO_MANY_MUXWAITERS | ERROR_LABEL_TOO_LONG |
ERROR_INVALID_LIST_FORMAT
What ERROR_INVALID_LIST_FORMAT means
The semaphore list supplied to a multiplexed wait has an invalid layout or entry format. The code indicates malformed input to a legacy multi-semaphore API. The count may be acceptable, but one or more entries, offsets, flags, or structure fields do not satisfy the expected contract.
Common causes
- An entry contains an invalid handle or selector
- The caller uses the wrong structure packing
- The list terminator or header is missing
- Memory corruption changes an entry between validation and use
How to investigate
- Dump the complete list in a stable textual form before the call
- Verify structure size and packing against the target ABI
- Check each handle independently
- Use page protection or sanitizers to detect writes to the list after construction
Developer guidance
Zero-initialize compatibility structures, populate every documented field, and avoid casting unrelated arrays to the expected list type. Preserve ownership until the call completes.
Administrator and support guidance
The problem normally lies in the producing application or adapter, not in global semaphore availability. Collect the raw list and module versions for escalation.
How this code differs from related results
A valid list with an excessive number of entries produces ERROR_INVALID_EVENT_COUNT; malformed entries produce this code.
Evidence worth collecting
For ERROR_INVALID_LIST_FORMAT, begin the trace at the operation where an entry contains an invalid handle or selector. 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 dump the complete list in a stable textual form before the call. 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 an entry contains an invalid handle or selector, 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 pipe or compatibility boundary. Include the operating-system build, binary architecture, runtime or compatibility-layer version, the exact input values, and a timestamped trace showing an entry contains an invalid handle or selector. 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.
