{"record":{"id":"b60d554cee9c33da","repo":"Pumpkin-MC/Pumpkin","slug":"failed-to-get-absolute-path-0","errorCode":null,"errorMessage":"Failed to get absolute path: {0}","messagePattern":"Failed to get absolute path: (.+?)","errorType":"exception","errorClass":"PluginInitError","httpStatus":null,"severity":"error","filePath":"crates/pumpkin/src/plugin/loader/wasm/wasm_host/mod.rs","lineNumber":43,"sourceCode":"    #[error(\"Failed to setup linker: {0}\")]\n    LinkerSetupFailed(wasmtime::Error),\n    #[error(\"Plugin is built against a different API version: {0}\")]\n    ApiVersionMismatch(wasmtime::Error),\n    #[error(\"Failed to read plugin file: {0}\")]\n    FileReadFailed(std::io::Error),\n    #[error(\"Failed to load plugin as component: {0}\")]\n    ComponentNewFailed(wasmtime::Error),\n    #[error(\"Failed to create cache data for plugin: {0}\")]\n    ComponentCacheSerializeFailed(wasmtime::Error),\n    #[error(\"Failed to write cache file for plugin: {0}\")]\n    ComponentCacheWriteFailed(std::io::Error),\n    #[error(\"Failed to instantiate plugin: {0}\")]\n    InstantiationFailed(wasmtime::Error),\n    #[error(\"Calling `init_plugin` failed: {0}\")]\n    CallInitPluginFailed(wasmtime::Error),\n    #[error(\"Calling `get_metadata` failed: {0}\")]\n    CallGetMetadataFailed(wasmtime::Error),\n    #[error(\"Failed to get absolute path: {0}\")]\n    PathResolutionFailed(std::io::Error),\n    #[error(\"Failed to create cache: {0}\")]\n    CacheCreationFailed(wasmtime::Error),\n}\n\n#[derive(Clone, Copy, Default)]\nstruct SocketPolicy {\n    tcp_connect: bool,\n    tcp_bind: bool,\n    udp_send: bool,\n    udp_receive: bool,\n    udp_bind: bool,\n    loopback_only: bool,\n}\n\nimpl SocketPolicy {\n    const fn allows(self, addr: SocketAddr, reason: SocketAddrUse) -> bool {\n        // Wasmtime performs a wildcard bind before an outbound connect/send.","sourceCodeStart":25,"sourceCodeEnd":61,"githubUrl":"https://github.com/Pumpkin-MC/Pumpkin/blob/8d4639e25a57c15e47448ec327c780d41bbf2356/crates/pumpkin/src/plugin/loader/wasm/wasm_host/mod.rs#L25-L61","documentation":"WasmHostError variant from the WASM plugin loader setup: canonicalizing or resolving the plugin file path to an absolute path failed. The input at fault is the plugin path configured for the plugin — it may be relative to a missing working directory, contain invalid characters, or point through a symlink/permission setup the filesystem rejects.","triggerScenarios":"Loading a plugin whose path does not exist, is a broken symlink, or the process lacks permission to resolve it in the plugins directory.","commonSituations":"Plugin jar/wasm deleted while server runs; typo in plugins folder name; broken symlink; restrictive filesystem permissions or read-only mount.","solutions":["Check the configured plugin path exists and is accessible","Verify filesystem permissions on the plugins directory","Skip the plugin and continue loading others"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"let abs = std::fs::canonicalize(&plugin_path).map_err(|e| format!(\"plugin path invalid: {e}\"))?; if !abs.is_file() { return Err(\"not a file\"); }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Check plugin file existence before server start","Avoid symlinks in the plugins directory","Run the server with a user that can read the plugins directory"],"tags":["io","path","plugin-loader","filesystem"],"backgroundTag":"file-not-found","analyzedSha":"8d4639e25a57c15e47448ec327c780d41bbf2356","analyzedAt":"2026-09-09T15:32:22.916Z","contentChangedAt":"2026-09-09T15:32:22.916Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}