Invalid surface on WSL
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 4.3k
- Forks
- 218
- PR merge metrics
- No merged PRs in 30d
Description
WSL introduced support for graphical applications some time ago. Attempting to run any of the examples fails:
$ cargo run -p counter
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Requesting a device failed', src/renderer.rs:18:89
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Full backtrace
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Requesting a device failed
Stack backtrace:
0: anyhow::error::<impl core::convert::From<E> for anyhow::Error>::from
at /home/jp/.cargo/registry/src/index.crates.io-6f17d22bba15001f/anyhow-1.0.71/src/error.rs:547:25
1: <core::result::Result<T,F> as core::ops::try_trait::FromResidual<core::result::Result<core::convert::Infallible,E>>>::from_residual
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/core/src/result.rs:1961:27
2: floem_vger::VgerRenderer::new
at ./vger/src/lib.rs:43:31
3: floem::renderer::Renderer::new
at ./src/renderer.rs:18:13
4: floem::context::PaintState::connect
at ./src/context.rs:1000:30
5: <floem::app_handle::AppHandle<V> as glazier::window::WinHandler>::connect
at ./src/app_handle.rs:802:9
6: glazier::backend::x11::window::Window::connect::{{closure}}
at /home/jp/.cargo/git/checkouts/glazier-b8f821eee8f52b00/ab692f5/src/backend/x11/window.rs:533:13
7: glazier::backend::x11::window::Window::with_handler_and_dont_check_the_other_borrows
at /home/jp/.cargo/git/checkouts/glazier-b8f821eee8f52b00/ab692f5/src/backend/x11/window.rs:521:31
8: glazier::backend::x11::window::Window::with_handler
at /home/jp/.cargo/git/checkouts/glazier-b8f821eee8f52b00/ab692f5/src/backend/x11/window.rs:512:9
9: glazier::backend::x11::window::Window::connect
at /home/jp/.cargo/git/checkouts/glazier-b8f821eee8f52b00/ab692f5/src/backend/x11/window.rs:532:9
10: glazier::backend::x11::window::WindowBuilder::build
at /home/jp/.cargo/git/checkouts/glazier-b8f821eee8f52b00/ab692f5/src/backend/x11/window.rs:455:9
11: glazier::window::WindowBuilder::build
at /home/jp/.cargo/git/checkouts/glazier-b8f821eee8f52b00/ab692f5/src/window.rs:547:9
12: floem::app::Application::window::{{closure}}
at ./src/app.rs:84:26
13: leptos_reactive::runtime::RuntimeId::run_scope_undisposed
at /home/jp/.cargo/registry/src/index.crates.io-6f17d22bba15001f/leptos_reactive-0.3.1/src/runtime.rs:461:10
14: leptos_reactive::scope::Scope::run_child_scope
at /home/jp/.cargo/registry/src/index.crates.io-6f17d22bba15001f/leptos_reactive-0.3.1/src/scope.rs:160:13
15: leptos_reactive::scope::Scope::child_scope
at /home/jp/.cargo/registry/src/index.crates.io-6f17d22bba15001f/leptos_reactive-0.3.1/src/scope.rs:137:29
16: floem::app::Application::window
at ./src/app.rs:68:17
17: floem::app::launch
at ./src/app.rs:9:5
18: counter::main
at ./examples/counter/src/main.rs:88:5
19: core::ops::function::FnOnce::call_once
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/core/src/ops/function.rs:250:5
20: std::sys_common::backtrace::__rust_begin_short_backtrace
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/sys_common/backtrace.rs:135:18
21: std::rt::lang_start::{{closure}}
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/rt.rs:166:18
22: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/core/src/ops/function.rs:284:13
23: std::panicking::try::do_call
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/panicking.rs:500:40
24: std::panicking::try
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/panicking.rs:464:19
25: std::panic::catch_unwind
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/panic.rs:142:14
26: std::rt::lang_start_internal::{{closure}}
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/rt.rs:148:48
27: std::panicking::try::do_call
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/panicking.rs:500:40
28: std::panicking::try
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/panicking.rs:464:19
29: std::panic::catch_unwind
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/panic.rs:142:14
30: std::rt::lang_start_internal
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/rt.rs:148:20
31: std::rt::lang_start
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/rt.rs:165:17
32: main
33: __libc_start_call_main
at ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
34: __libc_start_main_impl
at ./csu/../csu/libc-start.c:392:3
35: _start', src/renderer.rs:18:89
stack backtrace:
0: 0x56392dba2da1 - std::backtrace_rs::backtrace::libunwind::trace::hd8505f8952b1d578
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
1: 0x56392dba2da1 - std::backtrace_rs::backtrace::trace_unsynchronized::he70ad17ef2414299
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x56392dba2da1 - std::sys_common::backtrace::_print_fmt::h81c1ab30de355b1d
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/sys_common/backtrace.rs:65:5
3: 0x56392dba2da1 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hb173052fee9a48be
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/sys_common/backtrace.rs:44:22
4: 0x56392dbd0def - core::fmt::rt::Argument::fmt::h24bdb8fc1cdd6ab9
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/core/src/fmt/rt.rs:138:9
5: 0x56392dbd0def - core::fmt::write::hfb27016af2bf9db2
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/core/src/fmt/mod.rs:1094:21
6: 0x56392db9eaf7 - std::io::Write::write_fmt::hdbf39a1cb4978ec7
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/io/mod.rs:1714:15
7: 0x56392dba2bb5 - std::sys_common::backtrace::_print::h2b230e23e6fe9050
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/sys_common/backtrace.rs:47:5
8: 0x56392dba2bb5 - std::sys_common::backtrace::print::hdb8675132c4d8f36
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/sys_common/backtrace.rs:34:9
9: 0x56392dba40e3 - std::panicking::default_hook::{{closure}}::h0083d1f8688099c0
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/panicking.rs:269:22
10: 0x56392dba3e74 - std::panicking::default_hook::he0b85b7a539a4b82
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/panicking.rs:288:9
11: 0x56392dba46d9 - std::panicking::rust_panic_with_hook::hade3b16f8984a4e1
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/panicking.rs:705:13
12: 0x56392dba45d7 - std::panicking::begin_panic_handler::{{closure}}::hfe9b4aa9f3378108
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/panicking.rs:597:13
13: 0x56392dba3206 - std::sys_common::backtrace::__rust_end_short_backtrace::h853639dc488abc88
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/sys_common/backtrace.rs:151:18
14: 0x56392dba4322 - rust_begin_unwind
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/panicking.rs:593:5
15: 0x56392dbcd933 - core::panicking::panic_fmt::h35d15b5e11fdd4fa
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/core/src/panicking.rs:67:14
16: 0x56392dbcdec3 - core::result::unwrap_failed::ha412526979475a54
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/core/src/result.rs:1651:5
17: 0x56392c801f9d - core::result::Result<T,E>::unwrap::h56c0c310f7a5eb9c
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/core/src/result.rs:1076:23
18: 0x56392c8272fa - floem::renderer::Renderer::new::h463009c282d0d570
at /home/jp/dev/floem/src/renderer.rs:18:13
19: 0x56392c820dc2 - floem::context::PaintState::connect::h3368eac8ce9dd1c1
at /home/jp/dev/floem/src/context.rs:1000:30
20: 0x56392c78ef00 - <floem::app_handle::AppHandle<V> as glazier::window::WinHandler>::connect::h102831e5854294c7
at /home/jp/dev/floem/src/app_handle.rs:802:9
21: 0x56392ce53691 - glazier::backend::x11::window::Window::connect::{{closure}}::ha38ea3c0988109e9
at /home/jp/.cargo/git/checkouts/glazier-b8f821eee8f52b00/ab692f5/src/backend/x11/window.rs:533:13
22: 0x56392ce51b6c - glazier::backend::x11::window::Window::with_handler_and_dont_check_the_other_borrows::hf15488772beaafd4
at /home/jp/.cargo/git/checkouts/glazier-b8f821eee8f52b00/ab692f5/src/backend/x11/window.rs:521:31
23: 0x56392ce3a726 - glazier::backend::x11::window::Window::with_handler::h8d9a6513d837db19
at /home/jp/.cargo/git/checkouts/glazier-b8f821eee8f52b00/ab692f5/src/backend/x11/window.rs:512:9
24: 0x56392ce535f7 - glazier::backend::x11::window::Window::connect::h071d839d23005c65
at /home/jp/.cargo/git/checkouts/glazier-b8f821eee8f52b00/ab692f5/src/backend/x11/window.rs:532:9
25: 0x56392ce34158 - glazier::backend::x11::window::WindowBuilder::build::hc31499371551c992
at /home/jp/.cargo/git/checkouts/glazier-b8f821eee8f52b00/ab692f5/src/backend/x11/window.rs:455:9
26: 0x56392cf1633e - glazier::window::WindowBuilder::build::h583728f6303d9a0d
at /home/jp/.cargo/git/checkouts/glazier-b8f821eee8f52b00/ab692f5/src/window.rs:547:9
27: 0x56392c787f72 - floem::app::Application::window::{{closure}}::hea3484618d9b9ece
at /home/jp/dev/floem/src/app.rs:84:26
28: 0x56392c7864d9 - leptos_reactive::runtime::RuntimeId::run_scope_undisposed::h1865324e54d8d9ad
at /home/jp/.cargo/registry/src/index.crates.io-6f17d22bba15001f/leptos_reactive-0.3.1/src/runtime.rs:461:10
29: 0x56392c7864d9 - leptos_reactive::scope::Scope::run_child_scope::h83ff7cfbb0461ab9
at /home/jp/.cargo/registry/src/index.crates.io-6f17d22bba15001f/leptos_reactive-0.3.1/src/scope.rs:160:13
30: 0x56392c7864d9 - leptos_reactive::scope::Scope::child_scope::h9d426c0675b616ac
at /home/jp/.cargo/registry/src/index.crates.io-6f17d22bba15001f/leptos_reactive-0.3.1/src/scope.rs:137:29
31: 0x56392c7864d9 - floem::app::Application::window::hd730778169f3492c
at /home/jp/dev/floem/src/app.rs:68:17
32: 0x56392c78815c - floem::app::launch::ha087c6e4a6452f82
at /home/jp/dev/floem/src/app.rs:9:5
33: 0x56392c77a406 - counter::main::h914dc085e4c68845
at /home/jp/dev/floem/examples/counter/src/main.rs:88:5
34: 0x56392c77801b - core::ops::function::FnOnce::call_once::h3afbb712c954cc74
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/core/src/ops/function.rs:250:5
35: 0x56392c788e7e - std::sys_common::backtrace::__rust_begin_short_backtrace::he42a7af143e9940f
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/sys_common/backtrace.rs:135:18
36: 0x56392c753c61 - std::rt::lang_start::{{closure}}::hdccb72b722852e7c
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/rt.rs:166:18
37: 0x56392db998fb - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::hf8da20fcdbafddaf
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/core/src/ops/function.rs:284:13
38: 0x56392db998fb - std::panicking::try::do_call::h2eefd2c69a7fe1d9
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/panicking.rs:500:40
39: 0x56392db998fb - std::panicking::try::h4465d987fce1dcd2
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/panicking.rs:464:19
40: 0x56392db998fb - std::panic::catch_unwind::hb3f183be585796b1
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/panic.rs:142:14
41: 0x56392db998fb - std::rt::lang_start_internal::{{closure}}::h494c7ce8e920f855
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/rt.rs:148:48
42: 0x56392db998fb - std::panicking::try::do_call::h477263181d31b564
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/panicking.rs:500:40
43: 0x56392db998fb - std::panicking::try::h528ee19113a9c71d
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/panicking.rs:464:19
44: 0x56392db998fb - std::panic::catch_unwind::hf6ad906670aa97c3
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/panic.rs:142:14
45: 0x56392db998fb - std::rt::lang_start_internal::h126bbcf1683f341d
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/rt.rs:148:20
46: 0x56392c753c3a - std::rt::lang_start::h0c21882824dd6ef7
at /rustc/993deaa0bf8bab9dd3eadfd1fbeb093328e95afe/library/std/src/rt.rs:165:17
47: 0x56392c77a42e - main
48: 0x7fcf23a20d90 - __libc_start_call_main
at ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
49: 0x7fcf23a20e40 - __libc_start_main_impl
at ./csu/../csu/libc-start.c:392:3
50: 0x56392c7534e5 - _start
51: 0x0 - <unknown>
Changing the following line:
https://github.com/lapce/floem/blob/17ffb5577d9519d04b1871b01e60da70f0765b11/vger/src/lib.rs#L31
To:
let instance = wgpu::Instance::new(wgpu::InstanceDescriptor {
backends: wgpu::Backends::PRIMARY,
dx12_shader_compiler: Default::default(),
});
Fixes the issue. The issue only happens when using the GL backend.
I'm using Ubuntu 22.04 running in WSL2, on top of Windows 10 build 19045.
wsl --version
WSL version: 1.2.5.0
Kernel version: 5.15.90.1
WSLg version: 1.0.51
MSRDC version: 1.2.3770
Direct3D version: 1.608.2-61064218
DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows version: 10.0.19045.3086
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the failure with cargo run -p counter under WSL, then start at src/renderer.rs:18 and follow the device setup into vger/src/lib.rs:43. Use the backtrace and examples/counter/src/main.rs:88 to trace the startup path; done means the examples run under WSL without the device-request panic.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- desktop, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100