{"record":{"id":"40f1f67e22f4de95","repo":"python/cpython","slug":"file-descriptor-fd-r-is-used-by-transport-trans","errorCode":null,"errorMessage":"File descriptor {fd!r} is used by transport {transport!r}","messagePattern":"File descriptor (.+?) is used by transport (.+?)","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"Lib/asyncio/selector_events.py","lineNumber":278,"sourceCode":"                    'exception': exc,\n                }\n                if protocol is not None:\n                    context['protocol'] = protocol\n                if transport is not None:\n                    context['transport'] = transport\n                self.call_exception_handler(context)\n\n    def _ensure_fd_no_transport(self, fd):\n        fileno = fd\n        if not isinstance(fileno, int):\n            try:\n                fileno = int(fileno.fileno())\n            except (AttributeError, TypeError, ValueError):\n                # This code matches selectors._fileobj_to_fd function.\n                raise ValueError(f\"Invalid file object: {fd!r}\") from None\n        transport = self._transports.get(fileno)\n        if transport and not transport.is_closing():\n            raise RuntimeError(\n                f'File descriptor {fd!r} is used by transport '\n                f'{transport!r}')\n\n    def _add_reader(self, fd, callback, *args, context=None):\n        self._check_closed()\n        handle = events.Handle(callback, args, self, context=context)\n        key = self._selector.get_map().get(fd)\n        if key is None:\n            self._selector.register(fd, selectors.EVENT_READ,\n                                    (handle, None))\n        else:\n            mask, (reader, writer) = key.events, key.data\n            self._selector.modify(fd, mask | selectors.EVENT_READ,\n                                  (handle, writer))\n            if reader is not None:\n                reader.cancel()\n        return handle\n","sourceCodeStart":260,"sourceCodeEnd":296,"githubUrl":"https://github.com/python/cpython/blob/bc6749cc3b5ae4a5e88a6cc2d5b3bebbe354eae6/Lib/asyncio/selector_events.py#L260-L296","documentation":"Error \"File descriptor {fd!r} is used by transport {transport!r}\" thrown in python/cpython.","triggerScenarios":"Raised when registering a file descriptor that is already used by another transport.","commonSituations":"See trigger scenarios.","solutions":["Remove the existing reader/writer registration (remove_reader/remove_writer) before reusing the file descriptor.","Do not share one file descriptor between two transports simultaneously."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"bc6749cc3b5ae4a5e88a6cc2d5b3bebbe354eae6","analyzedAt":"2026-08-14T22:01:13.976Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}