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

Crash in input-method-v1 plugin #2551

Open
ammen99 opened this issue Dec 27, 2024 · 0 comments
Open

Crash in input-method-v1 plugin #2551

ammen99 opened this issue Dec 27, 2024 · 0 comments
Labels
Milestone

Comments

@ammen99
Copy link
Member

ammen99 commented Dec 27, 2024

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.

@ammen99 ammen99 added the bug label Dec 27, 2024
@ammen99 ammen99 added this to the 0.10 milestone Dec 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant