| Previous | Next |
| RPC_X_PIPE_DISCIPLINE_ERROR | ERROR_NO_SITENAME |
RPC_X_PIPE_EMPTY
“Empty” means the logical stream is exhausted
RPC_X_PIPE_EMPTY does not mean that a socket receive buffer happened to contain no bytes at one instant. It is the Win32 mapping for an RPC pipe-empty fault: the runtime expected another portion of a streamed parameter, but the pipe had no further logical elements to provide.
For a pipe callback, counts are expressed in elements of the pipe type rather than necessarily in bytes. A producer that calculates counts from the wrong unit, ends the stream too soon, or reuses completed state can leave the generated stub asking for data that the application no longer considers available.
Common sources of an empty pipe fault
- An input producer reports completion before all elements required by the operation have been supplied.
- Chunk accounting mixes byte lengths with element counts, especially when the pipe element is a structure rather than a byte.
- Two consumers share one pipe state and one drains the stream before the other callback reaches it.
- Code attempts to resume a completed pipe instead of beginning a new RPC call with a new descriptor and state.
What to measure
Log the expected element count when the application knows it, the requested callback capacity, the number of elements returned in every chunk, and the exact event that marks end of stream. Test empty input, one-element input, a chunk boundary at every possible element count, and a stream that spans several callbacks. Those tests expose incorrect terminal handling much more reliably than increasing network timeouts.
This status differs from RPC_X_PIPE_CLOSED: a closed pipe cannot be used any more, while a pipe-empty fault specifically reports missing next data. It also differs from RPC_X_PIPE_DISCIPLINE_ERROR, which says that the call itself completed before the required pipe processing was finished.
References
- Microsoft: mapping RPC pipe-empty faults to Win32 errors
- The Open Group: DCE RPC pipe pull, push, and allocation callbacks
- The Open Group: NDR transfer syntax
Looking for a different code? Search another status or error code.