Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Skia: Crash when launching in fullscreen - debug only #3747

Open
plule opened this issue Oct 24, 2023 · 3 comments
Open

Skia: Crash when launching in fullscreen - debug only #3747

plule opened this issue Oct 24, 2023 · 3 comments
Labels
a:platform-windows Issue specific to Windows (mT,bS) a:renderer-skia Skia Renderer (mS) bug Something isn't working

Comments

@plule
Copy link

plule commented Oct 24, 2023

It looks like some debug assertions are a bit too restrictive: When trying to launch an application on fullscreen with skia on Windows, it crashes with a failed assertion. When building in release mode, it works perfectly fine.

Cargo.toml

[package]
name = "slint-repro"
version = "0.1.0"
edition = "2021"

[dependencies]
slint = { version = "1.2.1", default-features = false, features = [
    "std",
    "backend-winit",
    "accessibility",
    "compat-1-2",
    "log",
    "renderer-skia",
] }

main.rs

slint::slint! {
    export component HelloWorld {
        Text {
            text: "hello world";
            color: green;
        }
    }
}
fn main() {
    HelloWorld::new().unwrap().run().unwrap();
}

With SLINT_FULLSCREEN set to "1":

cargo run

D:/dev/rust/slint-repro> cargo run                                                                                                                                                        10/24/2023 12:35:29 
    Finished dev [unoptimized + debuginfo] target(s) in 0.40s
     Running `C:\.cargo\debug\slint-repro.exe`
thread 'main' panicked at C:\Users\Pierre\.cargo\registry\src\index.crates.io-6f17d22bba15001f\i-slint-renderer-skia-1.2.2\d3d_surface.rs:204:13:
assertion `left == right` failed
  left: 1920
 right: 0
