{"record":{"id":"5f3b33e265791d9b","repo":"linebender/druid","slug":"unable-to-acquire-underlying-compositor-to-create","errorCode":null,"errorMessage":"unable to acquire underlying compositor to create a surface","messagePattern":"unable to acquire underlying compositor to create a surface","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"druid-shell/src/backend/wayland/surfaces/mod.rs","lineNumber":137,"sourceCode":"                tracing::warn!(\"wayland never reported which output we are drawing to\");\n                1\n            }\n            scale => scale,\n        }\n    }\n}\n\nimpl Compositor for CompositorHandle {\n    fn output(&self, id: u32) -> Option<outputs::Meta> {\n        match self.inner.upgrade() {\n            None => None,\n            Some(c) => c.output(id),\n        }\n    }\n\n    fn create_surface(&self) -> wlc::Main<WlSurface> {\n        match self.inner.upgrade() {\n            None => panic!(\"unable to acquire underlying compositor to create a surface\"),\n            Some(c) => c.create_surface(),\n        }\n    }\n\n    fn create_region(&self) -> wlc::Main<WlRegion> {\n        match self.inner.upgrade() {\n            None => panic!(\"unable to acquire underlying compositor to create a region\"),\n            Some(c) => c.create_region(),\n        }\n    }\n\n    fn shared_mem(&self) -> wlc::Main<WlShm> {\n        match self.inner.upgrade() {\n            None => panic!(\"unable to acquire underlying compositor to acquire shared memory\"),\n            Some(c) => c.shared_mem(),\n        }\n    }\n","sourceCodeStart":119,"sourceCodeEnd":155,"githubUrl":"https://github.com/linebender/druid/blob/0f8b1195e4e073f9597f2865299c3d18f8e4005f/druid-shell/src/backend/wayland/surfaces/mod.rs#L119-L155","documentation":"Guard panic in Compositor for CompositorHandle::create_surface: the interior Weak<dyn Compositor> no longer upgrades, meaning the underlying compositor object was dropped. Called when a new wl_surface must be created for a window; fires only if the window is being used after its compositor backend was torn down.","triggerScenarios":"Thrown at druid-shell/src/backend/wayland/surfaces/mod.rs:137 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Do not retain or use the window/handle after the compositor backend has been dropped","Upgrade the Weak reference before surface creation and fail gracefully if it is gone","Verify window lifetime management so WaylandWindow's compositor outlives all surface creation requests"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0f8b1195e4e073f9597f2865299c3d18f8e4005f","analyzedAt":"2026-09-10T14:27:34.582Z","contentChangedAt":"2026-09-10T14:27:34.582Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}