{"record":{"id":"025bc774475959b6","repo":"emilk/egui","slug":"failed-to-poll-device","errorCode":null,"errorMessage":"Failed to poll device","messagePattern":"Failed to poll device","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/egui_kittest/src/texture_to_image.rs","lineNumber":57,"sourceCode":"            depth_or_array_layers: 1,\n        },\n    );\n\n    let submission_index = queue.submit(iter::once(encoder.finish()));\n\n    // Note that we're not calling `.await` here.\n    let buffer_slice = output_buffer.slice(..);\n    // Sets the buffer up for mapping, sending over the result of the mapping back to us when it is finished.\n    let (sender, receiver) = channel();\n    buffer_slice.map_async(wgpu::MapMode::Read, move |v| drop(sender.send(v)));\n\n    // Poll the device in a blocking manner so that our future resolves.\n    device\n        .poll(wgpu::PollType::Wait {\n            submission_index: Some(submission_index),\n            timeout: Some(WAIT_TIMEOUT),\n        })\n        .expect(\"Failed to poll device\");\n\n    receiver.recv().unwrap().unwrap();\n    let buffer_slice = output_buffer.slice(..);\n    let data = buffer_slice\n        .get_mapped_range()\n        .expect(\"Failed to get mapped range\");\n    let data = data\n        .chunks_exact(buffer_dimensions.padded_bytes_per_row)\n        .flat_map(|row| row.iter().take(buffer_dimensions.unpadded_bytes_per_row))\n        .copied()\n        .collect::<Vec<_>>();\n\n    RgbaImage::from_raw(texture.width(), texture.height(), data).expect(\"Failed to create image\")\n}\n\nstruct BufferDimensions {\n    height: usize,\n    unpadded_bytes_per_row: usize,","sourceCodeStart":39,"sourceCodeEnd":75,"githubUrl":"https://github.com/emilk/egui/blob/b9a0723d88dee87ba0965470b554a6efdab1d0bb/crates/egui_kittest/src/texture_to_image.rs#L39-L75","documentation":"Error \"Failed to poll device\" thrown in emilk/egui.","triggerScenarios":"Thrown at crates/egui_kittest/src/texture_to_image.rs:57 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["The GPU device was lost while polling: recreate the wgpu device/surface and retry the texture readback.","Check for device loss causes (driver crash, out of memory) before polling."],"exampleFix":"device.poll(wgpu::Maintain::Wait); // after ensuring device not lost via uncaptured error handler","handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b9a0723d88dee87ba0965470b554a6efdab1d0bb","analyzedAt":"2026-08-19T12:39:57.743Z","contentChangedAt":"2026-08-19T12:39:57.743Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}