lapce / lapce/floem

Invalid surface on WSL

Open
#71 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

T: bug
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.