WayfireWM / wayfire

A modular and extensible wayland compositor
https://wayfire.org/
MIT License
2.35k stars 174 forks source link

SimpleTile plugin Crashing Wayfire #2416

Open killown opened 1 month ago

killown commented 1 month ago

this crash happened in normal daily usage, last thing before the crash was a dropdown terminal with a python script

AddressSanitizer:DEADLYSIGNAL
=================================================================
==1591==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x5917549bb90a bp 0x7fffcbc85a30 sp 0x7fffcbc84b30 T0)
==1591==The signal is caused by a WRITE memory access.
==1591==Hint: address points to the zero page.
    #0 0x5917549bb90a in wf::print_trace(bool) ../src/debug.cpp:231
    #1 0x7f8f75103a2a in wf::dassert(bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) ../src/api/wayfire/dassert.hpp:27
    #2 0x7f8f75182d13 in wf::tile::view_node_t::view_node_t(nonstd::observer_ptr<wf::toplevel_view_interface_t>) ../plugins/tile/tree.cpp:342
    #3 0x7f8f7512a3d0 in std::__detail::_MakeUniq<wf::tile::view_node_t>::__single_object std::make_unique<wf::tile::view_node_t, nonstd::observer_ptr<wf::toplevel_view_interface_t>&>(nonstd::observer_ptr<wf::toplevel_view_interface_t>&) /usr/include/c++/14.1.1/bits/unique_ptr.h:1076
    #4 0x7f8f7512a3d0 in wf::tile_workspace_set_data_t::setup_view_tiling(nonstd::observer_ptr<wf::toplevel_view_interface_t>, wf::point_t) ../plugins/tile/tile-wset.hpp:244
    #5 0x7f8f751b6089 in wf::tile_workspace_set_data_t::attach_view(nonstd::observer_ptr<wf::toplevel_view_interface_t>, std::optional<wf::point_t>) [clone .isra.0] ../plugins/tile/tile-wset.hpp:250
    #6 0x7f8f751b6797 in wf::tile_output_plugin_t::attach_view(nonstd::observer_ptr<wf::toplevel_view_interface_t>, std::optional<wf::point_t>) [clone .isra.0] ../plugins/tile/tile-plugin.cpp:146
    #7 0x7f8f7517859f in wf::tile_output_plugin_t::on_view_minimized::{lambda(wf::view_minimized_signal*)#1}::operator()(wf::view_minimized_signal*) const ../plugins/tile/tile-plugin.cpp:224
    #8 0x7f8f7517859f in void std::__invoke_impl<void, wf::tile_output_plugin_t::on_view_minimized::{lambda(wf::view_minimized_signal*)#1}&, wf::view_minimized_signal*>(std::__invoke_other, wf::tile_output_plugin_t::on_view_minimized::{lambda(wf::view_minimized_signal*)#1}&, wf::view_minimized_signal*&&) /usr/include/c++/14.1.1/bits/invoke.h:61
    #9 0x7f8f7517859f in std::enable_if<is_invocable_r_v<void, wf::tile_output_plugin_t::on_view_minimized::{lambda(wf::view_minimized_signal*)#1}&, wf::view_minimized_signal*>, void>::type std::__invoke_r<void, wf::tile_output_plugin_t::on_view_minimized::{lambda(wf::view_minimized_signal*)#1}&, wf::view_minimized_signal*>(wf::tile_output_plugin_t::on_view_minimized::{lambda(wf::view_minimized_signal*)#1}&, wf::view_minimized_signal*&&) /usr/include/c++/14.1.1/bits/invoke.h:111
    #10 0x7f8f7517859f in std::_Function_handler<void (wf::view_minimized_signal*), wf::tile_output_plugin_t::on_view_minimized::{lambda(wf::view_minimized_signal*)#1}>::_M_invoke(std::_Any_data const&, wf::view_minimized_signal*&&) /usr/include/c++/14.1.1/bits/std_function.h:290
    #11 0x591754b5981d in std::function<void (void*)>::operator()(void*) const /usr/include/c++/14.1.1/bits/std_function.h:591
    #12 0x591754b5981d in wf::signal::connection_t<wf::view_minimized_signal>::emit(wf::view_minimized_signal*) ../src/api/wayfire/signal-provider.hpp:107
    #13 0x591754b5981d in wf::signal::provider_t::emit<wf::view_minimized_signal>(wf::view_minimized_signal*)::{lambda(wf::signal::connection_base_t*)#1}::operator()(wf::signal::connection_base_t*) const ../src/api/wayfire/signal-provider.hpp:163
    #14 0x591754b5981d in void std::__invoke_impl<void, wf::signal::provider_t::emit<wf::view_minimized_signal>(wf::view_minimized_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(std::__invoke_other, wf::signal::provider_t::emit<wf::view_minimized_signal>(wf::view_minimized_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14.1.1/bits/invoke.h:61
    #15 0x591754b5981d in std::enable_if<is_invocable_r_v<void, wf::signal::provider_t::emit<wf::view_minimized_signal>(wf::view_minimized_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::view_minimized_signal>(wf::view_minimized_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(wf::signal::provider_t::emit<wf::view_minimized_signal>(wf::view_minimized_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14.1.1/bits/invoke.h:111
    #16 0x591754b5981d in std::_Function_handler<void (wf::signal::connection_base_t*&), wf::signal::provider_t::emit<wf::view_minimized_signal>(wf::view_minimized_signal*)::{lambda(wf::signal::connection_base_t*)#1}>::_M_invoke(std::_Any_data const&, wf::signal::connection_base_t*&) /usr/include/c++/14.1.1/bits/std_function.h:290
    #17 0x5917549cd1e7 in std::function<void (wf::signal::connection_base_t*&)>::operator()(wf::signal::connection_base_t*&) const /usr/include/c++/14.1.1/bits/std_function.h:591
    #18 0x5917549cd1e7 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
    #19 0x591754b6a869 in void wf::signal::provider_t::emit<wf::view_minimized_signal>(wf::view_minimized_signal*) ../src/api/wayfire/signal-provider.hpp:159
    #20 0x591754b6a869 in wf::toplevel_view_interface_t::set_minimized(bool) ../src/view/toplevel-view.cpp:245
    #21 0x5917549c541d in wf::window_manager_t::minimize_request(nonstd::observer_ptr<wf::toplevel_view_interface_t>, bool) ../src/core/window-manager.cpp:180
    #22 0x7f8f7c983f31 in std::function<void (nonstd::observer_ptr<wf::toplevel_view_interface_t>, bool)>::operator()(nonstd::observer_ptr<wf::toplevel_view_interface_t>, bool) const /usr/include/c++/14.1.1/bits/std_function.h:591
    #23 0x7f8f7c983f31 in wayfire_wm_actions_t::execute_for_view(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, std::function<void (nonstd::observer_ptr<wf::toplevel_view_interface_t>, bool)>) [clone .isra.0] ../plugins/wm-actions/wm-actions.cpp:436
    #24 0x7f8f7c948499 in wayfire_wm_actions_t::ipc_minimize::{lambda(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#1}::operator()(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&) const ../plugins/wm-actions/wm-actions.cpp:445
    #25 0x7f8f7c948499 in nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> std::__invoke_impl<nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, wayfire_wm_actions_t::ipc_minimize::{lambda(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#1}&, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> >(std::__invoke_other, wayfire_wm_actions_t::ipc_minimize::{lambda(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#1}&, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>&&) /usr/include/c++/14.1.1/bits/invoke.h:61
    #26 0x7f8f7c948499 in std::enable_if<is_invocable_r_v<nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, wayfire_wm_actions_t::ipc_minimize::{lambda(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#1}&, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> >, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> >::type std::__invoke_r<nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, wayfire_wm_actions_t::ipc_minimize::{lambda(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#1}&, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> >(wayfire_wm_actions_t::ipc_minimize::{lambda(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#1}&, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>&&) /usr/include/c++/14.1.1/bits/invoke.h:116
    #27 0x7f8f7c948499 in std::_Function_handler<nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> (nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>), wayfire_wm_actions_t::ipc_minimize::{lambda(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#1}>::_M_invoke(std::_Any_data const&, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>&&) /usr/include/c++/14.1.1/bits/std_function.h:291
    #28 0x7f8f80fa51ad in std::function<nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> (nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)>::operator()(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>) const /usr/include/c++/14.1.1/bits/std_function.h:591
    #29 0x7f8f80fa51ad in wf::ipc::method_repository_t::register_method(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> (nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)>)::{lambda(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, wf::ipc::client_interface_t*)#1}::operator()(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, wf::ipc::client_interface_t*) const ../plugins/ipc/ipc-method-repository.hpp:68
    #30 0x7f8f80fa51ad in nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> std::__invoke_impl<nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, wf::ipc::method_repository_t::register_method(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> (nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)>)::{lambda(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, wf::ipc::client_interface_t*)#1}&, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, wf::ipc::client_interface_t*>(std::__invoke_other, wf::ipc::method_repository_t::register_method(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> (nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)>)::{lambda(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, wf::ipc::client_interface_t*)#1}&, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>&&, wf::ipc::client_interface_t*&&) /usr/include/c++/14.1.1/bits/invoke.h:61
    #31 0x7f8f80fa51ad in std::enable_if<is_invocable_r_v<nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, wf::ipc::method_repository_t::register_method(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> (nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)>)::{lambda(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, wf::ipc::client_interface_t*)#1}&, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, wf::ipc::client_interface_t*>, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> >::type std::__invoke_r<nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, wf::ipc::method_repository_t::register_method(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> (nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)>)::{lambda(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, wf::ipc::client_interface_t*)#1}&, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, wf::ipc::client_interface_t*>(wf::ipc::method_repository_t::register_method(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> (nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)>)::{lambda(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, wf::ipc::client_interface_t*)#1}&, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>&&, wf::ipc::client_interface_t*&&) /usr/include/c++/14.1.1/bits/invoke.h:116
    #32 0x7f8f80fa51ad in std::_Function_handler<nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> (nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, wf::ipc::client_interface_t*), wf::ipc::method_repository_t::register_method(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> (nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>)>)::{lambda(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, wf::ipc::client_interface_t*)#1}>::_M_invoke(std::_Any_data const&, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>&&, wf::ipc::client_interface_t*&&) /usr/include/c++/14.1.1/bits/std_function.h:291
    #33 0x7f8f80324f8f in std::function<nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> (nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, wf::ipc::client_interface_t*)>::operator()(nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, wf::ipc::client_interface_t*) const /usr/include/c++/14.1.1/bits/std_function.h:591
    #34 0x7f8f80324f8f in wf::ipc::method_repository_t::call_method(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, wf::ipc::client_interface_t*) ../plugins/ipc/ipc-method-repository.hpp:89
    #35 0x7f8f80324f8f in wf::ipc::server_t::handle_incoming_message(wf::ipc::client_t*, nlohmann::json_abi_v3_11_3::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_11_3::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>) ../plugins/ipc/ipc.cpp:136
    #36 0x7f8f80327387 in wf::ipc::client_t::handle_fd_incoming(unsigned int) ../plugins/ipc/ipc.cpp:268
    #37 0x7f8f80305c39 in std::function<void (unsigned int)>::operator()(unsigned int) const /usr/include/c++/14.1.1/bits/std_function.h:591
    #38 0x7f8f80305c39 in wl_loop_handle_ipc_client_fd_event(int, unsigned int, void*) ../plugins/ipc/ipc.cpp:143
    #39 0x7f8f93a4a0a1 in wl_event_loop_dispatch (/usr/lib/libwayland-server.so.0+0xa0a1) (BuildId: 915b81a9d6d73724356b2d67e54f4fd5da5249d5)
    #40 0x7f8f93a4c10e in wl_display_run (/usr/lib/libwayland-server.so.0+0xc10e) (BuildId: 915b81a9d6d73724356b2d67e54f4fd5da5249d5)
    #41 0x5917549a1065 in main ../src/main.cpp:448
    #42 0x7f8f92a06e07  (/usr/lib/libc.so.6+0x25e07) (BuildId: 3de7fd3e8d993406afdcb908e63b88f2f4effea9)
    #43 0x7f8f92a06ecb in __libc_start_main (/usr/lib/libc.so.6+0x25ecb) (BuildId: 3de7fd3e8d993406afdcb908e63b88f2f4effea9)
    #44 0x5917549a5c74 in _start (/usr/bin/wayfire+0x101c74) (BuildId: 9f4c19dc60631aeb779c32af33d31866c1778025)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV ../src/debug.cpp:231 in wf::print_trace(bool)
