slint-ui / slint

Slint is a declarative GUI toolkit to build native user interfaces for Rust, C++, or JavaScript apps.
https://slint.dev
Other
17.16k stars 582 forks source link

Program crashes when clicking in TextInput #6505

Open zxscn opened 3 hours ago

zxscn commented 3 hours ago
Operating System: macOS 14.4.1
rust version 1.81.0
[build-dependencies]
slint-build = "1.8.0"

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

https://github.com/user-attachments/assets/3a167a10-9f83-41ee-a7f5-0dd62aa792d4

Line 64 in main.rs is

slint::run_event_loop().unwrap();

In Debug mode, the call stack is as follows:

thread 'main' panicked at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/i-slint-core-1.8.0/timers.rs:267:51:
invalid key
stack backtrace:
   0:        0x108a7d198 - std::backtrace_rs::backtrace::libunwind::trace::hbebc8679d47bdc2c
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/../../backtrace/src/backtrace/libunwind.rs:116:5
   1:        0x108a7d198 - std::backtrace_rs::backtrace::trace_unsynchronized::h3a2e9637943241aa
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:        0x108a7d198 - std::sys::backtrace::_print_fmt::he430849680584674
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/sys/backtrace.rs:65:5
   3:        0x108a7d198 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h243268f17d714c7f
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/sys/backtrace.rs:40:26
   4:        0x108a9d1a8 - core::fmt::rt::Argument::fmt::h0d339881c25f3c31
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/fmt/rt.rs:173:76
   5:        0x108a9d1a8 - core::fmt::write::hb3cfb8a30e72d7ff
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/fmt/mod.rs:1182:21
   6:        0x108a7a290 - std::io::Write::write_fmt::hfb2314975de9ecf1
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/io/mod.rs:1827:15
   7:        0x108a7e274 - std::sys::backtrace::BacktraceLock::print::he14461129ccbfef5
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/sys/backtrace.rs:43:9
   8:        0x108a7e274 - std::panicking::default_hook::{{closure}}::h14c7718ccf39d316
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:269:22
   9:        0x108a7de98 - std::panicking::default_hook::hc62e60da3be2f352
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:296:9
  10:        0x108a7ed38 - std::panicking::rust_panic_with_hook::h09e8a656f11e82b2
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:800:13
  11:        0x108469d5c - std::panicking::begin_panic::{{closure}}::h7159804ee6027bf3
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:738:9
  12:        0x10846c4c0 - std::sys::backtrace::__rust_end_short_backtrace::he71e2cf5a7c9067d
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/sys/backtrace.rs:168:18
  13:        0x108ade0a8 - std::panicking::begin_panic::h6e84116d27db10b5
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:737:5
  14:        0x108077708 - <slab::Slab<T> as core::ops::index::IndexMut<usize>>::index_mut::h4832f8204ee93e95
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/slab-0.4.9/src/lib.rs:1220:18
  15:        0x108095ae4 - i_slint_core::timers::TimerList::maybe_activate_timers::{{closure}}::hf063685c08dd66e3
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/i-slint-core-1.8.0/timers.rs:267:51
  16:        0x10807ca10 - std::thread::local::LocalKey<T>::try_with::he0c56b841f4a7bd6
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/thread/local.rs:283:12
  17:        0x10807a7f8 - std::thread::local::LocalKey<T>::with::h69d87a6db9d1c974
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/thread/local.rs:260:9
  18:        0x1080950e0 - i_slint_core::timers::TimerList::maybe_activate_timers::h780d293fc5bd52f4
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/i-slint-core-1.8.0/timers.rs:256:9
  19:        0x10803ffc0 - i_slint_core::platform::update_timers_and_animations::h176371c7983c7df1
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/i-slint-core-1.8.0/platform.rs:236:5
  20:        0x107372300 - <i_slint_backend_winit::event_loop::EventLoopState as winit::application::ApplicationHandler<i_slint_backend_winit::SlintUserEvent>>::new_events::h3cc770decbcbce67
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/i-slint-backend-winit-1.8.0/event_loop.rs:563:9
  21:        0x10736dde0 - <&mut A as winit::application::ApplicationHandler<T>>::new_events::h215d1e5cf65c3121
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/application.rs:230:9
  22:        0x1073727e0 - <i_slint_backend_winit::event_loop::ActiveEventLoopSetterDuringEventProcessing<Handler> as winit::application::ApplicationHandler<Event>>::new_events::{{closure}}::h498aec9abaac5d6f
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/i-slint-backend-winit-1.8.0/event_loop.rs:611:57
  23:        0x107374610 - i_slint_backend_winit::event_loop::CURRENT_WINDOW_TARGET::<impl i_slint_backend_winit::event_loop::CURRENT_WINDOW_TARGET>::set::h5ae9990743628dd6
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/scoped-tls-hkt-0.1.4/src/lib.rs:265:25
  24:        0x107372790 - <i_slint_backend_winit::event_loop::ActiveEventLoopSetterDuringEventProcessing<Handler> as winit::application::ApplicationHandler<Event>>::new_events::h01f632f2b31866eb
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/i-slint-backend-winit-1.8.0/event_loop.rs:611:9
  25:        0x10738bcc4 - winit::event_loop::dispatch_event_for_app::hbe08b94c13e161bf
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/event_loop.rs:641:36
  26:        0x10738bcc4 - winit::platform::run_on_demand::EventLoopExtRunOnDemand::run_app_on_demand::{{closure}}::h001589f6c5ac0b66
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/platform/run_on_demand.rs:76:13
  27:        0x107398150 - winit::platform_impl::macos::event_loop::map_user_event::{{closure}}::h431a7da909a906d5
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/platform_impl/macos/event_loop.rs:174:22
  28:        0x107f97fa8 - <alloc::boxed::Box<F,A> as core::ops::function::FnMut<Args>>::call_mut::h4093331436eac851
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/alloc/src/boxed.rs:2077:9
  29:        0x107f78920 - winit::platform_impl::macos::event_handler::EventHandler::handle_event::h37b3b14d2e137ab7
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/platform_impl/macos/event_handler.rs:125:17
  30:        0x107fba120 - winit::platform_impl::macos::app_state::ApplicationDelegate::handle_event::h30d1727f068d3eae
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/platform_impl/macos/app_state.rs:303:9
  31:        0x107fba5a4 - winit::platform_impl::macos::app_state::ApplicationDelegate::wakeup::hbc28da4837773017
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/platform_impl/macos/app_state.rs:344:9
  32:        0x107f79fdc - winit::platform_impl::macos::observer::control_flow_begin_handler::{{closure}}::h1363a51395a49963
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/platform_impl/macos/observer.rs:62:21
  33:        0x107f79e94 - winit::platform_impl::macos::observer::control_flow_handler::{{closure}}::h7f99acb583175aae
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/platform_impl/macos/observer.rs:46:9
  34:        0x107f99634 - std::panicking::try::do_call::h1e4c9b8a01b73a19
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:557:40
  35:        0x107fb698c - ___rust_try
  36:        0x107fb0818 - std::panicking::try::h8254ed5797b24590
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:521:19
  37:        0x107fb0818 - std::panic::catch_unwind::he01ee8ceafb5ae41
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panic.rs:350:14
  38:        0x107fbbdd8 - winit::platform_impl::macos::event_loop::stop_app_on_panic::h7ec29933d51f82d3
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/platform_impl/macos/event_loop.rs:435:11
  39:        0x107f79c70 - winit::platform_impl::macos::observer::control_flow_handler::h6350803347b86a58
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/platform_impl/macos/observer.rs:44:5
  40:        0x107f79ed0 - winit::platform_impl::macos::observer::control_flow_begin_handler::h8b107a0925d9a520
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/platform_impl/macos/observer.rs:57:9
  41:        0x1890bd254 - <unknown>
  42:        0x1890bd140 - <unknown>
  43:        0x1890bcb14 - <unknown>
  44:        0x1890bbe0c - <unknown>
  45:        0x193857000 - <unknown>
  46:        0x193856e3c - <unknown>
  47:        0x193856b94 - <unknown>
  48:        0x18c914970 - <unknown>
  49:        0x18d106dec - <unknown>
  50:        0x18c907cb8 - <unknown>
  51:        0x107fe58a8 - <() as objc2::encode::EncodeArguments>::__invoke::h99908f97507c119c
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/objc2-0.5.2/src/encode.rs:437:26
  52:        0x107fe35d0 - objc2::runtime::message_receiver::msg_send_primitive::send::h8cb99dffe6db46da
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/objc2-0.5.2/src/runtime/message_receiver.rs:173:18
  53:        0x107fdf1cc - objc2::runtime::message_receiver::MessageReceiver::send_message::ha8c2c89e788f13f6
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/objc2-0.5.2/src/runtime/message_receiver.rs:433:38
  54:        0x107fd0910 - objc2::__macro_helpers::msg_send::MsgSend::send_message::h8b244df360b51e36
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/objc2-0.5.2/src/__macro_helpers/msg_send.rs:27:31
  55:        0x107fd140c - objc2_app_kit::generated::__NSApplication::NSApplication::run::ha63329a704f87db7
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/objc2-0.5.2/src/macros/extern_methods.rs:247:14
  56:        0x107398b98 - winit::platform_impl::macos::event_loop::EventLoop<T>::run_on_demand::{{closure}}::{{closure}}::h619c3d05794fd5ce
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/platform_impl/macos/event_loop.rs:306:26
  57:        0x1073773e8 - objc2::rc::autorelease::autoreleasepool::h85932206e5f3c35e
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/objc2-0.5.2/src/rc/autorelease.rs:438:15
  58:        0x107398ae4 - winit::platform_impl::macos::event_loop::EventLoop<T>::run_on_demand::{{closure}}::h34579757af08cf1a
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/platform_impl/macos/event_loop.rs:292:13
  59:        0x107392058 - winit::platform_impl::macos::event_handler::EventHandler::set::hea228fc7290734d1
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/platform_impl/macos/event_handler.rs:98:9
  60:        0x10736dcbc - winit::platform_impl::macos::app_state::ApplicationDelegate::set_event_handler::hb579333dd092ee4e
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/platform_impl/macos/app_state.rs:172:9
  61:        0x107398a7c - winit::platform_impl::macos::event_loop::EventLoop<T>::run_on_demand::hae06245bb86f4524
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/platform_impl/macos/event_loop.rs:291:9
  62:        0x107358410 - <winit::event_loop::EventLoop<T> as winit::platform::run_on_demand::EventLoopExtRunOnDemand>::run_on_demand::h306e7c27b4cda94d
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/platform/run_on_demand.rs:89:9
  63:        0x10735c800 - winit::platform::run_on_demand::EventLoopExtRunOnDemand::run_app_on_demand::h7f75dea8fb9d8c6b
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/winit-0.30.5/src/platform/run_on_demand.rs:75:9
  64:        0x107372e30 - i_slint_backend_winit::event_loop::EventLoopState::run::h9fe3eb3ddf2a45d2
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/i-slint-backend-winit-1.8.0/event_loop.rs:684:13
  65:        0x10735769c - <i_slint_backend_winit::Backend as i_slint_core::platform::Platform>::run_event_loop::h8be6f6a0fd2d298d
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/i-slint-backend-winit-1.8.0/lib.rs:383:25
  66:        0x10734c3b0 - slint::run_event_loop::{{closure}}::hdac6aa8ea034f9ca
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/slint-1.8.0/lib.rs:239:49
  67:        0x107349ae8 - i_slint_backend_selector::with_platform::{{closure}}::hd6cee1bbf41813c8
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/i-slint-backend-selector-1.8.0/lib.rs:137:31
  68:        0x107348f88 - i_slint_core::context::with_global_context::{{closure}}::h0a1059a07fb03b0d
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/i-slint-core-1.8.0/context.rs:78:25
  69:        0x10734a0b0 - std::thread::local::LocalKey<T>::try_with::he52946e44464bd3d
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/thread/local.rs:283:12
  70:        0x107349de4 - std::thread::local::LocalKey<T>::with::hfc3303b80d983094
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/thread/local.rs:260:9
  71:        0x107348e54 - i_slint_core::context::with_global_context::h0ad5350298b2b00f
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/i-slint-core-1.8.0/context.rs:77:5
  72:        0x107349b20 - i_slint_backend_selector::with_global_context::h7be28ce1621eb4ad
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/i-slint-backend-selector-1.8.0/lib.rs:144:18
  73:        0x107349868 - i_slint_backend_selector::with_platform::hd3eaa3f61dd59082
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/i-slint-backend-selector-1.8.0/lib.rs:137:5
  74:        0x10734c384 - slint::run_event_loop::h0d3b0ac85701d1d8
                               at /Users/zxx/.cargo/registry/src/mirrors.ustc.edu.cn-61ef6e0cd06fb9b8/slint-1.8.0/lib.rs:239:5
  75:        0x1051fd9cc - autoexercise::main::hf173679e1fadba0b
                               at /Users/zxx/repos/workplace/autoexercise/src/main.rs:64:5
  76:        0x1061316d8 - core::ops::function::FnOnce::call_once::hcdd455e99b592bad
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/ops/function.rs:250:5
  77:        0x106a3c1f4 - std::sys::backtrace::__rust_begin_short_backtrace::h16a9c8996ae3b5c5
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/sys/backtrace.rs:152:18
  78:        0x106f1cfcc - std::rt::lang_start::{{closure}}::hb32e070db3a2d09b
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/rt.rs:162:18
  79:        0x108a74af0 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h4f74490c6170ea16
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/core/src/ops/function.rs:284:13
  80:        0x108a74af0 - std::panicking::try::do_call::h2f36d2f1f1af8d28
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:557:40
  81:        0x108a74af0 - std::panicking::try::ha6af9029a7d93c94
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:521:19
  82:        0x108a74af0 - std::panic::catch_unwind::ha4f738ae2ba7c3a4
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panic.rs:350:14
  83:        0x108a74af0 - std::rt::lang_start_internal::{{closure}}::hf216622dc2c733e3
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/rt.rs:141:48
  84:        0x108a74af0 - std::panicking::try::do_call::haa691957db1dd55f
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:557:40
  85:        0x108a74af0 - std::panicking::try::ha0c1a49b9fabc98e
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panicking.rs:521:19
  86:        0x108a74af0 - std::panic::catch_unwind::h68ad032c646bb0ab
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/panic.rs:350:14
  87:        0x108a74af0 - std::rt::lang_start_internal::hdd117cb81a316264
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/rt.rs:141:20
  88:        0x106f1cf98 - std::rt::lang_start::h51d00c5860ff94c7
                               at /rustc/eeb90cda1969383f56a2637cbd3037bdf598841c/library/std/src/rt.rs:161:17
  89:        0x1051fdab4 - _main
tronical commented 3 hours ago

Argh, the timer bug. Same as in https://github.com/slint-ui/slint/issues/6187#issuecomment-2396643371 , but clearly a cross-platform bug as this trace is from macOS.

zxscn commented 3 hours ago

Thank you for your reply. This happens quite often when doing something like the one in the video above. In the program, I have not used the timer, it should be used internally by the library.

tronical commented 2 hours ago

I'm going to try to clean up the timer code a little and add debug assertions. Would you be able to try out a branch of Slint for git, since you're able to reproduce this quite well?

tronical commented 1 hour ago

Could you try this in your Cargo.toml and use a debug build? I added a bunch of assertions that might help us catch the bug.

[patch.crates-io]
slint = { git = "https://github.com/slint-ui/slint", branch = "simon/timer-debug" }
slint-build = { git = "https://github.com/slint-ui/slint", , branch = "simon/timer-debug" }