S6-FDHOLDER-ERROR-CODES(7)
🌸 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 thes6-fdholdertools, but protocol bugs have usually been wiped out before ans6release. 💀‘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-noption tos6-fdholderd(8), as well as theRLIMIT_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-toptions 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 🌟
s6-fdholder-daemon(8)s6-fdholder-delete(8)s6-fdholder-getdump(8)s6-fdholder-list(8)s6-fdholder-retrieve(8)s6-fdholder-setdump(8)s6-fdholder-store(8)s6-fdholder-transferdump(8)s6-fdholderd(8)
[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
- nixpkgs unstable: s6 2.15.1.0
- nixpkgs unstable: s6-man-pages 2.14.0.1.4
- 💖 girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms