wayfire
wayfire copied to clipboard
Crash in input-method-v1 plugin
Reproducible with simple-tile, alacritty set to auto-tile and running:
alacritty msg create-window -e /bin/zsh -c "/bin/false"
Stacktrace:
AddressSanitizer:DEADLYSIGNAL
=================================================================
==167203==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7f3ab533ec86 bp 0x7ffd8380e930 sp 0x7ffd8380e920 T0)
==167203==The signal is caused by a READ memory access.
==167203==Hint: address points to the zero page.
#0 0x7f3ab533ec86 in wlr_text_input_v3_send_leave ../types/wlr_text_input_v3.c:39
#1 0x7f3a8709de97 in wayfire_im_text_input_base_t::set_focus_surface(wlr_surface*) ../plugins/protocols/text-input-v1-v3.hpp:24
#2 0x7f3a87021e42 in std::function<void (wayfire_im_text_input_base_t*)>::operator()(wayfire_im_text_input_base_t*) const /usr/include/c++/14/bits/std_function.h:591
#3 0x7f3a87021e42 in wayfire_input_method_v1::for_each_text_input(std::function<void (wayfire_im_text_input_base_t*)>) ../plugins/protocols/input-method-v1.cpp:936
#4 0x7f3a870937aa in wayfire_input_method_v1::on_keyboard_focus_changed::{lambda(wf::keyboard_focus_changed_signal*)#1}::operator()(wf::keyboard_focus_changed_signal*) const ../plugins/protocols/input-method-v1.cpp:577
#5 0xb258c6 in std::function<void (wf::keyboard_focus_changed_signal*)>::operator()(wf::keyboard_focus_changed_signal*) const /usr/include/c++/14/bits/std_function.h:591
#6 0xb258c6 in wf::signal::connection_t<wf::keyboard_focus_changed_signal>::emit(wf::keyboard_focus_changed_signal*) ../src/api/wayfire/signal-provider.hpp:107
#7 0xb258c6 in wf::signal::provider_t::emit<wf::keyboard_focus_changed_signal>(wf::keyboard_focus_changed_signal*)::{lambda(wf::signal::connection_base_t*)#1}::operator()(wf::signal::connection_base_t*) const ../src/api/wayfire/signal-provider.hpp:163
#8 0xb258c6 in void std::__invoke_impl<void, wf::signal::provider_t::emit<wf::keyboard_focus_changed_signal>(wf::keyboard_focus_changed_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(std::__invoke_other, wf::signal::provider_t::emit<wf::keyboard_focus_changed_signal>(wf::keyboard_focus_changed_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/invoke.h:61
#9 0xb258c6 in std::enable_if<is_invocable_r_v<void, wf::signal::provider_t::emit<wf::keyboard_focus_changed_signal>(wf::keyboard_focus_changed_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>, void>::type std::__invoke_r<void, wf::signal::provider_t::emit<wf::keyboard_focus_changed_signal>(wf::keyboard_focus_changed_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(wf::signal::provider_t::emit<wf::keyboard_focus_changed_signal>(wf::keyboard_focus_changed_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/invoke.h:111
#10 0xb258c6 in std::_Function_handler<void (wf::signal::connection_base_t*&), wf::signal::provider_t::emit<wf::keyboard_focus_changed_signal>(wf::keyboard_focus_changed_signal*)::{lambda(wf::signal::connection_base_t*)#1}>::_M_invoke(std::_Any_data const&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/std_function.h:290
#11 0x4bee4c in std::function<void (wf::signal::connection_base_t*&)>::operator()(wf::signal::connection_base_t*&) const /usr/include/c++/14/bits/std_function.h:591
#12 0x4bee4c in wf::safe_list_t<wf::signal::connection_base_t*>::for_each(std::function<void (wf::signal::connection_base_t*&)>) ../src/api/wayfire/nonstd/safe-list.hpp:78
#13 0xb08f4d in void wf::signal::provider_t::emit<wf::keyboard_focus_changed_signal>(wf::keyboard_focus_changed_signal*) ../src/api/wayfire/signal-provider.hpp:159
#14 0xb08f4d in wf::seat_t::impl::set_keyboard_focus(std::shared_ptr<wf::scene::node_t>, wf::keyboard_focus_reason) ../src/core/seat/seat.cpp:533
#15 0xb20a0a in wf::seat_t::refocus() ../src/core/seat/seat.cpp:201
#16 0x6f2326 in std::function<void (wf::scene::root_node_update_signal*)>::operator()(wf::scene::root_node_update_signal*) const /usr/include/c++/14/bits/std_function.h:591
#17 0x6f2326 in wf::signal::connection_t<wf::scene::root_node_update_signal>::emit(wf::scene::root_node_update_signal*) ../src/api/wayfire/signal-provider.hpp:107
#18 0x6f2326 in wf::signal::provider_t::emit<wf::scene::root_node_update_signal>(wf::scene::root_node_update_signal*)::{lambda(wf::signal::connection_base_t*)#1}::operator()(wf::signal::connection_base_t*) const ../src/api/wayfire/signal-provider.hpp:163
#19 0x6f2326 in void std::__invoke_impl<void, wf::signal::provider_t::emit<wf::scene::root_node_update_signal>(wf::scene::root_node_update_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(std::__invoke_other, wf::signal::provider_t::emit<wf::scene::root_node_update_signal>(wf::scene::root_node_update_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/invoke.h:61
#20 0x6f2326 in std::enable_if<is_invocable_r_v<void, wf::signal::provider_t::emit<wf::scene::root_node_update_signal>(wf::scene::root_node_update_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>, void>::type std::__invoke_r<void, wf::signal::provider_t::emit<wf::scene::root_node_update_signal>(wf::scene::root_node_update_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(wf::signal::provider_t::emit<wf::scene::root_node_update_signal>(wf::scene::root_node_update_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/invoke.h:111
#21 0x6f2326 in std::_Function_handler<void (wf::signal::connection_base_t*&), wf::signal::provider_t::emit<wf::scene::root_node_update_signal>(wf::scene::root_node_update_signal*)::{lambda(wf::signal::connection_base_t*)#1}>::_M_invoke(std::_Any_data const&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/std_function.h:290
#22 0x4bee4c in std::function<void (wf::signal::connection_base_t*&)>::operator()(wf::signal::connection_base_t*&) const /usr/include/c++/14/bits/std_function.h:591
#23 0x4bee4c in wf::safe_list_t<wf::signal::connection_base_t*>::for_each(std::function<void (wf::signal::connection_base_t*&)>) ../src/api/wayfire/nonstd/safe-list.hpp:78
#24 0x6e0acd in void wf::signal::provider_t::emit<wf::scene::root_node_update_signal>(wf::scene::root_node_update_signal*) ../src/api/wayfire/signal-provider.hpp:159
#25 0x6e0acd in wf::scene::update(std::shared_ptr<wf::scene::node_t>, unsigned int) ../src/core/scene.cpp:513
#26 0x6e05e8 in wf::scene::update(std::shared_ptr<wf::scene::node_t>, unsigned int) ../src/core/scene.cpp:525
#27 0x6e05e8 in wf::scene::update(std::shared_ptr<wf::scene::node_t>, unsigned int) ../src/core/scene.cpp:525
#28 0x6e05e8 in wf::scene::update(std::shared_ptr<wf::scene::node_t>, unsigned int) ../src/core/scene.cpp:525
#29 0x6e05e8 in wf::scene::update(std::shared_ptr<wf::scene::node_t>, unsigned int) ../src/core/scene.cpp:525
#30 0x6e05e8 in wf::scene::update(std::shared_ptr<wf::scene::node_t>, unsigned int) ../src/core/scene.cpp:525
#31 0x6e05e8 in wf::scene::update(std::shared_ptr<wf::scene::node_t>, unsigned int) ../src/core/scene.cpp:525
#32 0x6e05e8 in wf::scene::update(std::shared_ptr<wf::scene::node_t>, unsigned int) ../src/core/scene.cpp:525
#33 0xbf1bea in wf::view_interface_t::emit_view_unmap() ../src/view/view-impl.cpp:78
#34 0xcb1a07 in wf::xdg_toplevel_view_base_t::unmap() ../src/view/xdg-shell/xdg-toplevel-view.cpp:78
#35 0xca790c in wf::xdg_toplevel_view_t::handle_toplevel_state_changed(wf::toplevel_state_t) ../src/view/xdg-shell/xdg-toplevel-view.cpp:329
#36 0xca8f83 in operator() ../src/view/xdg-shell/xdg-toplevel-view.cpp:178
#37 0xca8f83 in __invoke_impl<void, wf::xdg_toplevel_view_t::xdg_toplevel_view_t(wlr_xdg_toplevel*)::<lambda(wf::xdg_toplevel_applied_state_signal*)>&, wf::xdg_toplevel_applied_state_signal*> /usr/include/c++/14/bits/invoke.h:61
#38 0xca8f83 in __invoke_r<void, wf::xdg_toplevel_view_t::xdg_toplevel_view_t(wlr_xdg_toplevel*)::<lambda(wf::xdg_toplevel_applied_state_signal*)>&, wf::xdg_toplevel_applied_state_signal*> /usr/include/c++/14/bits/invoke.h:111
#39 0xca8f83 in _M_invoke /usr/include/c++/14/bits/std_function.h:290
#40 0xc85186 in std::function<void (wf::xdg_toplevel_applied_state_signal*)>::operator()(wf::xdg_toplevel_applied_state_signal*) const /usr/include/c++/14/bits/std_function.h:591
#41 0xc85186 in wf::signal::connection_t<wf::xdg_toplevel_applied_state_signal>::emit(wf::xdg_toplevel_applied_state_signal*) ../src/api/wayfire/signal-provider.hpp:107
#42 0xc85186 in wf::signal::provider_t::emit<wf::xdg_toplevel_applied_state_signal>(wf::xdg_toplevel_applied_state_signal*)::{lambda(wf::signal::connection_base_t*)#1}::operator()(wf::signal::connection_base_t*) const ../src/api/wayfire/signal-provider.hpp:163
#43 0xc85186 in void std::__invoke_impl<void, wf::signal::provider_t::emit<wf::xdg_toplevel_applied_state_signal>(wf::xdg_toplevel_applied_state_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(std::__invoke_other, wf::signal::provider_t::emit<wf::xdg_toplevel_applied_state_signal>(wf::xdg_toplevel_applied_state_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/invoke.h:61
#44 0xc85186 in std::enable_if<is_invocable_r_v<void, wf::signal::provider_t::emit<wf::xdg_toplevel_applied_state_signal>(wf::xdg_toplevel_applied_state_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>, void>::type std::__invoke_r<void, wf::signal::provider_t::emit<wf::xdg_toplevel_applied_state_signal>(wf::xdg_toplevel_applied_state_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(wf::signal::provider_t::emit<wf::xdg_toplevel_applied_state_signal>(wf::xdg_toplevel_applied_state_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/invoke.h:111
#45 0xc85186 in std::_Function_handler<void (wf::signal::connection_base_t*&), wf::signal::provider_t::emit<wf::xdg_toplevel_applied_state_signal>(wf::xdg_toplevel_applied_state_signal*)::{lambda(wf::signal::connection_base_t*)#1}>::_M_invoke(std::_Any_data const&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/std_function.h:290
#46 0x4bee4c in std::function<void (wf::signal::connection_base_t*&)>::operator()(wf::signal::connection_base_t*&) const /usr/include/c++/14/bits/std_function.h:591
#47 0x4bee4c in wf::safe_list_t<wf::signal::connection_base_t*>::for_each(std::function<void (wf::signal::connection_base_t*&)>) ../src/api/wayfire/nonstd/safe-list.hpp:78
#48 0xc76247 in void wf::signal::provider_t::emit<wf::xdg_toplevel_applied_state_signal>(wf::xdg_toplevel_applied_state_signal*) ../src/api/wayfire/signal-provider.hpp:159
#49 0xc76247 in wf::xdg_toplevel_t::apply() ../src/view/xdg-shell/xdg-toplevel.cpp:142
#50 0x7cdd55 in wf::txn::transaction_t::apply(bool) ../src/core/txn/transaction.cpp:82
#51 0x7d56fa in operator() ../src/core/txn/transaction.cpp:28
#52 0x7d56fa in __invoke_impl<void, wf::txn::transaction_t::transaction_t(uint64_t, timer_setter_t)::<lambda(wf::txn::object_ready_signal*)>&, wf::txn::object_ready_signal*> /usr/include/c++/14/bits/invoke.h:61
#53 0x7d56fa in __invoke_r<void, wf::txn::transaction_t::transaction_t(uint64_t, timer_setter_t)::<lambda(wf::txn::object_ready_signal*)>&, wf::txn::object_ready_signal*> /usr/include/c++/14/bits/invoke.h:111
#54 0x7d56fa in _M_invoke /usr/include/c++/14/bits/std_function.h:290
#55 0xc858a6 in std::function<void (wf::txn::object_ready_signal*)>::operator()(wf::txn::object_ready_signal*) const /usr/include/c++/14/bits/std_function.h:591
#56 0xc858a6 in wf::signal::connection_t<wf::txn::object_ready_signal>::emit(wf::txn::object_ready_signal*) ../src/api/wayfire/signal-provider.hpp:107
#57 0xc858a6 in wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*)::{lambda(wf::signal::connection_base_t*)#1}::operator()(wf::signal::connection_base_t*) const ../src/api/wayfire/signal-provider.hpp:163
#58 0xc858a6 in void std::__invoke_impl<void, wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(std::__invoke_other, wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/invoke.h:61
#59 0xc858a6 in std::enable_if<is_invocable_r_v<void, wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>, void>::type std::__invoke_r<void, wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/invoke.h:111
#60 0xc858a6 in std::_Function_handler<void (wf::signal::connection_base_t*&), wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*)::{lambda(wf::signal::connection_base_t*)#1}>::_M_invoke(std::_Any_data const&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/std_function.h:290
#61 0x4bee4c in std::function<void (wf::signal::connection_base_t*&)>::operator()(wf::signal::connection_base_t*&) const /usr/include/c++/14/bits/std_function.h:591
#62 0x4bee4c in wf::safe_list_t<wf::signal::connection_base_t*>::for_each(std::function<void (wf::signal::connection_base_t*&)>) ../src/api/wayfire/nonstd/safe-list.hpp:78
#63 0xc73c80 in void wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*) ../src/api/wayfire/signal-provider.hpp:159
#64 0xc73c80 in wf::txn::emit_object_ready(wf::txn::transaction_object_t*) ../src/api/wayfire/txn/transaction-object.hpp:66
#65 0xc73c80 in wf::xdg_toplevel_t::emit_ready() ../src/view/xdg-shell/xdg-toplevel.cpp:243
#66 0xc828ed in wf::xdg_toplevel_t::commit() ../src/view/xdg-shell/xdg-toplevel.cpp:105
#67 0x7d034a in wf::txn::transaction_t::commit() ../src/core/txn/transaction.cpp:61
#68 0x81e14f in wf::txn::transaction_manager_t::impl::do_commit(std::unique_ptr<wf::txn::transaction_t, std::default_delete<wf::txn::transaction_t> >) ../src/core/txn/transaction-manager-impl.hpp:109
#69 0x81e14f in wf::txn::transaction_manager_t::impl::consider_commit() ../src/core/txn/transaction-manager-impl.hpp:86
#70 0x826016 in wf::txn::transaction_manager_t::impl::on_tx_apply::{lambda(wf::txn::transaction_applied_signal*)#1}::operator()(wf::txn::transaction_applied_signal*) const ../src/core/txn/transaction-manager-impl.hpp:130
#71 0x7d67f6 in std::function<void (wf::txn::transaction_applied_signal*)>::operator()(wf::txn::transaction_applied_signal*) const /usr/include/c++/14/bits/std_function.h:591
#72 0x7d67f6 in wf::signal::connection_t<wf::txn::transaction_applied_signal>::emit(wf::txn::transaction_applied_signal*) ../src/api/wayfire/signal-provider.hpp:107
#73 0x7d67f6 in wf::signal::provider_t::emit<wf::txn::transaction_applied_signal>(wf::txn::transaction_applied_signal*)::{lambda(wf::signal::connection_base_t*)#1}::operator()(wf::signal::connection_base_t*) const ../src/api/wayfire/signal-provider.hpp:163
#74 0x7d67f6 in void std::__invoke_impl<void, wf::signal::provider_t::emit<wf::txn::transaction_applied_signal>(wf::txn::transaction_applied_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(std::__invoke_other, wf::signal::provider_t::emit<wf::txn::transaction_applied_signal>(wf::txn::transaction_applied_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/invoke.h:61
#75 0x7d67f6 in std::enable_if<is_invocable_r_v<void, wf::signal::provider_t::emit<wf::txn::transaction_applied_signal>(wf::txn::transaction_applied_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>, void>::type std::__invoke_r<void, wf::signal::provider_t::emit<wf::txn::transaction_applied_signal>(wf::txn::transaction_applied_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(wf::signal::provider_t::emit<wf::txn::transaction_applied_signal>(wf::txn::transaction_applied_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/invoke.h:111
#76 0x7d67f6 in std::_Function_handler<void (wf::signal::connection_base_t*&), wf::signal::provider_t::emit<wf::txn::transaction_applied_signal>(wf::txn::transaction_applied_signal*)::{lambda(wf::signal::connection_base_t*)#1}>::_M_invoke(std::_Any_data const&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/std_function.h:290
#77 0x4bee4c in std::function<void (wf::signal::connection_base_t*&)>::operator()(wf::signal::connection_base_t*&) const /usr/include/c++/14/bits/std_function.h:591
#78 0x4bee4c in wf::safe_list_t<wf::signal::connection_base_t*>::for_each(std::function<void (wf::signal::connection_base_t*&)>) ../src/api/wayfire/nonstd/safe-list.hpp:78
#79 0x7ce056 in void wf::signal::provider_t::emit<wf::txn::transaction_applied_signal>(wf::txn::transaction_applied_signal*) ../src/api/wayfire/signal-provider.hpp:159
#80 0x7ce056 in wf::txn::transaction_t::apply(bool) ../src/core/txn/transaction.cpp:88
#81 0x7d56fa in operator() ../src/core/txn/transaction.cpp:28
#82 0x7d56fa in __invoke_impl<void, wf::txn::transaction_t::transaction_t(uint64_t, timer_setter_t)::<lambda(wf::txn::object_ready_signal*)>&, wf::txn::object_ready_signal*> /usr/include/c++/14/bits/invoke.h:61
#83 0x7d56fa in __invoke_r<void, wf::txn::transaction_t::transaction_t(uint64_t, timer_setter_t)::<lambda(wf::txn::object_ready_signal*)>&, wf::txn::object_ready_signal*> /usr/include/c++/14/bits/invoke.h:111
#84 0x7d56fa in _M_invoke /usr/include/c++/14/bits/std_function.h:290
#85 0xc858a6 in std::function<void (wf::txn::object_ready_signal*)>::operator()(wf::txn::object_ready_signal*) const /usr/include/c++/14/bits/std_function.h:591
#86 0xc858a6 in wf::signal::connection_t<wf::txn::object_ready_signal>::emit(wf::txn::object_ready_signal*) ../src/api/wayfire/signal-provider.hpp:107
#87 0xc858a6 in wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*)::{lambda(wf::signal::connection_base_t*)#1}::operator()(wf::signal::connection_base_t*) const ../src/api/wayfire/signal-provider.hpp:163
#88 0xc858a6 in void std::__invoke_impl<void, wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(std::__invoke_other, wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/invoke.h:61
#89 0xc858a6 in std::enable_if<is_invocable_r_v<void, wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>, void>::type std::__invoke_r<void, wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/invoke.h:111
#90 0xc858a6 in std::_Function_handler<void (wf::signal::connection_base_t*&), wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*)::{lambda(wf::signal::connection_base_t*)#1}>::_M_invoke(std::_Any_data const&, wf::signal::connection_base_t*&) /usr/include/c++/14/bits/std_function.h:290
#91 0x4bee4c in std::function<void (wf::signal::connection_base_t*&)>::operator()(wf::signal::connection_base_t*&) const /usr/include/c++/14/bits/std_function.h:591
#92 0x4bee4c in wf::safe_list_t<wf::signal::connection_base_t*>::for_each(std::function<void (wf::signal::connection_base_t*&)>) ../src/api/wayfire/nonstd/safe-list.hpp:78
#93 0xc73c80 in void wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*) ../src/api/wayfire/signal-provider.hpp:159
#94 0xc73c80 in wf::txn::emit_object_ready(wf::txn::transaction_object_t*) ../src/api/wayfire/txn/transaction-object.hpp:66
#95 0xc73c80 in wf::xdg_toplevel_t::emit_ready() ../src/view/xdg-shell/xdg-toplevel.cpp:243
#96 0xc7a0c0 in wf::xdg_toplevel_t::handle_surface_commit() ../src/view/xdg-shell/xdg-toplevel.cpp:170
#97 0x485266 in std::function<void (void*)>::operator()(void*) const /usr/include/c++/14/bits/std_function.h:591
#98 0x485266 in wf::wl_listener_wrapper::emit(void*) ../src/wl-listener-wrapper.tpp:57
#99 0x7f3ab620706b in wl_signal_emit_mutable (/lib64/libwayland-server.so.0+0x806b) (BuildId: 169690a28473ea9dca11fbef45320991db6ab848)
#100 0x7f3ab5319ab3 in surface_commit_state ../types/wlr_compositor.c:502
#101 0x7f3ab5319b69 in surface_handle_commit ../types/wlr_compositor.c:521
#102 0x7f3ab5923055 in ffi_call_unix64 (/lib64/libffi.so.8+0x9055) (BuildId: 29a050363f92ea79406ecffcf83087d713d2da31)
#103 0x7f3ab591e74c in ffi_call_int.lto_priv.0 (/lib64/libffi.so.8+0x474c) (BuildId: 29a050363f92ea79406ecffcf83087d713d2da31)
#104 0x7f3ab592164d in ffi_call (/lib64/libffi.so.8+0x764d) (BuildId: 29a050363f92ea79406ecffcf83087d713d2da31)
#105 0x7f3ab6205b22 in wl_closure_invoke.constprop.0 (/lib64/libwayland-server.so.0+0x6b22) (BuildId: 169690a28473ea9dca11fbef45320991db6ab848)
#106 0x7f3ab620a831 in wl_client_connection_data (/lib64/libwayland-server.so.0+0xb831) (BuildId: 169690a28473ea9dca11fbef45320991db6ab848)
#107 0x7f3ab6208c91 in wl_event_loop_dispatch (/lib64/libwayland-server.so.0+0x9c91) (BuildId: 169690a28473ea9dca11fbef45320991db6ab848)
#108 0x7f3ab620acf4 in wl_display_run (/lib64/libwayland-server.so.0+0xbcf4) (BuildId: 169690a28473ea9dca11fbef45320991db6ab848)
#109 0x430dcd in main ../src/main.cpp:454
#110 0x7f3ab440f247 in __libc_start_call_main (/lib64/libc.so.6+0x3247) (BuildId: b6c381bfdcb5e08ea82c1c39cf16580181fb6cfc)
#111 0x7f3ab440f30a in __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x330a) (BuildId: b6c381bfdcb5e08ea82c1c39cf16580181fb6cfc)
#112 0x435b34 in _start (/usr/bin/wayfire+0x435b34) (BuildId: ce4851d28279ce8ecfbc4351d378d169fc09a3ce)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV ../types/wlr_text_input_v3.c:39 in wlr_text_input_v3_send_leave
==167203==ABORTING
(EE) failed to read Wayland events: Broken pipe
Most probably caused by the fact that the view gets stuck in a random transaction while it is destroyed, which delays the focus change and we get a stale wlr_surface as a focus.