Error catalogue
Reference · generated · every public error type in the workspace, variant by variant, with the meaning its documentation states
The table is read from the source, so a variant that exists is listed and a variant that is gone disappears. The troubleshooting guide gives remedies for the errors a user meets from the command line.
XdpError in plugins/hft-xdp
Defined in plugins/hft-xdp/src/lib.rs.
| Variant | Meaning |
|---|---|
PlatformUnsupported | The host operating system has no AF_XDP: everything but Linux. |
Io | A step the kernel refused, named: EPERM without CAP_NET_ADMIN and CAP_BPF, EBUSY when another XDP program holds the interface, EOPNOTSUPP for a mode the driver lacks. |
Verifier | The kernel’s verifier refused the XDP program; its log says why. |
NoNeighbour | The kernel’s neighbour table has no MAC for the peer on the interface: reach it once over the kernel’s stack (a ping), or pass its MAC. |
InvalidConfig | A configuration the transport cannot use, said why. |
TxFull | No UMEM frame or TX ring entry came free within the send timeout. |
EnvelopeTooLarge | The envelope is longer than a frame carries. |
BufferTooSmall | The caller’s buffer is shorter than the envelope, which is consumed. |
Decode | A datagram to the receiver’s port that is not a Pulse frame. |
TlsError in rings/enterprise_ring/enterprise-stages
Defined in rings/enterprise_ring/enterprise-stages/src/tls/mod.rs.
| Variant | Meaning |
|---|---|
IntegrationDeferred | The mode asked for is not integrated in this release: DTLS ([Mode::Dtls]) and the QUIC tunnel ([Mode::QuicTunnel]). [Mode::TlsTcpStream] is. |
ModeUnavailable | The host operating system or this build doesn’t support the requested mode. |
Io | A socket operation failed: resolving or connecting to the target, binding, accepting, reading or writing. A handshake that takes longer than [TlsConfig::handshake_timeout] ends here, with [io::ErrorKind::TimedOut]. |
Tls | TLS refused the connection: the server’s certificate is not trusted or does not name the server, the peer broke off the handshake (an alert), or the receiver’s certificate and key do not go together. |
Pem | A PEM field of the [TlsConfig] holds nothing usable; field names it. |
InvalidServerName | The server name to verify, from [TlsConfig::sni] or the host of the target, is neither a DNS name nor an IP address. |
FrameLength | A frame’s length prefix is outside the lengths a frame can have, so the stream cannot be read on; the connection is not usable after it. |
LengthMismatch | A frame decoded, but it is shorter than its length prefix said. |
Wire | A frame could not be encoded (its envelope is over [MAX_ENVELOPE]) or decoded (see [WireError]). |
MultiLaneError in rings/hft_ring/hft-stages
Defined in rings/hft_ring/hft-stages/src/multilane/mod.rs.
| Variant | Meaning |
|---|---|
InvalidLaneCount | lane_count was zero. |
LaneAlloc | A lane’s [PulseRing] failed to allocate. |
CursorSliceMismatch | last_cursors slice length did not match lane_count in a call to [MultiLaneRing::poll_round_robin]. |
NumaBind | Binding a lane to its NUMA node failed (Linux only: elsewhere [MultiLaneRing::create_with_numa] binds nothing). |
SpmcError in rings/hft_ring/hft-stages
Defined in rings/hft_ring/hft-stages/src/spmc/mod.rs.
| Variant | Meaning |
|---|---|
Io | Underlying I/O failure. |
TooManyReaders | Every reader cursor of the ring is taken. |
SlotSkipped | The slot for cursor held no publish although the writer had passed it; the cursor moved past it rather than wedge there. |
Lagged | The writer overwrote skipped publishes before this reader read them: the reader was more than a capacity behind, or the writer took the slot’s next lap while the reader copied it. The cursor has moved past them to the oldest publish the ring holds, where the next [SpmcReader::recv] reads, and they are added to [SpmcReader::lost]. Returned once per jump. |
AutoscaleError in rings/robotics_ring/robotics-stages
Defined in rings/robotics_ring/robotics-stages/src/autoscale/mod.rs.
| Variant | Meaning |
|---|---|
Ring | A ring could not be created, opened or unlinked. |
InvalidResize | A resize would leave the configured [min, max] capacity range. |
LargePayloadError in rings/robotics_ring/robotics-stages
Defined in rings/robotics_ring/robotics-stages/src/large_payload/mod.rs.
| Variant | Meaning |
|---|---|
Io | shm_open(3), fstat(2), ftruncate(2), a header read or mmap(2) failed: AlreadyExists from a create whose name holds an object, NotFound from an open of a name that holds none. |
Exhausted | The pool has no free segment. |
InvalidSegment | A segment id not held in the pool: its index is out of range, or the segment was never allocated under this generation, or was freed since. |
PayloadTooLarge | A payload, or a reference’s length, exceeds the pool’s segment size. |
CrcMismatch | The payload’s CRC-32C is not the one its reference carries: the bytes or the reference changed after the write. |
InvalidConfig | A configuration with no segments, empty segments, segments larger than a [SegmentRef]’s 32-bit length records, or more bytes than fit a usize and a file offset. Nothing was created. |
NoSpace | Linux could not reserve the new pool’s pages: posix_fallocate(3) failed, with ENOSPC on a full /dev/shm. The object was unlinked and nothing was mapped. Never returned off Linux. |
InvalidName | The name contains a NUL byte. |
RegionTooSmall | The object is smaller than a header, or than the pool its header describes. |
LayoutMismatch | The header does not describe a pool this build reads. |
NetUringError in rings/robotics_ring/robotics-stages
Defined in rings/robotics_ring/robotics-stages/src/net_uring/mod.rs.
| Variant | Meaning |
|---|---|
Io | A socket call or an io_uring operation failed; a receive that waited its whole timeout is TimedOut. |
Setup | The io_uring instance could not be created; the string says why. |
NotReady | A send or receive before UringSpsc::bind_udp ("bound"), or a send before UringSpsc::connect_udp ("connected"). |
PayloadTooLarge | A payload longer than [UringConfig::buffer_bytes]. Nothing was sent. |
BatchTooLarge | A batch of more sends than [UringConfig::buffer_count], or than the submission queue holds. Nothing was sent. |
MutexPoisoned | A thread panicked while holding [FlowPool]’s flow table, which may be inconsistent: rebuild the pool rather than retry. |
TelemetryError in tools/hft-telemetry
Defined in tools/hft-telemetry/src/lib.rs.
| Variant | Meaning |
|---|---|
PsiUnavailable | /proc/pressure/cpu not available on this system. Either the kernel is older than 4.20, or PSI was disabled at boot. |
Io | Underlying I/O failure (typically while reading /proc/pressure/cpu). |