{"record":{"id":"8885271f44dcd3c3","repo":"exo-explore/exo","slug":"failed-to-bind-discovery-watcher","errorCode":null,"errorMessage":"failed to bind discovery watcher","messagePattern":"failed to bind discovery watcher","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"rust/networking/src/discovery.rs","lineNumber":106,"sourceCode":"                            _ => {}\n                        }\n                    }\n                    for iface_idx in update.diff.removed {\n                        ifaces.lock().retain(|addr| addr.scope_id() != iface_idx);\n\n                        if let Err(e) = sock.leave_multicast_v6(&GROUP, iface_idx) {\n                            if let Some(iface) = update.interfaces.get(&iface_idx) {\n                                warn!(\n                                    \"failed to leave multicast v6 for interface {}: {e}\",\n                                    iface.name\n                                )\n                            }\n                        }\n                    }\n                }\n            })\n            // todo: better error handling here\n            .expect(\"failed to bind discovery watcher\"),\n        );\n        Ok(Self {\n            sock,\n            namespace,\n            ifaces,\n            last_nonce: Mutex::new(rand::random()),\n            listen_port,\n            zid,\n            tick: interval(Duration::from_secs(1)),\n            _sync,\n        })\n    }\n\n    pub async fn next(&mut self) -> io::Result<Discovered> {\n        let mut buf = [0u8; Hello::buf_size() + WhatsUp::buf_size() + 1];\n        loop {\n            tokio::select! {\n                _ = self.tick.tick() => {","sourceCodeStart":88,"sourceCodeEnd":124,"githubUrl":"https://github.com/exo-explore/exo/blob/21a54c5ea0230a3bec1e1a786d200126c7e34ec6/rust/networking/src/discovery.rs#L88-L124","documentation":"Error \"failed to bind discovery watcher\" thrown in exo-explore/exo.","triggerScenarios":"Thrown at rust/networking/src/discovery.rs:106 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"21a54c5ea0230a3bec1e1a786d200126c7e34ec6","analyzedAt":"2026-08-26T00:02:16.033Z","schemaVersion":2},"datasetVersion":"2026-08-26T04:18:47.238Z"}