{"record":{"id":"6aea522d0c2ddc14","repo":"sgl-project/sglang","slug":"could-not-bind-port-port-on-any-configured-addre","errorCode":null,"errorMessage":"Could not bind port {port} on any configured address family","messagePattern":"Could not bind port (.+?) on any configured address family","errorType":"exception","errorClass":"OSError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/utils/network.py","lineNumber":170,"sourceCode":"        The bound socket. Caller is responsible for closing it.\n\n    Raises:\n        OSError: If bind fails on all configured address families.\n    \"\"\"\n    for family, socktype, proto, _, sockaddr in _get_addrinfos_for_bind(host, port):\n        sock = socket.socket(family, socktype, proto)\n        try:\n            if family == socket.AF_INET6:\n                sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 1)\n            if reuse_addr:\n                sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)\n            sock.bind(sockaddr)\n            if listen:\n                sock.listen(1)\n            return sock\n        except (OSError, OverflowError):\n            sock.close()\n    raise OSError(f\"Could not bind port {port} on any configured address family\")\n\n\ndef is_port_available(port):\n    \"\"\"Return whether a port is available on all configured address families.\"\"\"\n    try:\n        for family, socktype, proto, _, sockaddr in _get_addrinfos_for_bind(port=port):\n            sock = socket.socket(family, socktype, proto)\n            try:\n                if family == socket.AF_INET6:\n                    sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 1)\n                sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)\n                sock.bind(sockaddr)\n            finally:\n                sock.close()\n        return True\n    except (OSError, OverflowError):\n        return False\n","sourceCodeStart":152,"sourceCodeEnd":188,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/utils/network.py#L152-L188","documentation":"try_bind_socket iterates getaddrinfo results for the host/port and attempts bind (plus optional listen) on each; if every candidate sockaddr fails with OSError/OverflowError it closes the socket and raises OSError. Typical causes: port already in use, privileged port without root, or address-family mismatch (IPv6 disabled but host resolves only to v6).","triggerScenarios":"get_open_port/get_free_port/bind_port/reserve_port called with a port that is taken, a port <1024 without CAP_NET_BIND_SERVICE, or bind to an address whose family is unavailable.","commonSituations":"Port collisions in multi-instance test runs; binding 80/4444 without privileges; hosts where ::1 exists but 127.0.0.1 binding of a v6-resolved name fails.","solutions":["Free the port (lsof -i :PORT / kill) or pick an ephemeral port (port=0).","For privileged ports, run with privileges/capabilities or choose >1024.","If binding a specific host, confirm it resolves to a family the machine supports."],"exampleFix":"# before\nsock = try_bind_socket(host=\"::\", port=80)\n\n# after\nsock = try_bind_socket(host=\"0.0.0.0\", port=8080)","handlingStrategy":"validation","validationCode":"from sglang.srt.utils.network import is_port_available\nif not is_port_available(port):\n    port = get_open_port()  # or fail with a clear message","typeGuard":null,"tryCatchPattern":"try:\n    sock = try_bind_socket(host, port, listen=False)\nexcept OSError:\n    port = get_open_port()\n    sock = try_bind_socket(host, port, listen=False)","preventionTips":["Pre-check with is_port_available before binding fixed ports.","Use port=0 for ephemeral allocation in tests."],"tags":["network","socket","bind"],"backgroundTag":"bind-failed","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}