python/cpython · error · ValueError
Invalid file object: {fd!r}
Error message
Invalid file object: {fd!r} What it means
Error "Invalid file object: {fd!r}" thrown in python/cpython.
Source
Thrown at Lib/asyncio/selector_events.py:275
context = {
'message':
'Error on transport creation for incoming connection',
'exception': exc,
}
if protocol is not None:
context['protocol'] = protocol
if transport is not None:
context['transport'] = transport
self.call_exception_handler(context)
def _ensure_fd_no_transport(self, fd):
fileno = fd
if not isinstance(fileno, int):
try:
fileno = int(fileno.fileno())
except (AttributeError, TypeError, ValueError):
# This code matches selectors._fileobj_to_fd function.
raise ValueError(f"Invalid file object: {fd!r}") from None
transport = self._transports.get(fileno)
if transport and not transport.is_closing():
raise RuntimeError(
f'File descriptor {fd!r} is used by transport '
f'{transport!r}')
def _add_reader(self, fd, callback, *args, context=None):
self._check_closed()
handle = events.Handle(callback, args, self, context=context)
key = self._selector.get_map().get(fd)
if key is None:
self._selector.register(fd, selectors.EVENT_READ,
(handle, None))
else:
mask, (reader, writer) = key.events, key.data
self._selector.modify(fd, mask | selectors.EVENT_READ,
(handle, writer))
if reader is not None:View on GitHub (pinned to bc6749cc3b)
Solutions
- Pass a valid file object or file descriptor to add_reader()/add_writer(); ensure it has a fileno() returning a valid integer and is not closed.
When it happens
Trigger: Raised when an object without a valid fileno is registered with the selector event loop.
Common situations: See trigger scenarios.
AI-assisted analysis of python/cpython@bc6749cc3b (2026-08-14).
Data as JSON: /api/errors/bfa0d633aa7174ca.
Report an issue: GitHub.