Open killown opened 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
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?
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.
Sounds like we're forgetting to disconnect some of the signals when simple-tile unloads.
After clarification on Matrix, we need more information on how to reproduce the issue, if anyone encounters it, let me know how you reproduced.
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
~ ❯❯❯
this crash happened in normal daily usage, last thing before the crash was a dropdown terminal with a python script