Bevy Example Runner - `atmosphere` on Windows causing delays
- Dominant language
- Rust
- Stars
- 48.2k
- Forks
- 4.8k
- Avg merge
- 3d 22h
- Merged PRs (30d)
- 161
Description
## What went wrong
I’ve noticed recently that the Bevy Example Runner has taken longer to execute sometimes, and it seems like there is one specific job that is lasting 4+ hours sometimes: Windows-2025, 2 (the number can vary - I just kicked a manual job off and atmosphere ran in Windows-2025, 4)
The `atmosphere` screenshots seem to take forever to happen. It OOM’s and then stays around for way too long. Example logs from that job:
```
$ cargo build --profile release --example atmosphere --features bevy_ci_testing
Compiling bevy v0.19.0-dev (D:\a\bevy-example-runner\bevy-example-runner)
Finished `release` profile [optimized] target(s) in 14.93s
8 / 20 [===================>------------------------------] 40.00 % 0.00/s 104m Failed to rename screenshot: The system cannot find the file specified. (os error 2)
Atmosphere Example Controls:
1 - Switch to lookup texture rendering method
2 - Switch to raymarched rendering method
3 - Switch to Earth atmosphere
4 - Switch to Mars atmosphere
Enter - Pause/Resume sun motion
Up/Down - Increase/Decrease exposure
Finished `release` profile [optimized] target(s) in 0.64s
Running `target\release\examples\atmosphere.exe`
2026-05-04T13:45:40.801280Z INFO bevy_diagnostic::system_information_diagnostics_plugin::internal: SystemInfo { os: "Windows Server 2025 Datacenter", kernel: "26100", cpu: "AMD EPYC 9V74 80-Core Processor", core_count: "2", memory: "16.0 GiB" }
2026-05-04T13:45:41.112085Z INFO bevy_render::renderer: AdapterInfo { name: "Microsoft Basic Render Driver", vendor: 5140, device: 140, device_type: Cpu, device_pci_bus_id: "", driver: "10.0.26100.32234", driver_info: "", backend: Dx12, subgroup_min_size: 4, subgroup_max_size: 4, transient_saves_memory: false }
2026-05-04T13:45:41.112135Z WARN bevy_render::renderer: The selected adapter is using a driver that only supports software rendering. This is likely to be very slow. See https://bevy.org/learn/errors/b0006/
2026-05-04T13:45:41.206025Z INFO bevy_pbr::cluster: GPU clustering is supported on this device.
2026-05-04T13:45:41.206098Z INFO bevy_render::batching::gpu_preprocessing: GPU preprocessing is fully supported on this device.
2026-05-04T13:45:41.206800Z INFO bevy_winit::system: Creating new window atmosphere (69v0)
2026-05-04T13:52:33.145142Z INFO bevy_dev_tools::ci_testing::systems: Took a screenshot at frame 400.
2026-05-04T14:10:10.736843Z ERROR bevy_render::error_handler: Caught DeviceLost error: Unknown Out of memory
2026-05-04T14:10:10.737033Z ERROR bevy_render::error_handler: Caught rendering error: Out of Memory
thread 'Compute Task Pool (0)' (3572) panicked at C:\Users\runneradmin\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wgpu-29.0.3\src\backend\wgpu_core.rs:2253:18:
Error in Buffer::get_mapped_range: Validation Error
Caused by:
Buffer with '' label is invalid
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Encountered a panic in system ``!
2026-05-04T14:10:10.776587Z ERROR bevy_render::error_handler: Caught rendering error: Out of Memory
2026-05-04T14:10:10.779844Z ERROR bevy_render::error_handler: Caught rendering error: Out of Memory
thread 'Compute Task Pool (0)' (3572) panicked at C:\Users\runneradmin\.cargo\registry\src\index.crates.io-1949cf8c6b5b557f\wgpu-29.0.3\src\backend\wgpu_core.rs:2253:18:
Error in Buffer::get_mapped_range: Validation Error
Caused by:
Buffer with '' label is invalid
Encountered a panic in system ``!
2026-05-04T14:10:10.841368Z ERROR bevy_pbr::cluster::gpu: Failed to fetch staging buffer; not clustering.
2026-05-04T14:10:10.841405Z ERROR bevy_render::diagnostic: TimeSpanScope::end was never called
Encountered a panic in system ``!
2026-05-04T14:32:47.279695Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T14:40:55.223676Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T14:41:40.273860Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T14:43:24.980964Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T14:47:22.846980Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T14:47:51.903321Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T14:51:08.239671Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T14:59:26.408023Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T15:01:05.242366Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T15:05:17.175709Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T15:05:44.128891Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T15:10:14.376103Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T15:11:02.934370Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T15:13:49.964743Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T15:17:14.418241Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T15:19:28.345903Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T15:22:16.790461Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T15:27:41.560793Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T15:29:57.327062Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T15:33:11.901236Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T15:35:33.012601Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T15:42:13.381496Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T15:58:45.999691Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T15:59:35.590904Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T16:02:20.898302Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T16:11:09.707342Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T16:11:40.918923Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
2026-05-04T16:17:23.594481Z WARN gilrs::ff::server: One iteration of a force feedback loop took more than 50ms!
thread 'main' (3568) panicked at crates\bevy_pbr\src\cluster\gpu.rs:1156:90:
called `Result::unwrap()` on an `Err` value: PoisonError { .. }
thread 'Async Compute Task Pool (0)' (6140) panicked at crates\bevy_render\src\view\window\screenshot.rs:659:29:
called `Result::unwrap()` on an `Err` value: RecvError
```
Other take screenshots tasks take 1.5 hours max, so this particular example is causing the runtime to nearly double.
It seems to happen every so often. It has happened back on April 10th (earliest I’ve checked): https://github.com/bevyengine/bevy-example-runner/actions/runs/24242445081
Contributor guide
Research direction
Start with the linked GitHub Actions run and the atmosphere example logs, then inspect crates/bevy_pbr/src/cluster/gpu.rs and crates/bevy_render/src/view/window/screenshot.rs around the reported panics. Compare this job with other screenshot tasks and reproduce or trace the Windows failure. Done means the atmosphere screenshot job no longer spends hours in the OOM and panic state.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- ci-cd, performance, testing-qa
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100