Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scale plugin: wayfire crash while drag and move a view between monitors #2236

Closed
killown opened this issue Mar 21, 2024 · 0 comments · Fixed by #2240
Closed

Scale plugin: wayfire crash while drag and move a view between monitors #2236

killown opened this issue Mar 21, 2024 · 0 comments · Fixed by #2240
Labels

Comments

@killown
Copy link
Contributor

killown commented Mar 21, 2024

with multi monitor setup: start any view in monitor A > activate scale in monitor A > drag and move the view to monitor B

AddressSanitizer:DEADLYSIGNAL ================================================================= ==62889==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000058 (pc 0x7b2b3cf003a5 bp 0x7ffe3d9a7f70 sp 0x7ffe3d9a79e0 T0) ==62889==The signal is caused by a READ memory access. ==62889==Hint: address points to the zero page. #0 0x7b2b3cf003a5 in wf::scene::node_t::parent() const ../src/api/wayfire/scene.hpp:264 #1 0x7b2b3cf003a5 in wf::scene::remove_child(std::shared_ptr, unsigned int) ../src/api/wayfire/scene-operations.hpp:19 #2 0x7b2b3cf056fb in wf::move_drag::core_drag_t::handle_input_released() ../plugins/common/wayfire/plugins/common/move-drag-interface.hpp:626 #3 0x7b2b3cf391cf in wayfire_scale::finalize() ../plugins/scale/scale.cpp:1419 #4 0x7b2b3cf3b8f0 in wayfire_scale::handle_view_disappeared(nonstd::observer_ptr) ../plugins/scale/scale.cpp:1135 #5 0x7b2b3cf7ed83 in wayfire_scale_global::on_view_set_output::{lambda(wf::view_set_output_signal*)#1}::operator()(wf::view_set_output_signal*) const ../plugins/scale/scale.cpp:1515 #6 0x7b2b3cf7ed83 in void std::__invoke_impl(std::__invoke_other, wayfire_scale_global::on_view_set_output::{lambda(wf::view_set_output_signal*)#1}&, wf::view_set_output_signal*&&) /usr/include/c++/13.2.1/bits/invoke.h:61 #7 0x7b2b3cf7ed83 in std::enable_if, void>::type std::__invoke_r(wayfire_scale_global::on_view_set_output::{lambda(wf::view_set_output_signal*)#1}&, wf::view_set_output_signal*&&) /usr/include/c++/13.2.1/bits/invoke.h:111 #8 0x7b2b3cf7ed83 in std::_Function_handler::_M_invoke(std::_Any_data const&, wf::view_set_output_signal*&&) /usr/include/c++/13.2.1/bits/std_function.h:290 #9 0x636dbc89471e in std::function::operator()(void*) const /usr/include/c++/13.2.1/bits/std_function.h:591 #10 0x636dbc89471e in wf::signal::connection_t::emit(wf::view_set_output_signal*) ../src/api/wayfire/signal-provider.hpp:107 #11 0x636dbc89471e in wf::signal::provider_t::emit(wf::view_set_output_signal*)::{lambda(wf::signal::connection_base_t*)#1}::operator()(wf::signal::connection_base_t*) const ../src/api/wayfire/signal-provider.hpp:163 #12 0x636dbc89471e in void std::__invoke_impl(wf::view_set_output_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(std::__invoke_other, wf::signal::provider_t::emit(wf::view_set_output_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/13.2.1/bits/invoke.h:61 #13 0x636dbc89471e in std::enable_if(wf::view_set_output_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>, void>::type std::__invoke_r(wf::view_set_output_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>(wf::signal::provider_t::emit(wf::view_set_output_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/13.2.1/bits/invoke.h:111 #14 0x636dbc89471e in std::_Function_handler(wf::view_set_output_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 #15 0x636dbc712ff7 in std::function::operator()(wf::signal::connection_base_t*&) const /usr/include/c++/13.2.1/bits/std_function.h:591 #16 0x636dbc712ff7 in wf::safe_list_t::for_each(std::function) ../src/api/wayfire/nonstd/safe-list.hpp:78 #17 0x636dbc89bc2d in void wf::signal::provider_t::emit(wf::view_set_output_signal*) ../src/api/wayfire/signal-provider.hpp:159 #18 0x636dbc89bc2d in wf::view_interface_t::set_output(wf::output_t*) ../src/view/view.cpp:51 #19 0x636dbc89c415 in wf::toplevel_view_interface_t::set_output(wf::output_t*) ../src/view/toplevel-view.cpp:183 #20 0x636dbc9d5df0 in wf::workspace_set_t::impl::add_view(nonstd::observer_ptr) ../src/output/workspace-impl.cpp:396 #21 0x636dbc7b92c2 in wf::workspace_set_t::add_view(nonstd::observer_ptr) ../src/output/workspace-impl.cpp:692 #22 0x636dbc7b92c2 in wf::start_move_view_to_wset(nonstd::observer_ptr, std::shared_ptr) ../src/core/core.cpp:491 #23 0x7b2b3b90678d in wf::move_drag::adjust_view_on_output(wf::move_drag::drag_done_signal*) ../plugins/common/wayfire/plugins/common/move-drag-interface.hpp:763 #24 0x7b2b3b97cdd3 in wf::tile::drag_manager_t::on_drag_done::{lambda(wf::move_drag::drag_done_signal*)#1}::operator()(wf::move_drag::drag_done_signal*) const ../plugins/tile/tile-dragging.hpp:66 #25 0x7b2b3b97cdd3 in void std::__invoke_impl(std::__invoke_other, wf::tile::drag_manager_t::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 #26 0x7b2b3b97cdd3 in std::enable_if, void>::type std::__invoke_r(wf::tile::drag_manager_t::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 #27 0x7b2b3b97cdd3 in std::_Function_handler::_M_invoke(std::_Any_data const&, wf::move_drag::drag_done_signal*&&) /usr/include/c++/13.2.1/bits/std_function.h:290 #28 0x7b2b3fb97611 in std::function::operator()(wf::wall_frame_event_t*) const /usr/include/c++/13.2.1/bits/std_function.h:591 #29 0x7b2b3fb97611 in wf::signal::connection_t::emit(wf::move_drag::drag_done_signal*) ../src/api/wayfire/signal-provider.hpp:107 #30 0x7b2b3fb97611 in wf::signal::provider_t::emit(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 #31 0x7b2b3fb97611 in void std::__invoke_impl(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*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/13.2.1/bits/invoke.h:61 #32 0x7b2b3fb97611 in std::enable_if(wf::move_drag::drag_done_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&>, void>::type std::__invoke_r(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*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&) /usr/include/c++/13.2.1/bits/invoke.h:111 #33 0x7b2b3fb97611 in std::_Function_handler(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 #34 0x7b2b3cf4dce7 in std::function::operator()(wf::region_t const&) const /usr/include/c++/13.2.1/bits/std_function.h:591 #35 0x7b2b3cf4dce7 in wf::safe_list_t::for_each(std::function) ../src/api/wayfire/nonstd/safe-list.hpp:78 #36 0x7b2b3cf071f2 in void wf::signal::provider_t::emit(wf::move_drag::drag_done_signal*) ../src/api/wayfire/signal-provider.hpp:159 #37 0x7b2b3cf071f2 in wf::move_drag::core_drag_t::handle_input_released() ../plugins/common/wayfire/plugins/common/move-drag-interface.hpp:657 #38 0x7b2b3cf2764f in wayfire_scale::process_input(unsigned int, unsigned int, wf::pointf_t) ../plugins/scale/scale.cpp:479 #39 0x636dbc83044b in wf::pointer_t::send_button(wlr_pointer_button_event*, bool) ../src/core/seat/pointer.cpp:279 #40 0x636dbc84a01a in wf::pointer_t::handle_pointer_button(wlr_pointer_button_event*, wf::input_event_processing_mode_t) ../src/core/seat/pointer.cpp:231 #41 0x636dbc86282b in operator() ../src/core/seat/cursor.cpp:67 #42 0x636dbc86282b in __invoke_impl&, void*> /usr/include/c++/13.2.1/bits/invoke.h:61 #43 0x636dbc86282b in __invoke_r&, void*> /usr/include/c++/13.2.1/bits/invoke.h:111 #44 0x636dbc86282b in _M_invoke /usr/include/c++/13.2.1/bits/std_function.h:290 #45 0x636dbc6f2319 in std::function::operator()(void*) const /usr/include/c++/13.2.1/bits/std_function.h:591 #46 0x636dbc6f2319 in wf::wl_listener_wrapper::emit(void*) ../src/wl-listener-wrapper.tpp:57 #47 0x636dbc6f2319 in handle_wrapped_listener ../src/wl-listener-wrapper.tpp:10 #48 0x7b2b590d901d in wl_signal_emit_mutable (/usr/lib/libwayland-server.so.0+0xa01d) (BuildId: d943a6a6069d1b5293dad7c842d26ce407ebdd19) #49 0x7b2b590d901d in wl_signal_emit_mutable (/usr/lib/libwayland-server.so.0+0xa01d) (BuildId: d943a6a6069d1b5293dad7c842d26ce407ebdd19) #50 0x7b2b58728b85 in handle_pointer_button ../subprojects/wlroots/backend/libinput/pointer.c:84 #51 0x7b2b58728b85 in handle_libinput_event ../subprojects/wlroots/backend/libinput/events.c:173 #52 0x7b2b58728b85 in handle_libinput_readable ../subprojects/wlroots/backend/libinput/backend.c:59 #53 0x7b2b58728b85 in handle_libinput_readable ../subprojects/wlroots/backend/libinput/backend.c:49 #54 0x7b2b590daae1 in wl_event_loop_dispatch (/usr/lib/libwayland-server.so.0+0xbae1) (BuildId: d943a6a6069d1b5293dad7c842d26ce407ebdd19) #55 0x7b2b590db2d6 in wl_display_run (/usr/lib/libwayland-server.so.0+0xc2d6) (BuildId: d943a6a6069d1b5293dad7c842d26ce407ebdd19) #56 0x636dbc6ed19e in main ../src/main.cpp:443 #57 0x7b2b57e43ccf (/usr/lib/libc.so.6+0x25ccf) (BuildId: c0caa0b7709d3369ee575fcd7d7d0b0fc48733af) #58 0x7b2b57e43d89 in __libc_start_main (/usr/lib/libc.so.6+0x25d89) (BuildId: c0caa0b7709d3369ee575fcd7d7d0b0fc48733af) #59 0x636dbc6f2074 in _start (/usr/bin/wayfire+0xf9074) (BuildId: adfc8e18085d6746d2ec4a8442bb660d4f150224)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV ../src/api/wayfire/scene.hpp:264 in wf::scene::node_t::parent() const
==62889==ABORTING
(EE) failed to read Wayland events: Broken pipe

@killown killown added the bug label Mar 21, 2024
@ammen99 ammen99 mentioned this issue Mar 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant