What does errno 90 (EMSGSIZE) mean?

 
Could be also:
ConstantTypeOS
EIDRMerrnoMac
ELOOPerrnoSolaris
CRITICAL_SERVICE_FAILEDBugCheck CodeWindows
Previous Next
ENOSYS EIDRM

EMSGSIZE

EMSGSIZE means the message is too large for an operation that must preserve message boundaries. Linux documents that if the message cannot pass atomically through the underlying protocol, the send fails and the message is not transmitted. This is most common with datagram and record-oriented sockets, not ordinary TCP byte streams.

The practical limit is not always just the application payload length. Socket type, address family, protocol headers, ancillary data, and path MTU behavior can affect what is valid. Sending a smaller payload is usually safer than assuming a network will fragment it in every environment. If an application needs large records, it should define its own framing and split/reassemble them, or choose a stream transport when that matches the protocol semantics.

How to investigate

  • Log socket type, address family, attempted byte count, and whether sendmsg() included control data.
  • For UDP-like protocols, measure the effective datagram size on the intended path rather than testing only on loopback.
  • Confirm that a retry does not resend a partially processed application record; the kernel-level send failure means this message was not accepted, but higher layers can have their own state.

POSIX sendmsg() · Linux send(2) · RFC 8200: IPv6 packet size and fragmentation


Looking for a different code? Search another status or error code.