S6-FDHOLDER-ERROR-CODES(7)

📦 version 2.15.1.0, in nixpkgs unstable

🌸 NAME 🌸

s6-fdholder-error-codes(7) — the manual page for error codes returned by the s6-fdholderd(8) daemon. Bestie, this is your cheat sheet for when fd-holding goes sideways. 💅


✨ DESCRIPTION ✨

Okay so the following error messages (and their matching errno(3) codes) can be returned by the s6-fdholderd(8) daemon to its various clients. This page explains why they show up. No cap, every single one matters. 🫶

  • ‘Protocol error’ (EPROTO) or ‘Protocol wrong type for socket’ (EPROTOTYPE) — the client connected to the wrong kind of server and they literally cannot communicate. This is generally a programming error. It can also signal a bug in the s6-fdholder tools, but protocol bugs have usually been wiped out before an s6 release. 💀
  • ‘Broken pipe’ (EPIPE) — the client was not authorized to connect to the server, which closed the connection. You need to configure the access rights to the server. Periodt. 🔥
  • ‘Operation not permitted’ (EPERM) — even though the client was authorized to connect to the server, the specific operation it wanted to perform was denied. You need to configure the access rights to the server. Same vibe, different layer. 🎀
  • ‘Too many open files in system’ (ENFILE) — the client attempted to store more file descriptors than the server can hold. Or, the client attempted to retrieve more file descriptors than it can hold. You should check the -n option to s6-fdholderd(8), as well as the RLIMIT_NOFILE[1] resource limits used by the client and the server, and adjust them accordingly. This one is giving “too much of a good thing,” honestly. 😭
  • ‘Resource busy’ (EBUSY) — the client attempted to store a descriptor under an identifier that is already used. That identifier said “taken,” fr fr. 🙈
  • ‘Filename too long’ (ENAMETOOLONG) — the identifier provided by the client was too long. Shorter king/queen behavior, please. 👑
  • ‘No such file or directory’ (ENOENT) — the identifier provided by the client was not found in the server database. It’s not there, bestie. It’s just not. 🦋
  • ‘Bad file descriptor’ (EBADF) — the client attempted to transmit a closed, or otherwise unsuitable for fd-passing, file descriptor. That fd is not invited to the party. 🚫
  • ‘Operation timed out’ (ETIMEDOUT) — the client, or the server, took too long to perform the wanted operation. This is most probably a programming error, because both client and server should have a very fast reaction time. Check that the client is connecting to the right server, and check -t options to both client and server (the argument is interpreted as milliseconds!). Yes, milliseconds — not a casual “later.” ⏰

Other errors indicate a transient error such as lack of memory, hardware failure, etc. Those are the “not your fault, but still your problem” ones. 🌈


🌟 SEE ALSO 🌟

[1] https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_resource.h.html

This man page is ported from the authoritative documentation at: https://skarnet.org/software/s6/s6-fdholder-errorcodes.html


💜 AUTHORS 💜

Laurent Bercot

Alexis <flexibeast@gmail.com> (man page port)


Catch you later, bestie — this page is Debian, dated September 29, 2021. Slay responsibly. 💖✨

📦 where this page comes from