{"record":{"id":"4ec0a4eca8129c77","repo":"rustdesk/rustdesk","slug":"failure-to-read-file-metadata-or-content-path-p","errorCode":null,"errorMessage":"failure to read file metadata or content, path: {path}, err: {err}","messagePattern":"failure to read file metadata or content, path: (.+?), err: (.+?)","errorType":"exception","errorClass":"CliprdrError","httpStatus":null,"severity":"error","filePath":"libs/clipboard/src/lib.rs","lineNumber":87,"sourceCode":"}\n\n#[derive(Error, Debug)]\npub enum CliprdrError {\n    #[error(\"invalid cliprdr name\")]\n    CliprdrName,\n    #[error(\"failed to init cliprdr\")]\n    CliprdrInit,\n    #[error(\"cliprdr out of memory\")]\n    CliprdrOutOfMemory,\n    #[error(\"cliprdr internal error\")]\n    ClipboardInternalError,\n    #[error(\"cliprdr occupied\")]\n    ClipboardOccupied,\n    #[error(\"conversion failure\")]\n    ConversionFailure,\n    #[error(\"failure to read clipboard\")]\n    OpenClipboard,\n    #[error(\"failure to read file metadata or content, path: {path}, err: {err}\")]\n    FileError { path: String, err: std::io::Error },\n    #[error(\"invalid request: {description}\")]\n    InvalidRequest { description: String },\n    #[error(\"common request: {description}\")]\n    CommonError { description: String },\n    #[error(\"unknown cliprdr error\")]\n    Unknown(u32),\n}\n\n#[derive(Debug, Serialize, Deserialize, Clone)]\n#[serde(tag = \"t\", content = \"c\")]\npub enum ClipboardFile {\n    NotifyCallback {\n        r#type: String,\n        title: String,\n        text: String,\n    },\n    MonitorReady,","sourceCodeStart":69,"sourceCodeEnd":105,"githubUrl":"https://github.com/rustdesk/rustdesk/blob/91c9fccbb0f7bfe5f11644d5fbdec9b23fa10540/libs/clipboard/src/lib.rs#L69-L105","documentation":"CliprdrError::FileError variant: reading a file's metadata or contents failed during clipboard file transfer. The payload names the exact path and carries the underlying std::io::Error, so the message tells you which file (path) and why (err — permissions, missing file, I/O). It fires when the FUSE/cliprdr backend tries to serve or ingest a file listed on the clipboard and the OS read fails.","triggerScenarios":"Thrown at libs/clipboard/src/lib.rs:87 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Read the embedded err: NotFound/EACCES point to deleted or permission-denied files; recover by skipping that entry in the file list","Verify the path exists and is readable by the RustDesk process user before retrying","For remotely-advertised paths, validate reachability before attempting to stream contents","Skip unreadable entries and continue the transfer instead of aborting the whole clipboard operation"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"91c9fccbb0f7bfe5f11644d5fbdec9b23fa10540","analyzedAt":"2026-09-10T19:53:44.083Z","contentChangedAt":"2026-09-10T19:53:44.083Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}