stack backtrace:
   0:     0x7ff78e458eba - std::sys_common::backtrace::_print::impl$0::fmt
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\sys_common\backtrace.rs:44
   1:     0x7ff78e4700fb - core::fmt::rt::Argument::fmt
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\core\src\fmt\rt.rs:138
   2:     0x7ff78e4700fb - core::fmt::write
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\core\src\fmt\mod.rs:1094
   3:     0x7ff78e456791 - std::io::Write::write_fmt<std::sys::windows::stdio::Stderr>
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\io\mod.rs:1714
   4:     0x7ff78e458c3a - std::sys_common::backtrace::_print
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\sys_common\backtrace.rs:47
   5:     0x7ff78e458c3a - std::sys_common::backtrace::print
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\sys_common\backtrace.rs:34
   6:     0x7ff78e45ae9a - std::panicking::default_hook::closure$1
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\panicking.rs:270
   7:     0x7ff78e45ab08 - std::panicking::default_hook
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\panicking.rs:290
   8:     0x7ff78e45b54e - std::panicking::rust_panic_with_hook
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\panicking.rs:707
   9:     0x7ff78e45b43d - std::panicking::begin_panic_handler::closure$0
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\panicking.rs:599
  10:     0x7ff78e4598a9 - std::sys_common::backtrace::__rust_end_short_backtrace<std::panicking::begin_panic_handler::closure_env$0,never$>
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\sys_common\backtrace.rs:170
  11:     0x7ff78e45b140 - std::panicking::begin_panic_handler
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\panicking.rs:595
  12:     0x7ff78eac4955 - core::panicking::panic_fmt
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\core\src\panicking.rs:67
  13:     0x7ff78eac4de8 - core::panicking::assert_failed_inner
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\core\src\panicking.rs:269
  14:     0x7ff78e208b42 - core::panicking::assert_failed<u64,u64>
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33\library\core\src\panicking.rs:229
  15:     0x7ff78e1ec81d - i_slint_renderer_skia::d3d_surface::impl$1::create_surfaces::closure$0
                               at C:\Users\Pierre\.cargo\registry\src\index.crates.io-6f17d22bba15001f\i-slint-renderer-skia-1.2.2\d3d_surface.rs:204
  16:     0x7ff78e1ec48e - i_slint_renderer_skia::d3d_surface::SwapChain::create_surfaces
                               at C:\Users\Pierre\.cargo\registry\src\index.crates.io-6f17d22bba15001f\i-slint-renderer-skia-1.2.2\d3d_surface.rs:231
  17:     0x7ff78e1ece5d - i_slint_renderer_skia::d3d_surface::SwapChain::resize
                               at C:\Users\Pierre\.cargo\registry\src\index.crates.io-6f17d22bba15001f\i-slint-renderer-skia-1.2.2\d3d_surface.rs:256
  18:     0x7ff78e1ee561 - i_slint_renderer_skia::d3d_surface::impl$2::resize_event
                               at C:\Users\Pierre\.cargo\registry\src\index.crates.io-6f17d22bba15001f\i-slint-renderer-skia-1.2.2\d3d_surface.rs:440
  19:     0x7ff78e20d71f - i_slint_renderer_skia::impl$1::resize
                               at C:\Users\Pierre\.cargo\registry\src\index.crates.io-6f17d22bba15001f\i-slint-renderer-skia-1.2.2\lib.rs:374
  20:     0x7ff78e288c8f - i_slint_core::window::WindowInner::show
                               at C:\Users\Pierre\.cargo\registry\src\index.crates.io-6f17d22bba15001f\i-slint-core-1.2.2\window.rs:782
  21:     0x7ff78e2c3eb6 - i_slint_core::api::Window::show
                               at C:\Users\Pierre\.cargo\registry\src\index.crates.io-6f17d22bba15001f\i-slint-core-1.2.2\api.rs:382
  22:     0x7ff78e0f5229 - slint_repro::slint_generatedHelloWorld::impl$9::show
                               at D:\dev\rust\slint-repro\src\main.rs:1
  23:     0x7ff78e0f4fa8 - slint_repro::slint_generatedHelloWorld::impl$9::run
                               at D:\dev\rust\slint-repro\src\main.rs:1
  24:     0x7ff78e0f8ac6 - slint_repro::main
                               at D:\dev\rust\slint-repro\src\main.rs:10
  25:     0x7ff78e10105b - core::ops::function::FnOnce::call_once<void (*)(),tuple$<> >
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33\library\core\src\ops\function.rs:250
  26:     0x7ff78e0f1b8e - std::sys_common::backtrace::__rust_begin_short_backtrace<void (*)(),tuple$<> >
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33\library\std\src\sys_common\backtrace.rs:154
  27:     0x7ff78e0f1b8e - std::sys_common::backtrace::__rust_begin_short_backtrace<void (*)(),tuple$<> >
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33\library\std\src\sys_common\backtrace.rs:154
  28:     0x7ff78e0f8a71 - std::rt::lang_start::closure$0<tuple$<> >
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33\library\std\src\rt.rs:166
  29:     0x7ff78e452878 - std::rt::lang_start_internal::closure$2
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\rt.rs:148
  30:     0x7ff78e452878 - std::panicking::try::do_call
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\panicking.rs:502
  31:     0x7ff78e452878 - std::panicking::try
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\panicking.rs:466
  32:     0x7ff78e452878 - std::panic::catch_unwind
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\panic.rs:142
  33:     0x7ff78e452878 - std::rt::lang_start_internal
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library\std\src\rt.rs:148
  34:     0x7ff78e0f8a4a - std::rt::lang_start<tuple$<> >
                               at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33\library\std\src\rt.rs:165
  35:     0x7ff78e0f8b39 - main
  36:     0x7ff78eac26a0 - invoke_main
                               at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78
  37:     0x7ff78eac26a0 - __scrt_common_main_seh
                               at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
  38:     0x7ff915f17344 - BaseThreadInitThunk
  39:     0x7ff9161226b1 - RtlUserThreadStart
error: process didn't exit successfully: `C:\.cargo\debug\slint-repro.exe` (exit code: 101)

cargo run --release: All good, the application launches in fullscreen

@tronical tronical added bug Something isn't working a:renderer-skia Skia Renderer (mS) a:platform-windows Issue specific to Windows (mT,bS) labels Oct 24, 2023
@plule
Copy link
Author

plule commented Oct 24, 2023

For anyone stumbling upon this, a possible workaround is to disable assertions for this renderer:

[profile.dev.package.i-slint-renderer-skia]
debug-assertions = false

@tronical
Copy link
Member

Thanks. That suggests that perhaps the assertion is wrong indeed. Do you see any other problems with assertions disabled?

@plule
Copy link
Author

plule commented Oct 24, 2023

None so far.

Maybe the assertion should be about checking that the buffer is large enough, instead of just the right size? I assume the surface render is changed afterward in that context. (I know nothing about rendering, or d3d, so my suggestions have to be taken with a grain of salt :) )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
a:platform-windows Issue specific to Windows (mT,bS) a:renderer-skia Skia Renderer (mS) bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants