wayfire
wayfire copied to clipboard
Random Crash
steps to reproduce: 1 - two monitors, left monitor with no panels, no widgets, open some windows there the activate then scale plugin and let activated
2 - on the right monitor open a window drag it, move the the left monitor and drag it to the top and it will maximize while the activated scale will stays behind
3 - do not click anywhere, just by using the follow focus, let it focus in the maximized window, then toggle the scale again, this will crash the compositor
AddressSanitizer:DEADLYSIGNAL
=================================================================
==62206==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000080 (pc 0x798749d881cb bp 0x7ffd3ca87fb0 sp 0x7ffd3ca86860 T0)
==62206==The signal is caused by a READ memory access.
==62206==Hint: address points to the zero page.
#0 0x798749d881cb in wayfire_scale::layout_slots(std::vector<nonstd::observer_ptr<wf::toplevel_view_interface_t>, std::allocator<nonstd::observer_ptr<wf::toplevel_view_interface_t> > >) ../plugins/scale/scale.cpp:969
#1 0x798749dd219e in wayfire_scale::view_geometry_changed::{lambda(wf::view_geometry_changed_signal*)#1}::operator()(wf::view_geometry_changed_signal*) const ../plugins/scale/scale.cpp:1207
#2 0x798749dd219e in void std::__invoke_impl<void, wayfire_scale::view_geometry_changed::{lambda(wf::view_geometry_changed_signal*)#1}&, wf::view_geometry_changed_signal*>(std::__invoke_other, wayfire_scale::view_geometry_changed::{lambda(wf::view_geometry_changed_signal*)#1}&, wf::view_geometry_changed_signal*&&) /usr/include/c++/13.2.1/bits/invoke.h:61
#3 0x798749dd219e in std::enable_if<is_invocable_r_v<void, wayfire_scale::view_geometry_changed::{lambda(wf::view_geometry_changed_signal*)#1}&, wf::view_geometry_changed_signal*>, void>::type std::__invoke_r<void, wayfire_scale::view_geometry_changed::{lambda(wf::view_geometry_changed_signal*)#1}&, wf::view_geometry_changed_signal*>(wayfire_scale::view_geometry_changed::{lambda(wf::view_geometry_changed_signal*)#1}&, wf::view_geometry_changed_signal*&&) /usr/include/c++/13.2.1/bits/invoke.h:111
#4 0x798749dd219e in std::_Function_handler<void (wf::view_geometry_changed_signal*), wayfire_scale::view_geometry_changed::{lambda(wf::view_geometry_changed_signal*)#1}>::_M_invoke(std::_Any_data const&, wf::view_geometry_changed_signal*&&) /usr/include/c++/13.2.1/bits/std_function.h:290
#5 0x55631886520e in std::function<void (void*)>::operator()(void*) const /usr/include/c++/13.2.1/bits/std_function.h:591
#6 0x55631886520e in wf::signal::connection_t<wf::view_geometry_changed_signal>::emit(wf::view_geometry_changed_signal*) ../src/api/wayfire/signal-provider.hpp:107
#7 0x55631886520e in wf::signal::provider_t::emit<wf::view_geometry_changed_signal>(wf::view_geometry_changed_signal*)::{lambda(wf::signal::connection_base_t*)#1}::operator()(wf::signal::connection_base_t*) const ../src/api/wayfire/signal-provider.hpp:163
#8 0x55631886520e in void std::__invoke_impl<void, wf::signal::provider_t::emit<wf::view_geometry_changed_signal>(wf::view_geometry_changed_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(std::__invoke_other, wf::signal::provider_t::emit<wf::view_geometry_changed_signal>(wf::view_geometry_changed_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/13.2.1/bits/invoke.h:61
#9 0x55631886520e in std::enable_if<is_invocable_r_v<void, wf::signal::provider_t::emit<wf::view_geometry_changed_signal>(wf::view_geometry_changed_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>, void>::type std::__invoke_r<void, wf::signal::provider_t::emit<wf::view_geometry_changed_signal>(wf::view_geometry_changed_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(wf::signal::provider_t::emit<wf::view_geometry_changed_signal>(wf::view_geometry_changed_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/13.2.1/bits/invoke.h:111
#10 0x55631886520e in std::_Function_handler<void (wf::signal::connection_base_t*&), wf::signal::provider_t::emit<wf::view_geometry_changed_signal>(wf::view_geometry_changed_signal*)::{lambda(wf::signal::connection_base_t*)#1}>::_M_invoke(std::_Any_data const&, wf::signal::connection_base_t*&) /usr/include/c++/13.2.1/bits/std_function.h:290
#11 0x5563186beb77 in std::function<void (wf::signal::connection_base_t*&)>::operator()(wf::signal::connection_base_t*&) const /usr/include/c++/13.2.1/bits/std_function.h:591
#12 0x5563186beb77 in wf::safe_list_t<wf::signal::connection_base_t*>::for_each(std::function<void (wf::signal::connection_base_t*&)>) ../src/api/wayfire/nonstd/safe-list.hpp:78
#13 0x55631884c33d in void wf::signal::provider_t::emit<wf::view_geometry_changed_signal>(wf::view_geometry_changed_signal*) ../src/api/wayfire/signal-provider.hpp:159
#14 0x55631884c33d in wf::view_implementation::emit_geometry_changed_signal(nonstd::observer_ptr<wf::toplevel_view_interface_t>, wlr_box) ../src/view/view-impl.cpp:45
#15 0x55631884ede3 in wf::view_implementation::emit_toplevel_state_change_signals(nonstd::observer_ptr<wf::toplevel_view_interface_t>, wf::toplevel_state_t const&) ../src/view/view-impl.cpp:112
#16 0x5563188903f3 in wf::xdg_toplevel_view_t::handle_toplevel_state_changed(wf::toplevel_state_t) ../src/view/xdg-shell/xdg-toplevel-view.cpp:324
#17 0x5563188909a5 in operator() ../src/view/xdg-shell/xdg-toplevel-view.cpp:173
#18 0x5563188909a5 in __invoke_impl<void, wf::xdg_toplevel_view_t::xdg_toplevel_view_t(wlr_xdg_toplevel*)::<lambda(wf::xdg_toplevel_applied_state_signal*)>&, wf::xdg_toplevel_applied_state_signal*> /usr/include/c++/13.2.1/bits/invoke.h:61
#19 0x5563188909a5 in __invoke_r<void, wf::xdg_toplevel_view_t::xdg_toplevel_view_t(wlr_xdg_toplevel*)::<lambda(wf::xdg_toplevel_applied_state_signal*)>&, wf::xdg_toplevel_applied_state_signal*> /usr/include/c++/13.2.1/bits/invoke.h:111
#20 0x5563188909a5 in _M_invoke /usr/include/c++/13.2.1/bits/std_function.h:290
#21 0x55631886649e in std::function<void (void*)>::operator()(void*) const /usr/include/c++/13.2.1/bits/std_function.h:591
#22 0x55631886649e in wf::signal::connection_t<wf::xdg_toplevel_applied_state_signal>::emit(wf::xdg_toplevel_applied_state_signal*) ../src/api/wayfire/signal-provider.hpp:107
#23 0x55631886649e in wf::signal::provider_t::emit<wf::xdg_toplevel_applied_state_signal>(wf::xdg_toplevel_applied_state_signal*)::{lambda(wf::signal::connection_base_t*)#1}::operator()(wf::signal::connection_base_t*) const ../src/api/wayfire/signal-provider.hpp:163
#24 0x55631886649e in void std::__invoke_impl<void, wf::signal::provider_t::emit<wf::xdg_toplevel_applied_state_signal>(wf::xdg_toplevel_applied_state_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(std::__invoke_other, wf::signal::provider_t::emit<wf::xdg_toplevel_applied_state_signal>(wf::xdg_toplevel_applied_state_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/13.2.1/bits/invoke.h:61
#25 0x55631886649e in std::enable_if<is_invocable_r_v<void, wf::signal::provider_t::emit<wf::xdg_toplevel_applied_state_signal>(wf::xdg_toplevel_applied_state_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>, void>::type std::__invoke_r<void, wf::signal::provider_t::emit<wf::xdg_toplevel_applied_state_signal>(wf::xdg_toplevel_applied_state_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(wf::signal::provider_t::emit<wf::xdg_toplevel_applied_state_signal>(wf::xdg_toplevel_applied_state_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/13.2.1/bits/invoke.h:111
#26 0x55631886649e in std::_Function_handler<void (wf::signal::connection_base_t*&), wf::signal::provider_t::emit<wf::xdg_toplevel_applied_state_signal>(wf::xdg_toplevel_applied_state_signal*)::{lambda(wf::signal::connection_base_t*)#1}>::_M_invoke(std::_Any_data const&, wf::signal::connection_base_t*&) /usr/include/c++/13.2.1/bits/std_function.h:290
#27 0x5563186beb77 in std::function<void (wf::signal::connection_base_t*&)>::operator()(wf::signal::connection_base_t*&) const /usr/include/c++/13.2.1/bits/std_function.h:591
#28 0x5563186beb77 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
#29 0x5563188823d5 in void wf::signal::provider_t::emit<wf::xdg_toplevel_applied_state_signal>(wf::xdg_toplevel_applied_state_signal*) ../src/api/wayfire/signal-provider.hpp:159
#30 0x5563188823d5 in wf::xdg_toplevel_t::apply() ../src/view/xdg-shell/xdg-toplevel.cpp:137
#31 0x5563187922a8 in wf::txn::transaction_t::apply(bool) ../src/core/txn/transaction.cpp:71
#32 0x55631879586e in operator() ../src/core/txn/transaction.cpp:28
#33 0x55631886628e in std::function<void (void*)>::operator()(void*) const /usr/include/c++/13.2.1/bits/std_function.h:591
#34 0x55631886628e in wf::signal::connection_t<wf::txn::object_ready_signal>::emit(wf::txn::object_ready_signal*) ../src/api/wayfire/signal-provider.hpp:107
#35 0x55631886628e 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
#36 0x55631886628e 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++/13.2.1/bits/invoke.h:61
#37 0x55631886628e 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++/13.2.1/bits/invoke.h:111
#38 0x55631886628e 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++/13.2.1/bits/std_function.h:290
#39 0x5563186beb77 in std::function<void (wf::signal::connection_base_t*&)>::operator()(wf::signal::connection_base_t*&) const /usr/include/c++/13.2.1/bits/std_function.h:591
#40 0x5563186beb77 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
#41 0x5563188698da in void wf::signal::provider_t::emit<wf::txn::object_ready_signal>(wf::txn::object_ready_signal*) ../src/api/wayfire/signal-provider.hpp:159
#42 0x5563188698da in wf::txn::emit_object_ready(wf::txn::transaction_object_t*) ../src/api/wayfire/txn/transaction-object.hpp:66
#43 0x5563188698da in wf::xdg_toplevel_t::emit_ready() ../src/view/xdg-shell/xdg-toplevel.cpp:238
#44 0x5563188741b7 in wf::xdg_toplevel_t::emit_ready() ../src/view/xdg-shell/xdg-toplevel.cpp:89
#45 0x5563188741b7 in wf::xdg_toplevel_t::commit() ../src/view/xdg-shell/xdg-toplevel.cpp:105
#46 0x55631878e56e in wf::txn::transaction_t::commit() ../src/core/txn/transaction.cpp:54
#47 0x556318790589 in wf::txn::transaction_manager_t::impl::do_commit(std::unique_ptr<wf::txn::transaction_t, std::default_delete<wf::txn::transaction_t> >) ../src/core/txn/transaction-manager-impl.hpp:110
#48 0x556318790589 in wf::txn::transaction_manager_t::impl::consider_commit() ../src/core/txn/transaction-manager-impl.hpp:87
#49 0x556318791a70 in wf::txn::transaction_manager_t::impl::schedule_transaction(std::unique_ptr<wf::txn::transaction_t, std::default_delete<wf::txn::transaction_t> >) ../src/core/txn/transaction-manager-impl.hpp:38
#50 0x556318798470 in wf::txn::transaction_manager_t::schedule_transaction(std::unique_ptr<wf::txn::transaction_t, std::default_delete<wf::txn::transaction_t> >) ../src/core/txn/transaction-manager.cpp:19
#51 0x5563187a31c6 in wf::txn::transaction_manager_t::schedule_object(std::shared_ptr<wf::txn::transaction_object_t>) ../src/core/txn/transaction-manager.cpp:26
#52 0x556318854c1b in wf::toplevel_view_interface_t::move(int, int) ../src/view/toplevel-view.cpp:193
#53 0x798749ddd917 in wf::move_drag::adjust_view_on_output(wf::move_drag::drag_done_signal*) ../plugins/common/wayfire/plugins/common/move-drag-interface.hpp:783
#54 0x798749ddd917 in wayfire_scale::on_drag_done::{lambda(wf::move_drag::drag_done_signal*)#1}::operator()(wf::move_drag::drag_done_signal*) const ../plugins/scale/scale.cpp:1327
#55 0x798749ddd917 in void std::__invoke_impl<void, wayfire_scale::on_drag_done::{lambda(wf::move_drag::drag_done_signal*)#1}&, wf::move_drag::drag_done_signal*>(std::__invoke_other, wayfire_scale::on_drag_done::{lambda(wf::move_drag::drag_done_signal*)#1}&, wf::move_drag::drag_done_signal*&&) /usr/include/c++/13.2.1/bits/invoke.h:61
#56 0x798749ddd917 in std::enable_if<is_invocable_r_v<void, wayfire_scale::on_drag_done::{lambda(wf::move_drag::drag_done_signal*)#1}&, wf::move_drag::drag_done_signal*>, void>::type std::__invoke_r<void, wayfire_scale::on_drag_done::{lambda(wf::move_drag::drag_done_signal*)#1}&, wf::move_drag::drag_done_signal*>(wayfire_scale::on_drag_done::{lambda(wf::move_drag::drag_done_signal*)#1}&, wf::move_drag::drag_done_signal*&&) /usr/include/c++/13.2.1/bits/invoke.h:111
#57 0x798749ddd917 in std::_Function_handler<void (wf::move_drag::drag_done_signal*), wayfire_scale::on_drag_done::{lambda(wf::move_drag::drag_done_signal*)#1}>::_M_invoke(std::_Any_data const&, wf::move_drag::drag_done_signal*&&) /usr/include/c++/13.2.1/bits/std_function.h:290
#58 0x798749f21b81 in std::function<void (wf::wall_frame_event_t*)>::operator()(wf::wall_frame_event_t*) const /usr/include/c++/13.2.1/bits/std_function.h:591
#59 0x798749f21b81 in wf::signal::connection_t<wf::move_drag::drag_done_signal>::emit(wf::move_drag::drag_done_signal*) ../src/api/wayfire/signal-provider.hpp:107
#60 0x798749f21b81 in wf::signal::provider_t::emit<wf::move_drag::drag_done_signal>(wf::move_drag::drag_done_signal*)::{lambda(wf::signal::connection_base_t*)#1}::operator()(wf::signal::connection_base_t*) const ../src/api/wayfire/signal-provider.hpp:163
#61 0x798749f21b81 in void std::__invoke_impl<void, wf::signal::provider_t::emit<wf::move_drag::drag_done_signal>(wf::move_drag::drag_done_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(std::__invoke_other, wf::signal::provider_t::emit<wf::move_drag::drag_done_signal>(wf::move_drag::drag_done_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/13.2.1/bits/invoke.h:61
#62 0x798749f21b81 in std::enable_if<is_invocable_r_v<void, wf::signal::provider_t::emit<wf::move_drag::drag_done_signal>(wf::move_drag::drag_done_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::move_drag::drag_done_signal>(wf::move_drag::drag_done_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(wf::signal::provider_t::emit<wf::move_drag::drag_done_signal>(wf::move_drag::drag_done_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/13.2.1/bits/invoke.h:111
#63 0x798749f21b81 in std::_Function_handler<void (wf::signal::connection_base_t*&), wf::signal::provider_t::emit<wf::move_drag::drag_done_signal>(wf::move_drag::drag_done_signal*)::{lambda(wf::signal::connection_base_t*)#1}>::_M_invoke(std::_Any_data const&, wf::signal::connection_base_t*&) /usr/include/c++/13.2.1/bits/std_function.h:290
#64 0x798749da3322 in std::function<void (wf::region_t const&)>::operator()(wf::region_t const&) const /usr/include/c++/13.2.1/bits/std_function.h:591
#65 0x798749da3322 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
#66 0x798749d5fd20 in void wf::signal::provider_t::emit<wf::move_drag::drag_done_signal>(wf::move_drag::drag_done_signal*) ../src/api/wayfire/signal-provider.hpp:159
#67 0x798749d5fd20 in wf::move_drag::core_drag_t::handle_input_released() ../plugins/common/wayfire/plugins/common/move-drag-interface.hpp:645
#68 0x798749d754af in wayfire_scale::process_input(unsigned int, unsigned int, wf::pointf_t) ../plugins/scale/scale.cpp:486
#69 0x5563187dc9bb in wf::pointer_t::send_button(wlr_pointer_button_event*, bool) ../src/core/seat/pointer.cpp:279
#70 0x5563187f763a in wf::pointer_t::handle_pointer_button(wlr_pointer_button_event*, wf::input_event_processing_mode_t) ../src/core/seat/pointer.cpp:231
#71 0x5563187f8090 in operator() ../src/core/seat/cursor.cpp:70
#72 0x5563187f8090 in __invoke_impl<void, wf::cursor_t::setup_listeners()::<lambda(void*)>&, void*> /usr/include/c++/13.2.1/bits/invoke.h:61
#73 0x5563187f8090 in __invoke_r<void, wf::cursor_t::setup_listeners()::<lambda(void*)>&, void*> /usr/include/c++/13.2.1/bits/invoke.h:111
#74 0x5563187f8090 in _M_invoke /usr/include/c++/13.2.1/bits/std_function.h:290
#75 0x5563186a2629 in std::function<void (void*)>::operator()(void*) const /usr/include/c++/13.2.1/bits/std_function.h:591
#76 0x5563186a2629 in wf::wl_listener_wrapper::emit(void*) ../src/wl-listener-wrapper.tpp:57
#77 0x5563186a2629 in handle_wrapped_listener ../src/wl-listener-wrapper.tpp:10
#78 0x79876fb2e01d in wl_signal_emit_mutable (/usr/lib/libwayland-server.so.0+0xa01d) (BuildId: d943a6a6069d1b5293dad7c842d26ce407ebdd19)
#79 0x79876fb2e01d in wl_signal_emit_mutable (/usr/lib/libwayland-server.so.0+0xa01d) (BuildId: d943a6a6069d1b5293dad7c842d26ce407ebdd19)
#80 0x79876f129635 in handle_pointer_button ../subprojects/wlroots/backend/libinput/pointer.c:84
#81 0x79876f129635 in handle_libinput_event ../subprojects/wlroots/backend/libinput/events.c:173
#82 0x79876f129635 in handle_libinput_readable ../subprojects/wlroots/backend/libinput/backend.c:59
#83 0x79876f129635 in handle_libinput_readable ../subprojects/wlroots/backend/libinput/backend.c:49
#84 0x79876fb2fae1 in wl_event_loop_dispatch (/usr/lib/libwayland-server.so.0+0xbae1) (BuildId: d943a6a6069d1b5293dad7c842d26ce407ebdd19)
#85 0x79876fb302d6 in wl_display_run (/usr/lib/libwayland-server.so.0+0xc2d6) (BuildId: d943a6a6069d1b5293dad7c842d26ce407ebdd19)
#86 0x55631869ce00 in main ../src/main.cpp:418
#87 0x79876e957ccf (/usr/lib/libc.so.6+0x25ccf) (BuildId: c0caa0b7709d3369ee575fcd7d7d0b0fc48733af)
#88 0x79876e957d89 in __libc_start_main (/usr/lib/libc.so.6+0x25d89) (BuildId: c0caa0b7709d3369ee575fcd7d7d0b0fc48733af)
#89 0x5563186a1fd4 in _start (/usr/bin/wayfire+0xf3fd4) (BuildId: 367fb9237087e3e229e3b0b156e04c3b154d0c04)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV ../plugins/scale/scale.cpp:969 in wayfire_scale::layout_slots(std::vector<nonstd::observer_ptr<wf::toplevel_view_interface_t>, std::allocator<nonstd::observer_ptr<wf::toplevel_view_interface_t> > >)
==62206==ABORTING
(EE) failed to read Wayland events: Connection reset by peer