{"record":{"id":"7b8d4009f951be48","repo":"sgl-project/sglang","slug":"name-port-port-duplicates-seen-ports-port-p","errorCode":null,"errorMessage":"{name} port {port} duplicates {seen_ports[port]} port and --strict-ports is enabled.","messagePattern":"(.+?) port (.+?) duplicates (.+?) port and --strict-ports is enabled\\.","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"critical","filePath":"python/sglang/multimodal_gen/runtime/server_args/server_args.py","lineNumber":1227,"sourceCode":"        needs_http = self.disagg_role in (\n            RoleType.MONOLITHIC,\n            RoleType.SERVER,\n        )\n\n        if self.strict_ports:\n            requested_ports = []\n            if needs_http:\n                requested_ports.append((self.port, \"HTTP\"))\n            for replica in range(self.dp_size or 1):\n                requested_ports.append(\n                    (self.scheduler_port + replica, f\"Scheduler[{replica}]\")\n                )\n            if self.master_port is not None:\n                requested_ports.append((self.master_port, \"Master\"))\n            seen_ports: dict[int, str] = {}\n            for port, name in requested_ports:\n                if port in seen_ports:\n                    raise RuntimeError(\n                        f\"{name} port {port} duplicates {seen_ports[port]} port and \"\n                        \"--strict-ports is enabled.\"\n                    )\n                seen_ports[port] = name\n                self._require_port(port, name)\n        else:\n            settled_ports: set[int] = set()\n            if needs_http:\n                self.port = self.settle_port(self.port)\n                settled_ports.add(self.port)\n            initial_scheduler_port = self.scheduler_port + (\n                random.randint(0, 100) if self.scheduler_port == 5555 else 0\n            )\n            self.scheduler_port = self.settle_port(\n                initial_scheduler_port, avoid=settled_ports\n            )\n            settled_ports.add(self.scheduler_port)\n            self.scheduler_ports = [self.scheduler_port]","sourceCodeStart":1209,"sourceCodeEnd":1245,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/server_args/server_args.py#L1209-L1245","documentation":"Under --strict-ports, all requested ports (HTTP, Master, and others) must be pairwise distinct. This error fires when two requested ports share the same number, before per-port availability is even checked.","triggerScenarios":"--port 30000 --master-port 30000, or any two of the requested port options set to the same value.","commonSituations":"Copy-pasted config where every port field got the same value; scripts templating a single $PORT into multiple flags.","solutions":["Assign distinct values to each port flag (e.g. --port 30000 --master-port 30001 ...)","Parameterize port flags as BASE, BASE+1, ... in launch scripts","Audit the full port list in your launch config for duplicates"],"exampleFix":"# before\n--port 30000 --master-port 30000\n# after\n--port 30000 --master-port 30001","handlingStrategy":"validation","validationCode":"ports = [http_port, master_port]  # all requested ports\nassert len(ports) == len(set(ports)), 'duplicate ports under --strict-ports'","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Derive ports as base+i offsets in scripts","Fail fast on duplicate port config before launch"],"tags":["network","ports","startup","config"],"backgroundTag":"port-already-in-use","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}