Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.

VariantMeaning
PlatformUnsupportedThe host operating system has no AF_XDP: everything but Linux.
IoA 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.
VerifierThe kernel’s verifier refused the XDP program; its log says why.
NoNeighbourThe 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.
InvalidConfigA configuration the transport cannot use, said why.
TxFullNo UMEM frame or TX ring entry came free within the send timeout.
EnvelopeTooLargeThe envelope is longer than a frame carries.
BufferTooSmallThe caller’s buffer is shorter than the envelope, which is consumed.
DecodeA 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.

VariantMeaning
IntegrationDeferredThe mode asked for is not integrated in this release: DTLS ([Mode::Dtls]) and the QUIC tunnel ([Mode::QuicTunnel]). [Mode::TlsTcpStream] is.
ModeUnavailableThe host operating system or this build doesn’t support the requested mode.
IoA 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].
TlsTLS 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.
PemA PEM field of the [TlsConfig] holds nothing usable; field names it.
InvalidServerNameThe server name to verify, from [TlsConfig::sni] or the host of the target, is neither a DNS name nor an IP address.
FrameLengthA 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.
LengthMismatchA frame decoded, but it is shorter than its length prefix said.
WireA 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.

VariantMeaning
InvalidLaneCountlane_count was zero.
LaneAllocA lane’s [PulseRing] failed to allocate.
CursorSliceMismatchlast_cursors slice length did not match lane_count in a call to [MultiLaneRing::poll_round_robin].
NumaBindBinding 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.

VariantMeaning
IoUnderlying I/O failure.
TooManyReadersEvery reader cursor of the ring is taken.
SlotSkippedThe slot for cursor held no publish although the writer had passed it; the cursor moved past it rather than wedge there.
LaggedThe 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.

VariantMeaning
RingA ring could not be created, opened or unlinked.
InvalidResizeA 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.

VariantMeaning
Ioshm_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.
ExhaustedThe pool has no free segment.
InvalidSegmentA 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.
PayloadTooLargeA payload, or a reference’s length, exceeds the pool’s segment size.
CrcMismatchThe payload’s CRC-32C is not the one its reference carries: the bytes or the reference changed after the write.
InvalidConfigA 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.
NoSpaceLinux 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.
InvalidNameThe name contains a NUL byte.
RegionTooSmallThe object is smaller than a header, or than the pool its header describes.
LayoutMismatchThe 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.

VariantMeaning
IoA socket call or an io_uring operation failed; a receive that waited its whole timeout is TimedOut.
SetupThe io_uring instance could not be created; the string says why.
NotReadyA send or receive before UringSpsc::bind_udp ("bound"), or a send before UringSpsc::connect_udp ("connected").
PayloadTooLargeA payload longer than [UringConfig::buffer_bytes]. Nothing was sent.
BatchTooLargeA batch of more sends than [UringConfig::buffer_count], or than the submission queue holds. Nothing was sent.
MutexPoisonedA 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.

VariantMeaning
PsiUnavailable/proc/pressure/cpu not available on this system. Either the kernel is older than 4.20, or PSI was disabled at boot.
IoUnderlying I/O failure (typically while reading /proc/pressure/cpu).