iced-rs/iced

tiny-skia crashes on long texts within a `Row` that also contain other elements

Hyphrio opened this issue · 0 comments

Is there an existing issue for this?

  • I have searched the existing issues.

Is this issue related to iced?

  • My hardware is compatible and my graphics drivers are up-to-date.

What happened?

On long texts without a space, attempting to resize the window cause a crash.

Minimal reproduction:

use iced::{
    widget::{button, column, horizontal_space, row, text},
    Application, Settings, Size,
};

fn main() {
    App::run(Settings {
        window: iced::window::Settings {
            min_size: Some(Size {
                width: 500.0,
                height: 600.0,
            }),
            ..Default::default()
        },
        ..Default::default()
    })
    .unwrap();
}

struct App {}

impl iced::Sandbox for App {
    type Message = ();

    fn new() -> Self {
        Self {}
    }

    fn title(&self) -> String {
        "Iced crash".to_owned()
    }

    fn update(&mut self, _message: Self::Message) {}

    fn view(&self) -> iced::Element<'_, Self::Message> {
        column![
            row![
            text("Autametvoluptatibusaccusamusaspernaturessedolorelaboriosamfacilis.Dictadictaeaeaminimaamaioresetanimi.Estinventoreteneturomnis."),
            horizontal_space(),
            button("abcdef")
        ].padding(8)
        ].padding(20)
        .into()
    }
}

What is the expected behavior?

Text either wraps or splits

Version

crates.io release

Operating System

Windows

Do you have any log output?

Finished dev [unoptimized + debuginfo] target(s) in 0.36s
     Running `C:\Users\Hyphr\.cargo\target\debug\iced_ts_lt_crash.exe`
