What does errno 96 (ENODATA) in Mac mean?

 
Could be also:
ConstantTypeOS
EPFNOSUPPORTerrnoLinux
EDESTADDRREQerrnoSolaris
PROCESS_INITIALIZATION_FAILEDBugCheck CodeWindows
Previous Next
EPFNOSUPPORT EDESTADDRREQ

ENODATA

This page examines no message available on a Darwin STREAM. A STREAMS-compatible read or control operation found no message/data in the required stream context.

Meaning on this platform

Darwin BSD system-call handling: No message available on a darwin stream belongs to Darwin errno and should be decoded with the exact SDK or XNU header used by the target. Darwin extensions and legacy STREAMS names related to this error can differ in availability or numbering on other UNIX-like systems. The wording attached to ENODATA is a clue to the original interface, not proof that a similarly named modern subsystem returned it.

Facts that identify the owner

EvidenceQuestion it answers
File descriptor type, pushed modules, message band, operation, flags, and producer state.Ties this error to one live API object instead of a translated message.
Darwin errno value and the SDK/XNU header version used to decode it.Shows whether this error arose in the caller ABI, wrapper, or provider.
First syscall/ioctl return plus process, thread, and object generation.Preserves the first boundary before errno can be overwritten.
Known-good object of the same class on the same macOS build.Provides a same-platform known-good comparison.

Verification sequence

  1. Send one known message through a controlled stream endpoint. Repeat the original operation after the control so the result remains relevant to this error.
  2. Capture errno immediately and compare the paired return value. Keep the binary, header ABI, and provider fixed.
  3. Repeat with one controlled object while keeping identity and sandbox unchanged. Record whether the control reaches the same syscall or runtime boundary as this error.

Two observations are especially discriminating here: File descriptor type, pushed modules, message band, operation, flags, and producer state. Use this control for comparison: send one known message through a controlled stream endpoint.

Cross-platform caution

Tempting assumptionSafer interpretation
The English phrase is assumed to be portableENODATA belongs to Darwin BSD system-call handling; verify the target headers and returning API before applying another platform's errno table
A retry succeeded and erased the original evidenceA retry can replace the original errno with a different state; preserve the first call, numeric value, and object generation beforehand

A narrow remedy

Targeted correction. Restore producer/module state or migrate to the supported socket/IPC API; handle empty state explicitly.

Regression proof. Message availability and empty-state behavior are deterministic without busy retry.

Technical references


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