{"record":{"id":"4380d435022e289c","repo":"iced-rs/iced","slug":"get-user-interface","errorCode":null,"errorMessage":"Get user interface","messagePattern":"Get user interface","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"winit/src/lib.rs","lineNumber":783,"sourceCode":"                                .insert(id, ui.relayout(logical_size, &mut window.renderer));\n                            layout_span.finish();\n\n                            current_compositor.configure_surface(\n                                &mut window.surface,\n                                physical_size.width,\n                                physical_size.height,\n                            );\n\n                            window.surface_version = window.state.surface_version();\n                        }\n\n                        let redraw_event =\n                            core::Event::Window(window::Event::RedrawRequested(Instant::now()));\n\n                        let cursor = window.state.cursor();\n\n                        let mut interface =\n                            user_interfaces.get_mut(&id).expect(\"Get user interface\");\n\n                        let interact_span = debug::interact(id);\n                        let mut redraw_count = 0;\n\n                        let state = loop {\n                            let message_count = messages.len();\n                            let (state, _) = interface.update(\n                                &window.raw,\n                                &window.waker,\n                                slice::from_ref(&redraw_event),\n                                cursor,\n                                &mut window.renderer,\n                                &mut messages,\n                            );\n\n                            if message_count == messages.len() && !state.has_layout_changed() {\n                                break state;\n                            }","sourceCodeStart":765,"sourceCodeEnd":801,"githubUrl":"https://github.com/iced-rs/iced/blob/d146509d893945de5c304cfaf4301335eee278bd/winit/src/lib.rs#L765-L801","documentation":"Panic from `user_interfaces.get_mut(&id).expect(\"Get user interface\")` at the start of RedrawRequested handling. The UI map must contain an entry for every open window; a missing entry is an internal invariant violation in the runtime's window/interface bookkeeping.","triggerScenarios":"RedrawRequested fires for a window id whose user interface was removed earlier (closed window, failed relayout path at line 761, or interface removed by run_action without removing the window).","commonSituations":"Window closed via Action::Close while a redraw request was already queued; scale-factor/resize race that removed the UI but failed to reinsert it; forked runtime modifications.","solutions":["Update iced/winit to the latest release","Avoid racing Close actions against pending redraws","Replace expect with `if let Some(ui)` and skip the redraw if absent when forking"],"exampleFix":"// before\nlet mut interface = user_interfaces.get_mut(&id).expect(\"Get user interface\");\n// after\nlet Some(mut interface) = user_interfaces.get_mut(&id) else { continue; };","handlingStrategy":"type-guard","validationCode":null,"typeGuard":"let Some(ui) = user_interfaces.get_mut(&id) else { continue; };","tryCatchPattern":null,"preventionTips":["Don't send actions targeting a window id after Action::Close","Avoid racing window close with pending redraw requests","Update iced/winit to the latest release"],"tags":["panic","ui","redraw","lifecycle"],"backgroundTag":"internal-invariant-violation","analyzedSha":"d146509d893945de5c304cfaf4301335eee278bd","analyzedAt":"2026-09-11T16:54:14.229Z","contentChangedAt":"2026-09-11T16:54:14.229Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}