{"record":{"id":"6fd91405ad0f4d1b","repo":"zed-industries/zed","slug":"failed-to-start-screen-capture-stream-message","errorCode":null,"errorMessage":"failed to start screen capture stream {message:?}","messagePattern":"failed to start screen capture stream (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/gpui_macos/src/screen_capture.rs","lineNumber":161,"sourceCode":"                    .ok();\n                return rx;\n            }\n\n            let tx = Rc::new(RefCell::new(Some(tx)));\n            let handler = ConcreteBlock::new({\n                move |error: id| {\n                    let result = if error == nil {\n                        let stream = MacScreenCaptureStream {\n                            meta: meta.clone(),\n                            sc_stream: stream,\n                            sc_stream_output: output,\n                        };\n                        Ok(Box::new(stream) as Box<dyn ScreenCaptureStream>)\n                    } else {\n                        let _: () = msg_send![stream, release];\n                        let _: () = msg_send![output, release];\n                        let message: id = msg_send![error, localizedDescription];\n                        Err(anyhow!(\"failed to start screen capture stream {message:?}\"))\n                    };\n                    if let Some(tx) = tx.borrow_mut().take() {\n                        tx.send(result).ok();\n                    }\n                }\n            });\n            let handler = handler.copy();\n            let _: () = msg_send![stream, startCaptureWithCompletionHandler:handler];\n            rx\n        }\n    }\n}\n\nimpl ScreenCaptureStream for MacScreenCaptureStream {\n    fn metadata(&self) -> Result<SourceMetadata> {\n        Ok(self.meta.clone())\n    }\n}","sourceCodeStart":143,"sourceCodeEnd":179,"githubUrl":"https://github.com/zed-industries/zed/blob/9d272b036335401f339d024ea94968fd51016c40/crates/gpui_macos/src/screen_capture.rs#L143-L179","documentation":"Guard in the stream start completion handler: SCStream.startCapture finished with a non-nil NSError, so the screen capture stream never began producing frames. {message:?} carries ScreenCaptureKit's failure reason (e.g. user stopped sharing, display removed).","triggerScenarios":"Thrown at crates/gpui_macos/src/screen_capture.rs:145 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the NSError code; invalidate and rebuild the stream when displays change","Re-prompt for screen-recording permission if the error indicates denial","Deliver the error through the oneshot receiver so the caller shows a capture-failed state"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"9d272b036335401f339d024ea94968fd51016c40","analyzedAt":"2026-08-20T19:29:52.058Z","contentChangedAt":"2026-08-20T19:29:52.058Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}