{"record":{"id":"bee3408cb7270b3a","repo":"emilk/egui","slug":"failed-to-get-mapped-range","errorCode":null,"errorMessage":"Failed to get mapped range","messagePattern":"Failed to get mapped range","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/egui_kittest/src/texture_to_image.rs","lineNumber":63,"sourceCode":"    // 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,\n    padded_bytes_per_row: usize,\n}\n\nimpl BufferDimensions {\n    fn new(width: usize, height: usize) -> Self {\n        let bytes_per_pixel = size_of::<u32>();","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/emilk/egui/blob/b9a0723d88dee87ba0965470b554a6efdab1d0bb/crates/egui_kittest/src/texture_to_image.rs#L45-L81","documentation":"Error \"Failed to get mapped range\" thrown in emilk/egui.","triggerScenarios":"Thrown at crates/egui_kittest/src/texture_to_image.rs:63 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["The buffer was not mapped before reading: call map_async and wait for the callback before get_mapped_range."],"exampleFix":"buffer_slice.map_async(wgpu::MapMode::Read, |_| {}); device.poll(wgpu::Maintain::Wait); let view = buffer_slice.get_mapped_range();","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"}