==1591==ABORTING
(EE) failed to read Wayland events: Broken pipe
killown commented 1 month ago

Simpletile was disabled at the time, and the panel I use configures the tiling layout for all visible views, which may have caused the crash. I'm just guessing, as I cannot reproduce the issue since Simpletile has been disabled for a long time and the crash happened randomly.

The script is https://github.com/killown/pywayfire_examples/blob/main/examples/dropdown_terminal.py which is the same from wayctl

using bind KEY_F1 and command_dropdown = sh /home/neo/Scripts/wayfire/drop.sh with content:

#!/bin/bash
if ! pgrep -x alacritty >/dev/null; then
    wayctl --drop alacritty
    wayctl --drop alacritty
fi
wayctl --drop alacritty
ammen99 commented 1 month ago

That would be very weird, because the crash points to simple-tile, but you say the plugin was disabled?? Did you disable it at runtime, or did wayfire start with simple-tile disabled?

killown commented 1 month ago

That would be very weird, because the crash points to simple-tile, but you say the plugin was disabled?? Did you disable it at runtime, or did wayfire start with simple-tile disabled?

I disabled the plugin through WCM, but the crash happened about an hour later. I am sure it was disabled because Alacritty appeared in the center while toggling it. When Simpletile is enabled, the dropdown is tiled.