thread 'main' panicked at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\iced_tiny_skia-0.12.1\src\backend.rs:158:17:
Quad with non-normal width!
stack backtrace:
   0: std::panicking::begin_panic_handler
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library\std\src\panicking.rs:645
   1: core::panicking::panic_fmt
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library\core\src\panicking.rs:72
   2: iced_tiny_skia::backend::Backend::draw_primitive
   3: iced_tiny_skia::backend::Backend::draw<alloc::string::String>
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\iced_tiny_skia-0.12.1\src\backend.rs:103
   4: iced_tiny_skia::window::compositor::present<alloc::string::String>
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\iced_tiny_skia-0.12.1\src\window\compositor.rs:202      
   5: iced_renderer::compositor::impl$0::present::closure$0<alloc::string::String>
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\iced_renderer-0.12.1\src\compositor.rs:118
   6: iced_graphics::renderer::Renderer<iced_tiny_skia::backend::Backend>::with_primitives<iced_tiny_skia::backend::Backend,enum2$<core::result::Result<tuple$<>,iced_graphics::compositor::SurfaceError> >,iced_renderer::compositor::impl$0::present::closure_env$0
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\iced_graphics-0.12.1\src\renderer.rs:56
   7: iced_renderer::compositor::impl$0::present<alloc::string::String>
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\iced_renderer-0.12.1\src\compositor.rs:117
   8: iced_winit::application::run_instance::async_fn$0<iced::application::Instance<iced_ts_lt_crash::App>,iced_futures::backend::null::Executor,enum2$<iced_renderer::compositor::Compositor> >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\iced_winit-0.12.2\src\application.rs:447
   9: iced_winit::application::run::closure$1<iced::application::Instance<iced_ts_lt_crash::App>,iced_futures::backend::null::Executor,enum2$<iced_renderer::compositor::Compositor> >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\iced_winit-0.12.2\src\application.rs:228
  10: iced_winit::application::run::closure$2<iced::application::Instance<iced_ts_lt_crash::App>,iced_futures::backend::null::Executor,enum2$<iced_renderer::compositor::Compositor> >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\iced_winit-0.12.2\src\application.rs:265
  11: winit::platform_impl::platform::event_loop::impl$3::run_on_demand::closure$0<tuple$<>,iced_winit::application::run::closure_env$2<iced::application::Instance<iced_ts_lt_crash::App>,iced_futures::backend::null::Executor,enum2$<iced_renderer::compositor::Co
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\platform_impl\windows\event_loop.rs:236
  12: alloc::boxed::impl$48::call_mut<tuple$<enum2$<winit::event::Event<tuple$<> > > >,dyn$<core::ops::function::FnMut<tuple$<enum2$<winit::event::Event<tuple$<> > > >,assoc$<Output,tuple$<> > > >,alloc::alloc::Global>
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce\library\alloc\src\boxed.rs:2022
  13: winit::platform_impl::platform::event_loop::runner::impl$3::call_event_handler::closure$0<tuple$<> >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\platform_impl\windows\event_loop\runner.rs:250
  14: core::panic::unwind_safe::impl$23::call_once<tuple$<>,winit::platform_impl::platform::event_loop::runner::impl$3::call_event_handler::closure_env$0<tuple$<> > >
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce\library\core\src\panic\unwind_safe.rs:272
  15: std::panicking::try::do_call<core::panic::unwind_safe::AssertUnwindSafe<winit::platform_impl::platform::event_loop::runner::impl$3::call_event_handler::closure_env$0<tuple$<> > >,tuple$<> >
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce\library\std\src\panicking.rs:552
  16: std::panicking::try::do_catch<core::panic::unwind_safe::AssertUnwindSafe<winit::platform_impl::platform::event_loop::thread_event_target_callback::closure_env$0<tuple$<> > >,isize>
  17: std::panicking::try<tuple$<>,core::panic::unwind_safe::AssertUnwindSafe<winit::platform_impl::platform::event_loop::runner::impl$3::call_event_handler::closure_env$0<tuple$<> > > >
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce\library\std\src\panicking.rs:516
  18: std::panic::catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<winit::platform_impl::platform::event_loop::runner::impl$3::call_event_handler::closure_env$0<tuple$<> > >,tuple$<> >
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce\library\std\src\panic.rs:142
  19: winit::platform_impl::platform::event_loop::runner::EventLoopRunner<tuple$<> >::catch_unwind<tuple$<>,tuple$<>,winit::platform_impl::platform::event_loop::runner::impl$3::call_event_handler::closure_env$0<tuple$<> > >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\platform_impl\windows\event_loop\runner.rs:183
  20: winit::platform_impl::platform::event_loop::runner::EventLoopRunner<tuple$<> >::call_event_handler<tuple$<> >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\platform_impl\windows\event_loop\runner.rs:246
  21: winit::platform_impl::platform::event_loop::runner::EventLoopRunner<tuple$<> >::send_event<tuple$<> >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\platform_impl\windows\event_loop\runner.rs:224
  22: winit::platform_impl::platform::event_loop::WindowData<tuple$<> >::send_event<tuple$<> >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\platform_impl\windows\event_loop.rs:112
  23: winit::platform_impl::platform::event_loop::public_window_callback_inner::closure$4<tuple$<> >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\platform_impl\windows\event_loop.rs:1144
  24: core::ops::function::FnOnce::call_once<winit::platform_impl::platform::event_loop::public_window_callback_inner::closure_env$4<tuple$<> >,tuple$<> >
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce\library\core\src\ops\function.rs:250
  25: core::panic::unwind_safe::impl$23::call_once<tuple$<>,winit::platform_impl::platform::event_loop::public_window_callback_inner::closure_env$4<tuple$<> > >
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce\library\core\src\panic\unwind_safe.rs:272
  26: std::panicking::try::do_call<core::panic::unwind_safe::AssertUnwindSafe<winit::platform_impl::platform::event_loop::public_window_callback_inner::closure_env$4<tuple$<> > >,tuple$<> >
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce\library\std\src\panicking.rs:552
  27: std::panicking::try::do_catch<core::panic::unwind_safe::AssertUnwindSafe<winit::platform_impl::platform::event_loop::thread_event_target_callback::closure_env$0<tuple$<> > >,isize>
  28: std::panicking::try<tuple$<>,core::panic::unwind_safe::AssertUnwindSafe<winit::platform_impl::platform::event_loop::public_window_callback_inner::closure_env$4<tuple$<> > > >
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce\library\std\src\panicking.rs:516
  29: std::panic::catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<winit::platform_impl::platform::event_loop::public_window_callback_inner::closure_env$4<tuple$<> > >,tuple$<> >
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce\library\std\src\panic.rs:142
  30: winit::platform_impl::platform::event_loop::runner::EventLoopRunner<tuple$<> >::catch_unwind<tuple$<>,tuple$<>,winit::platform_impl::platform::event_loop::public_window_callback_inner::closure_env$4<tuple$<> > >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\platform_impl\windows\event_loop\runner.rs:183
  31: winit::platform_impl::platform::event_loop::public_window_callback_inner<tuple$<> >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\platform_impl\windows\event_loop.rs:2285
  32: winit::platform_impl::platform::event_loop::public_window_callback<tuple$<> >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\platform_impl\windows\event_loop.rs:983
  33: DispatchMessageW
  34: DispatchMessageW
  35: GetClassLongW
  36: KiUserCallbackDispatcher
  37: NtUserMessageCall
  38: GetDlgCtrlID
  39: GetDlgCtrlID
  40: Ordinal43
  41: GetThemeEnumValue
  42: CloseThemeData
  43: CloseThemeData
  44: GetDlgCtrlID
  45: winit::platform_impl::platform::event_loop::public_window_callback_inner<tuple$<> >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\platform_impl\windows\event_loop.rs:2291
  46: winit::platform_impl::platform::event_loop::public_window_callback<tuple$<> >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\platform_impl\windows\event_loop.rs:983
  47: DispatchMessageW
  48: DispatchMessageW
  49: GetClassLongW
  50: KiUserCallbackDispatcher
  51: NtUserMessageCall
  52: GetDlgCtrlID
  53: GetDlgCtrlID
  54: Ordinal43
  55: GetThemeEnumValue
  56: CloseThemeData
  57: CloseThemeData
  58: GetDlgCtrlID
  59: winit::platform_impl::platform::event_loop::public_window_callback_inner<tuple$<> >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\platform_impl\windows\event_loop.rs:2291
  60: winit::platform_impl::platform::event_loop::public_window_callback<tuple$<> >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\platform_impl\windows\event_loop.rs:983
  61: DispatchMessageW
  62: DispatchMessageW
  63: winit::platform_impl::platform::event_loop::EventLoop<tuple$<> >::dispatch_peeked_messages<tuple$<> >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\platform_impl\windows\event_loop.rs:449
  64: winit::platform_impl::platform::event_loop::EventLoop<tuple$<> >::run_on_demand<tuple$<>,iced_winit::application::run::closure_env$2<iced::application::Instance<iced_ts_lt_crash::App>,iced_futures::backend::null::Executor,enum2$<iced_renderer::compositor:
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\platform_impl\windows\event_loop.rs:247
  65: winit::platform_impl::platform::event_loop::EventLoop<tuple$<> >::run<tuple$<>,iced_winit::application::run::closure_env$2<iced::application::Instance<iced_ts_lt_crash::App>,iced_futures::backend::null::Executor,enum2$<iced_renderer::compositor::Composito
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\platform_impl\windows\event_loop.rs:218
  66: winit::event_loop::EventLoop<tuple$<> >::run<tuple$<>,iced_winit::application::run::closure_env$2<iced::application::Instance<iced_ts_lt_crash::App>,iced_futures::backend::null::Executor,enum2$<iced_renderer::compositor::Compositor> > >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.29.15\src\event_loop.rs:249
  67: iced_winit::application::run<iced::application::Instance<iced_ts_lt_crash::App>,iced_futures::backend::null::Executor,enum2$<iced_renderer::compositor::Compositor> >
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\iced_winit-0.12.2\src\application.rs:253
  68: iced::application::Application::run<iced_ts_lt_crash::App>
             at C:\Users\Hyphr\.cargo\registry\src\index.crates.io-6f17d22bba15001f\iced-0.12.1\src\application.rs:208
  69: iced_ts_lt_crash::main
             at .\src\main.rs:7
  70: core::ops::function::FnOnce::call_once<void (*)(),tuple$<> >
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce\library\core\src\ops\function.rs:250
  71: core::hint::black_box
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce\library\core\src\hint.rs:286
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
error: process didn't exit successfully: `C:\Users\Hyphr\.cargo\target\debug\iced_ts_lt_crash.exe` (exit code: 101)