Crash with `NoAvailablePixelFormat` when creating a window on Wayland with Vsync enabled with Nvidia drivers
budde25 opened this issue · 2 comments
budde25 commented
Using fedora 36, latest NVIDIA drivers (NVIDIA Driver Version: 515.65.01, NVML Version: 11.515.65.01)
Linux 5.18.17-200.fc36.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Aug 11 14:36:06 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Only happens when trying to create a window with vsync enabled on Wayland with Nvidia drivers. I have had zero issues on X11 or with nouveau graphics
If this is a known limitation, it would be nice to mention in the docs about vsync.
Reproducible code:
use glutin::event_loop::EventLoop;
use glutin::window::WindowBuilder;
use glutin::ContextBuilder;
fn main() {
let el = EventLoop::new();
let wb = WindowBuilder::new().with_title("Glutin Crash");
let windowed_context = ContextBuilder::new()
.with_vsync(true)
.build_windowed(wb, &el)
.unwrap(); // crash here
let windowed_context = unsafe { windowed_context.make_current().unwrap() };
println!(
"Pixel format of the window's GL context: {:?}",
windowed_context.get_pixel_format()
);
}
Backtrace:
RUST_BACKTRACE=full cargo run -q
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: NoAvailablePixelFormat', src/main.rs:12:10
stack backtrace:
0: 0x55b1e5864b6d - std::backtrace_rs::backtrace::libunwind::trace::h8217d0a8f3fd2f41
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
1: 0x55b1e5864b6d - std::backtrace_rs::backtrace::trace_unsynchronized::h308103876b3af410
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x55b1e5864b6d - std::sys_common::backtrace::_print_fmt::hc208018c6153605e
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/sys_common/backtrace.rs:66:5
3: 0x55b1e5864b6d - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hf89a7ed694dfb585
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/sys_common/backtrace.rs:45:22
4: 0x55b1e588571c - core::fmt::write::h21038c1382fe4264
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/core/src/fmt/mod.rs:1197:17
5: 0x55b1e58623b1 - std::io::Write::write_fmt::h7dbb1c9a3c254aef
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/io/mod.rs:1672:15
6: 0x55b1e58661f5 - std::sys_common::backtrace::_print::h4e8889719c9ddeb8
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/sys_common/backtrace.rs:48:5
7: 0x55b1e58661f5 - std::sys_common::backtrace::print::h1506fe2cb3022667
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/sys_common/backtrace.rs:35:9
8: 0x55b1e58661f5 - std::panicking::default_hook::{{closure}}::hd9d7ce2a8a782440
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/panicking.rs:295:22
9: 0x55b1e5865f16 - std::panicking::default_hook::h5b16ec25444b1b5d
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/panicking.rs:314:9
10: 0x55b1e5866786 - std::panicking::rust_panic_with_hook::hb0138cb6e6fea3e4
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/panicking.rs:698:17
11: 0x55b1e5866677 - std::panicking::begin_panic_handler::{{closure}}::h4cb67095557cd1aa
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/panicking.rs:588:13
12: 0x55b1e5865024 - std::sys_common::backtrace::__rust_end_short_backtrace::h2bfcac279dcdc911
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/sys_common/backtrace.rs:138:18
13: 0x55b1e58663a9 - rust_begin_unwind
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/panicking.rs:584:5
14: 0x55b1e5316a03 - core::panicking::panic_fmt::h1de71520faaa17d3
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/core/src/panicking.rs:142:14
15: 0x55b1e5316af3 - core::result::unwrap_failed::hc0baa33ef8bc7db8
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/core/src/result.rs:1805:5
16: 0x55b1e531dc1e - core::result::Result<T,E>::unwrap::h22204d61bc8a3e4e
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/core/src/result.rs:1098:23
17: 0x55b1e535b0e9 - glutin_crash::main::hd9bcf68ced328063
at /home/budd/code/glutin-crash/src/main.rs:9:28
18: 0x55b1e5345fcb - core::ops::function::FnOnce::call_once::h39aa076228c9345d
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/core/src/ops/function.rs:248:5
19: 0x55b1e5344e9e - std::sys_common::backtrace::__rust_begin_short_backtrace::hb4cd551b0dc6a20f
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/sys_common/backtrace.rs:122:18
20: 0x55b1e5328fa1 - std::rt::lang_start::{{closure}}::h8e99572f411bfbfd
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/rt.rs:145:18
21: 0x55b1e585de6e - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h4937aaa125c8d4b2
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/core/src/ops/function.rs:280:13
22: 0x55b1e585de6e - std::panicking::try::do_call::h6f5c70e8b0a34f92
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/panicking.rs:492:40
23: 0x55b1e585de6e - std::panicking::try::h68766ba264ecf2e2
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/panicking.rs:456:19
24: 0x55b1e585de6e - std::panic::catch_unwind::hc36033d2f9cc04af
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/panic.rs:137:14
25: 0x55b1e585de6e - std::rt::lang_start_internal::{{closure}}::h78c037f4a1a28ded
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/rt.rs:128:48
26: 0x55b1e585de6e - std::panicking::try::do_call::he6e1fffda4c750ee
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/panicking.rs:492:40
27: 0x55b1e585de6e - std::panicking::try::h48a77ddbb2f4c87a
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/panicking.rs:456:19
28: 0x55b1e585de6e - std::panic::catch_unwind::hfa809b06a550a9e7
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/panic.rs:137:14
29: 0x55b1e585de6e - std::rt::lang_start_internal::h4db69ed48eaca005
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/rt.rs:128:20
30: 0x55b1e5328f70 - std::rt::lang_start::h8471ded6e205e6c1
at /rustc/4b91a6ea7258a947e59c6522cd5898e7c0a6a88f/library/std/src/rt.rs:144:17
31: 0x55b1e535b27c - main
32: 0x7fa7af5e5550 - __libc_start_call_main
33: 0x7fa7af5e5609 - __libc_start_main_impl
34: 0x55b1e5316cf5 - _start
35: 0x0 - <unknown>
Be-ing commented
I confirm this bug is fixed in the master branch now. I branched off the v0.29.1 tag to add with_vsync(true)
to the example which reproduced the bug with my nVidia GeForce RTX 3060 on KWin Wayland. On the master branch, the example does set vsync without triggering the error.