ammen99 commented 1 month ago

Sounds like we're forgetting to disconnect some of the signals when simple-tile unloads.

ammen99 commented 2 weeks ago

After clarification on Matrix, we need more information on how to reproduce the issue, if anyone encounters it, let me know how you reproduced.

killown commented 2 weeks ago

I am still trying to find a way to reproduce this bug

~ ❯❯❯ wayfire --version 0.9.0-3a55cdd6 (Aug 23 2024) branch makepkg

AddressSanitizer:DEADLYSIGNAL
=================================================================
==269575==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x5e33bbd50a1a bp 0x7fff35774650 sp 0x7fff35773750 T0)
==269575==The signal is caused by a WRITE memory access.
==269575==Hint: address points to the zero page.
    #0 0x5e33bbd50a1a in wf::print_trace(bool) ../src/debug.cpp:231
    #1 0x7f0a81efd75a in wf::dassert(bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) ../src/api/wayfire/dassert.hpp:27
    #2 0x7f0a81f7d2e3 in wf::tile::view_node_t::view_node_t(nonstd::observer_ptr<wf::toplevel_view_interface_t>) ../plugins/tile/tree.cpp:342
    #3 0x7f0a81f24850 in std::__detail::_MakeUniq<wf::tile::view_node_t>::__single_object std::make_unique<wf::tile::view_node_t, nonstd::observer_ptr<wf::toplevel_view_interface_t>&>(nonstd::observer_ptr<wf::toplevel_view_interface_t>&) /usr/include/c++/14.2.1/bits/unique_ptr.h:1076
    #4 0x7f0a81f24850 in wf::tile_workspace_set_data_t::setup_view_tiling(nonstd::observer_ptr<wf::toplevel_view_interface_t>, wf::point_t) ../plugins/tile/tile-wset.hpp:244
    #5 0x7f0a81fb0419 in wf::tile_workspace_set_data_t::attach_view(nonstd::observer_ptr<wf::toplevel_view_interface_t>, std::optional<wf::point_t>) [clone .isra.0] ../plugins/tile/tile-wset.hpp:250
    #6 0x7f0a81fb0b27 in wf::tile_output_plugin_t::attach_view(nonstd::observer_ptr<wf::toplevel_view_interface_t>, std::optional<wf::point_t>) [clone .isra.0] ../plugins/tile/tile-plugin.cpp:146
    #7 0x7f0a81f62da1 in wf::tile_output_plugin_t::on_view_mapped::{lambda(wf::view_mapped_signal*)#1}::operator()(wf::view_mapped_signal*) const ../plugins/tile/tile-plugin.cpp:166
    #8 0x7f0a81f62da1 in void std::__invoke_impl<void, wf::tile_output_plugin_t::on_view_mapped::{lambda(wf::view_mapped_signal*)#1}&, wf::view_mapped_signal*>(std::__invoke_other, wf::tile_output_plugin_t::on_view_mapped::{lambda(wf::view_mapped_signal*)#1}&, wf::view_mapped_signal*&&) /usr/include/c++/14.2.1/bits/invoke.h:61
    #9 0x7f0a81f62da1 in std::enable_if<is_invocable_r_v<void, wf::tile_output_plugin_t::on_view_mapped::{lambda(wf::view_mapped_signal*)#1}&, wf::view_mapped_signal*>, void>::type std::__invoke_r<void, wf::tile_output_plugin_t::on_view_mapped::{lambda(wf::view_mapped_signal*)#1}&, wf::view_mapped_signal*>(wf::tile_output_plugin_t::on_view_mapped::{lambda(wf::view_mapped_signal*)#1}&, wf::view_mapped_signal*&&) /usr/include/c++/14.2.1/bits/invoke.h:111
    #10 0x7f0a81f62da1 in std::_Function_handler<void (wf::view_mapped_signal*), wf::tile_output_plugin_t::on_view_mapped::{lambda(wf::view_mapped_signal*)#1}>::_M_invoke(std::_Any_data const&, wf::view_mapped_signal*&&) /usr/include/c++/14.2.1/bits/std_function.h:290
    #11 0x5e33bbf1356d in std::function<void (void*)>::operator()(void*) const /usr/include/c++/14.2.1/bits/std_function.h:591
    #12 0x5e33bbf1356d in wf::signal::connection_t<wf::view_mapped_signal>::emit(wf::view_mapped_signal*) ../src/api/wayfire/signal-provider.hpp:107
    #13 0x5e33bbf1356d in wf::signal::provider_t::emit<wf::view_mapped_signal>(wf::view_mapped_signal*)::{lambda(wf::signal::connection_base_t*)#1}::operator()(wf::signal::connection_base_t*) const ../src/api/wayfire/signal-provider.hpp:163
    #14 0x5e33bbf1356d in void std::__invoke_impl<void, wf::signal::provider_t::emit<wf::view_mapped_signal>(wf::view_mapped_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(std::__invoke_other, wf::signal::provider_t::emit<wf::view_mapped_signal>(wf::view_mapped_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14.2.1/bits/invoke.h:61
    #15 0x5e33bbf1356d in std::enable_if<is_invocable_r_v<void, wf::signal::provider_t::emit<wf::view_mapped_signal>(wf::view_mapped_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::view_mapped_signal>(wf::view_mapped_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(wf::signal::provider_t::emit<wf::view_mapped_signal>(wf::view_mapped_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14.2.1/bits/invoke.h:111
    #16 0x5e33bbf1356d in std::_Function_handler<void (wf::signal::connection_base_t*&), wf::signal::provider_t::emit<wf::view_mapped_signal>(wf::view_mapped_signal*)::{lambda(wf::signal::connection_base_t*)#1}>::_M_invoke(std::_Any_data const&, wf::signal::connection_base_t*&) /usr/include/c++/14.2.1/bits/std_function.h:290
    #17 0x5e33bbd622f7 in std::function<void (wf::signal::connection_base_t*&)>::operator()(wf::signal::connection_base_t*&) const /usr/include/c++/14.2.1/bits/std_function.h:591
    #18 0x5e33bbd622f7 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
    #19 0x5e33bbf17fed in void wf::signal::provider_t::emit<wf::view_mapped_signal>(wf::view_mapped_signal*) ../src/api/wayfire/signal-provider.hpp:159
    #20 0x5e33bbf17fed in wf::view_implementation::emit_view_map_signal(nonstd::observer_ptr<wf::view_interface_t>, bool) ../src/view/view-impl.cpp:29
    #21 0x5e33bbf6917f in virtual thunk to wayfire_xwayland_view::emit_view_map() (/usr/bin/wayfire+0x33017f) (BuildId: 8b0756442aae2ab6969f876198257487363f323c)
    #22 0x5e33bbf9aace in wf::xwayland_view_base_t::do_map(wlr_surface*, bool, bool) ../src/view/xwayland/xwayland-view-base.cpp:58
    #23 0x5e33bbf87165 in wayfire_xwayland_view::map(wlr_surface*) ../src/view/xwayland/xwayland-toplevel-view.hpp:375
    #24 0x5e33bbf87165 in wayfire_xwayland_view::handle_toplevel_state_changed(wf::toplevel_state_t) ../src/view/xwayland/xwayland-toplevel-view.hpp:439
    #25 0x5e33bbf87165 in wayfire_xwayland_view::on_toplevel_applied::{lambda(wf::xw::xwayland_toplevel_applied_state_signal*)#1}::operator()(wf::xw::xwayland_toplevel_applied_state_signal*) const ../src/view/xwayland/xwayland-toplevel-view.hpp:161
    #26 0x5e33bbf87165 in void std::__invoke_impl<void, wayfire_xwayland_view::on_toplevel_applied::{lambda(wf::xw::xwayland_toplevel_applied_state_signal*)#1}&, wf::xw::xwayland_toplevel_applied_state_signal*>(std::__invoke_other, wayfire_xwayland_view::on_toplevel_applied::{lambda(wf::xw::xwayland_toplevel_applied_state_signal*)#1}&, wf::xw::xwayland_toplevel_applied_state_signal*&&) /usr/include/c++/14.2.1/bits/invoke.h:61
    #27 0x5e33bbf87165 in std::enable_if<is_invocable_r_v<void, wayfire_xwayland_view::on_toplevel_applied::{lambda(wf::xw::xwayland_toplevel_applied_state_signal*)#1}&, wf::xw::xwayland_toplevel_applied_state_signal*>, void>::type std::__invoke_r<void, wayfire_xwayland_view::on_toplevel_applied::{lambda(wf::xw::xwayland_toplevel_applied_state_signal*)#1}&, wf::xw::xwayland_toplevel_applied_state_signal*>(wayfire_xwayland_view::on_toplevel_applied::{lambda(wf::xw::xwayland_toplevel_applied_state_signal*)#1}&, wf::xw::xwayland_toplevel_applied_state_signal*&&) /usr/include/c++/14.2.1/bits/invoke.h:111
    #28 0x5e33bbf87165 in std::_Function_handler<void (wf::xw::xwayland_toplevel_applied_state_signal*), wayfire_xwayland_view::on_toplevel_applied::{lambda(wf::xw::xwayland_toplevel_applied_state_signal*)#1}>::_M_invoke(std::_Any_data const&, wf::xw::xwayland_toplevel_applied_state_signal*&&) /usr/include/c++/14.2.1/bits/std_function.h:290
    #29 0x5e33bbf9e5ed in std::function<void (void*)>::operator()(void*) const /usr/include/c++/14.2.1/bits/std_function.h:591
    #30 0x5e33bbf9e5ed in wf::signal::connection_t<wf::xw::xwayland_toplevel_applied_state_signal>::emit(wf::xw::xwayland_toplevel_applied_state_signal*) ../src/api/wayfire/signal-provider.hpp:107
    #31 0x5e33bbf9e5ed in wf::signal::provider_t::emit<wf::xw::xwayland_toplevel_applied_state_signal>(wf::xw::xwayland_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
    #32 0x5e33bbf9e5ed in void std::__invoke_impl<void, wf::signal::provider_t::emit<wf::xw::xwayland_toplevel_applied_state_signal>(wf::xw::xwayland_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::xw::xwayland_toplevel_applied_state_signal>(wf::xw::xwayland_toplevel_applied_state_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14.2.1/bits/invoke.h:61
    #33 0x5e33bbf9e5ed in std::enable_if<is_invocable_r_v<void, wf::signal::provider_t::emit<wf::xw::xwayland_toplevel_applied_state_signal>(wf::xw::xwayland_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::xw::xwayland_toplevel_applied_state_signal>(wf::xw::xwayland_toplevel_applied_state_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(wf::signal::provider_t::emit<wf::xw::xwayland_toplevel_applied_state_signal>(wf::xw::xwayland_toplevel_applied_state_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/14.2.1/bits/invoke.h:111
    #34 0x5e33bbf9e5ed in std::_Function_handler<void (wf::signal::connection_base_t*&), wf::signal::provider_t::emit<wf::xw::xwayland_toplevel_applied_state_signal>(wf::xw::xwayland_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.2.1/bits/std_function.h:290
    #35 0x5e33bbd622f7 in std::function<void (wf::signal::connection_base_t*&)>::operator()(wf::signal::connection_base_t*&) const /usr/include/c++/14.2.1/bits/std_function.h:591
    #36 0x5e33bbd622f7 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
    #37 0x5e33bbf9d559 in void wf::signal::provider_t::emit<wf::xw::xwayland_toplevel_applied_state_signal>(wf::xw::xwayland_toplevel_applied_state_signal*) ../src/api/wayfire/signal-provider.hpp:159
    #38 0x5e33bbf9d559 in wf::xw::xwayland_toplevel_t::apply() ../src/view/xwayland/xwayland-toplevel.cpp:202
    #39 0x5e33bbe2c788 in wf::txn::transaction_t::apply(bool) ../src/core/txn/transaction.cpp:82
    #40 0x5e33bbe3ac66 in operator() ../src/core/txn/transaction.cpp:28
    #41 0x5e33bbf3776d in std::function<void (void*)>::operator()(void*) const /usr/include/c++/14.2.1/bits/std_function.h:591
    #42 0x5e33bbf3776d in wf::signal::connection_t<wf::txn::object_ready_signal>::emit(wf::txn::object_ready_signal*) ../src/api/wayfire/signal-provider.hpp:107
    #43 0x5e33bbf3776d 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
    #44 0x5e33bbf3776d 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.2.1/bits/invoke.h:61
    #45 0x5e33bbf3776d 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.2.1/bits/invoke.h:111
    #46 0x5e33bbf3776d 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.2.1/bits/std_function.h:290
    #47 0x5e33bbd622f7 in std::function<void (wf::signal::connection_base_t*&)>::operator()(wf::signal::connection_base_t*&) const /usr/include/c++/14.2.1/bits/std_function.h:591
    #48 0x5e33bbd622f7 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
    #49 0x5e33bbfa3b63 in void wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*) ../src/api/wayfire/signal-provider.hpp:159
    #50 0x5e33bbfa3b63 in wf::txn::emit_object_ready(wf::txn::transaction_object_t*) ../src/api/wayfire/txn/transaction-object.hpp:66
    #51 0x5e33bbfa3b63 in wf::xw::xwayland_toplevel_t::emit_ready() ../src/view/xwayland/xwayland-toplevel.cpp:279
    #52 0x5e33bbf9c89a in wf::xw::xwayland_toplevel_t::emit_ready() ../src/view/xwayland/xwayland-toplevel.cpp:276
    #53 0x5e33bbf9c89a in wf::xw::xwayland_toplevel_t::handle_surface_commit() ../src/view/xwayland/xwayland-toplevel.cpp:230
    #54 0x5e33bbd3b087 in std::function<void (void*)>::operator()(void*) const /usr/include/c++/14.2.1/bits/std_function.h:591
    #55 0x5e33bbd3b087 in wf::wl_listener_wrapper::emit(void*) ../src/wl-listener-wrapper.tpp:57
    #56 0x5e33bbd3b087 in handle_wrapped_listener ../src/wl-listener-wrapper.tpp:10
    #57 0x7f0abace542d in wl_signal_emit_mutable (/usr/lib/libwayland-server.so.0+0x842d) (BuildId: 915b81a9d6d73724356b2d67e54f4fd5da5249d5)
    #58 0x7f0aba5106c9  (/usr/lib/libwlroots.so.12+0x756c9) (BuildId: de2dccf34d17331128d8dcba557a03deb2cfbc6a)
    #59 0x7f0aba0bf595  (/usr/lib/libffi.so.8+0x7595) (BuildId: eecfa567f01d70c2ca4b60a1f7931e5634e41eea)
    #60 0x7f0aba0bc00d  (/usr/lib/libffi.so.8+0x400d) (BuildId: eecfa567f01d70c2ca4b60a1f7931e5634e41eea)
    #61 0x7f0aba0bebd2 in ffi_call (/usr/lib/libffi.so.8+0x6bd2) (BuildId: eecfa567f01d70c2ca4b60a1f7931e5634e41eea)
    #62 0x7f0abace3e44  (/usr/lib/libwayland-server.so.0+0x6e44) (BuildId: 915b81a9d6d73724356b2d67e54f4fd5da5249d5)
    #63 0x7f0abace8c41  (/usr/lib/libwayland-server.so.0+0xbc41) (BuildId: 915b81a9d6d73724356b2d67e54f4fd5da5249d5)
    #64 0x7f0abace70a1 in wl_event_loop_dispatch (/usr/lib/libwayland-server.so.0+0xa0a1) (BuildId: 915b81a9d6d73724356b2d67e54f4fd5da5249d5)
    #65 0x7f0abace910e in wl_display_run (/usr/lib/libwayland-server.so.0+0xc10e) (BuildId: 915b81a9d6d73724356b2d67e54f4fd5da5249d5)
    #66 0x5e33bbd36175 in main ../src/main.cpp:448
    #67 0x7f0ab9c34e07  (/usr/lib/libc.so.6+0x25e07) (BuildId: 98b3d8e0b8c534c769cb871c438b4f8f3a8e4bf3)
    #68 0x7f0ab9c34ecb in __libc_start_main (/usr/lib/libc.so.6+0x25ecb) (BuildId: 98b3d8e0b8c534c769cb871c438b4f8f3a8e4bf3)
    #69 0x5e33bbd3ad84 in _start (/usr/bin/wayfire+0x101d84) (BuildId: 8b0756442aae2ab6969f876198257487363f323c)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV ../src/debug.cpp:231 in wf::print_trace(bool)
==269575==ABORTING
(EE) failed to read Wayland events: Connection reset by peer
~ ❯❯❯