wgpu: Frame Presentation Hangs with occasional VK_ERROR_DEVICE_LOST (ANV)
System information
System: Host: host Kernel: 5.12.9-arch1-1 x86_64 bits: 64 compiler: gcc v: 11.1.0 Desktop: i3 4.19.1 dm: startx
Distro: Arch Linux
CPU: Info: Quad Core model: Intel Pentium N4200 bits: 64 type: MCP arch: Goldmont rev: 9 cache: L2: 1024 KiB
flags: lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 8756
Speed: 792 MHz min/max: 800/2500 MHz Core speeds (MHz): 1: 792 2: 1513 3: 1263 4: 806
Graphics: Device-1: Intel Celeron N3350/Pentium N4200/Atom E3900 Series Integrated Graphics vendor: Dell driver: i915
v: kernel bus-ID: 00:02.0 chip-ID: 8086:5a84
Device-2: Sunplus Innovation Integrated_Webcam_HD type: USB driver: uvcvideo bus-ID: 1-4:2 chip-ID: 1bcf:28c0
Display: server: X.org 1.20.11 compositor: picom driver: loaded: modesetting alternate: fbdev,intel,vesa
resolution: <missing: xdpyinfo>
OpenGL: renderer: Mesa Intel HD Graphics 505 (APL 3) v: 4.6 Mesa 21.1.2 direct render: Yes
Describe the issue
Attempting to present frames using gfx-rs/wgpu causes freeze at random frame (usually 5-100 frames with no delay between frames). Increasing the time spent between frame presentations usually results in increased frames presented before crash. Occasionally, a segfault from VK_ERROR_DEVICE_LOST occurs. Was told to upstream ^-^.
Reproduction
Extract, cd, cargo r
Log files as attachment
Backtrace on device lost
MESA-INTEL: error: ../mesa-21.0.3/src/intel/vulkan/anv_batch_chain.c:1856: execbuf2 failed: Invalid argument (VK_ERROR_DEVICE_LOST)
thread 'main' panicked at 'Error in SwapChain::present: parent device is lost', /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.7.1/src/backend/direct.rs:129:9
stack backtrace:
0: 0x5600956513a0 - std::backtrace_rs::backtrace::libunwind::trace::h5e9d00f0cdf4f57e
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/../../backtrace/src/backtrace/libunwind.rs:90:5
1: 0x5600956513a0 - std::backtrace_rs::backtrace::trace_unsynchronized::hd5302bd66215dab9
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x5600956513a0 - std::sys_common::backtrace::_print_fmt::ha0237cd11a34e2bf
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/sys_common/backtrace.rs:67:5
3: 0x5600956513a0 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h171d4c10df1a98ee
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/sys_common/backtrace.rs:46:22
4: 0x5600956712dc - core::fmt::write::h89e4288724daa3fa
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/core/src/fmt/mod.rs:1096:17
5: 0x56009564dee2 - std::io::Write::write_fmt::h6d40f996e84584d9
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/io/mod.rs:1568:15
6: 0x560095653495 - std::sys_common::backtrace::_print::h0c0b93221682afc8
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/sys_common/backtrace.rs:49:5
7: 0x560095653495 - std::sys_common::backtrace::print::h57a9f95204c2fdd6
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/sys_common/backtrace.rs:36:9
8: 0x560095653495 - std::panicking::default_hook::{{closure}}::h4245258b50e37e69
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/panicking.rs:208:50
9: 0x560095652ff3 - std::panicking::default_hook::h7b00dcc1d0944747
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/panicking.rs:225:9
10: 0x560095653c31 - std::panicking::rust_panic_with_hook::h71e6a073d87de1f5
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/panicking.rs:591:17
11: 0x560095653777 - std::panicking::begin_panic_handler::{{closure}}::hd549436f6bb6dbb8
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/panicking.rs:497:13
12: 0x56009565183c - std::sys_common::backtrace::__rust_end_short_backtrace::h4e5f4b72b04174c3
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/sys_common/backtrace.rs:141:18
13: 0x5600956536d9 - rust_begin_unwind
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/panicking.rs:493:5
14: 0x56009565368b - std::panicking::begin_panic_fmt::h818c3c917eaeb432
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/panicking.rs:435:5
15: 0x5600952f6f9c - wgpu::backend::direct::Context::handle_error_fatal::hf52c9bc380c60c67
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.7.1/src/backend/direct.rs:129:9
16: 0x5600952f7f11 - <wgpu::backend::direct::Context as wgpu::Context>::swap_chain_present::h787059ce7a09a8df
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.7.1/src/backend/direct.rs:1384:25
17: 0x5600953a68e0 - <wgpu::SwapChainTexture as core::ops::drop::Drop>::drop::h65bce61213ae9b3a
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.7.1/src/lib.rs:2798:13
18: 0x560095396ff6 - core::ptr::drop_in_place<wgpu::SwapChainTexture>::ha0d47ee2be372ee0
at /home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:179:1
19: 0x560094dcc1af - core::ptr::drop_in_place<wgpu::SwapChainFrame>::h473eaeef230fa9d1
at /home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:179:1
20: 0x560094dc4319 - wgpu_hang::main::h876e1615970adabb
at /home/user/src/rust/graphics/wgpu_hang/src/main.rs:33:5
21: 0x560094dca1fb - core::ops::function::FnOnce::call_once::heb339acf54bb544e
at /home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227:5
22: 0x560094dbb93e - std::sys_common::backtrace::__rust_begin_short_backtrace::h01698e32f8ab9a0c
at /home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys_common/backtrace.rs:125:18
23: 0x560094dc3d81 - std::rt::lang_start::{{closure}}::h3d63020f175e0fa3
at /home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:66:18
24: 0x560095654057 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h527fb2333ede305e
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/core/src/ops/function.rs:259:13
25: 0x560095654057 - std::panicking::try::do_call::h309d8aee8149866c
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/panicking.rs:379:40
26: 0x560095654057 - std::panicking::try::h75a60c31fd16bfc6
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/panicking.rs:343:19
27: 0x560095654057 - std::panic::catch_unwind::h1f9892423e99bc00
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/panic.rs:431:14
28: 0x560095654057 - std::rt::lang_start_internal::hd5b67df56ca01dae
at /rustc/2fd73fabe469357a12c2c974c140f67e7cdd76d0/library/std/src/rt.rs:51:25
29: 0x560094dc3d57 - std::rt::lang_start::h1326ab6dbee9ed93
at /home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:65:5
30: 0x560094dc448a - main
31: 0x7ff3c7e27b25 - __libc_start_main
32: 0x560094d9714e - _start
33: 0x0 - <unknown>
[1] 18766 segmentation fault (core dumped) RUST_BACKTRACE=full cargo r