wayfire icon indicating copy to clipboard operation
wayfire copied to clipboard

SimpleTile plugin Crashing Wayfire

Open killown opened this issue 1 year ago • 6 comments

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 avatar Jul 30 '24 18:07 killown

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

killown avatar Jul 30 '24 19:07 killown

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?

ammen99 avatar Jul 30 '24 19:07 ammen99

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.

killown avatar Jul 30 '24 19:07 killown

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

ammen99 avatar Jul 30 '24 19:07 ammen99

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

ammen99 avatar Aug 23 '24 09:08 ammen99

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
~ ❯❯❯ 

killown avatar Aug 23 '24 15:08 killown

No crashes with #2604 tested simple tile for 10 minutes in fuzz tests

While the crash doesn't directly implicate the JSON library, it's possible that misuse (e.g., accessing invalid or null JSON objects) could lead to crashes with IPC client involved. Switching to yyjson somehow resolved the issue, but I still need to test it in daily usage to confirm if this is indeed the case.

killown avatar Mar 19 '25 16:03 killown