-
Notifications
You must be signed in to change notification settings - Fork 221
Open
Labels
Description
Wayfire version
0.11.0-3fba4963 (Jan 16 2026) branch fix-xwayland wlroots-0.19.2
Describe the bug
Wayfire crashes when missing alpha value (0.9) in autogenerated rule on created if !(type is "toplevel") then set alpha
To Reproduce:
- Add a rule through ipc with the following contents:
['autogenerated4', 'on created if !(type is "toplevel") then set alpha']
## Screenshots / Videos / Stacktrace
Unhandled exception
#0 0x7fbafa964865 in __sanitizer_print_stack_trace /usr/src/debug/gcc/gcc/libsanitizer/asan/asan_stack.cpp:87
#1 0x56305de6e7a9 in wf::print_trace(bool) ../src/debug.cpp:260
#2 0x56305de2bb57 in operator() ../src/main.cpp:406
#3 0x56305de2bb6f in _FUN ../src/main.cpp:408
#4 0x7fbaf98b3c8b in __cxxabiv1::__terminate(void (*)()) /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:48
#5 0x7fbaf9894647 in std::terminate() /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:58
#6 0x7fbaf98b3f98 in __cxa_throw /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_throw.cc:98
#7 0x7fbaf989a734 in std::__throw_out_of_range_fmt(char const*, ...) /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/functexcept.cc:101
#8 0x56305dfb845d in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::at(unsigned long) /usr/include/c++/15.2.1/bits/basic_string.h:1412
#9 0x7fbafa472ac4 in wf::lexer_t::parse_symbol() ../subprojects/wf-utils/wayfire/lexer/lexer.cpp:61
#10 0x7fbafa4977ce in wf::action_parser_t::parse(wf::lexer_t&) ../subprojects/wf-utils/wayfire/parser/action_parser.cpp:26
#11 0x7fbafa4c247a in wf::rule_parser_t::parse(wf::lexer_t&) ../subprojects/wf-utils/wayfire/parser/rule_parser.cpp:79
#12 0x7bbad7f3a4c4 in wayfire_window_rules_t::setup_rules_from_config() ../plugins/window-rules/window-rules.cpp:191
#13 0x7bbad7f43419 in wayfire_window_rules_t::_reload_config::{lambda(wf::reload_config_signal*)#1}::operator()(wf::reload_config_signal*) const ../plugins/window-rules/window-rules.cpp:61
#14 0x7bbad7f78960 in void std::__invoke_impl<void, wayfire_window_rules_t::_reload_config::{lambda(wf::reload_config_signal*)#1}&, wf::reload_config_signal*>(std::__invoke_other, wayfire_window_rules_t::_reload_config::{lambda(wf::reload_config_signal*)#1}&, wf::reload_config_signal*&&) /usr/include/c++/15.2.1/bits/invoke.h:63
#15 0x7bbad7f6cee2 in std::enable_if<is_invocable_r_v<void, wayfire_window_rules_t::_reload_config::{lambda(wf::reload_config_signal*)#1}&, wf::reload_config_signal*>, void>::type std::__invoke_r<void, wayfire_window_rules_t::_reload_config::{lambda(wf::reload_config_signal*)#1}&, wf::reload_config_signal*>(wayfire_window_rules_t::_reload_config::{lambda(wf::reload_config_signal*)#1}&, wf::reload_config_signal*&&) /usr/include/c++/15.2.1/bits/invoke.h:113
#16 0x7bbad7f61228 in std::_Function_handler<void (wf::reload_config_signal*), wayfire_window_rules_t::_reload_config::{lambda(wf::reload_config_signal*)#1}>::_M_invoke(std::_Any_data const&, wf::reload_config_signal*&&) /usr/include/c++/15.2.1/bits/std_function.h:292
#17 0x7bbaf3d80ecd in std::function<void (wf::reload_config_signal*)>::operator()(wf::reload_config_signal*) const /usr/include/c++/15.2.1/bits/std_function.h:593
#18 0x7bbaf3d7cf37 in wf::signal::connection_t<wf::reload_config_signal>::emit(wf::reload_config_signal*) ../src/api/wayfire/signal-provider.hpp:104
#19 0x7bbaf3d771a5 in wf::signal::provider_t::emit<wf::reload_config_signal>(wf::reload_config_signal*)::{lambda(wf::signal::connection_base_t*)#1}::operator()(wf::signal::connection_base_t*) const ../src/api/wayfire/signal-provider.hpp:151
#20 0x7bbaf3d863ba in void std::__invoke_impl<void, wf::signal::provider_t::emit<wf::reload_config_signal>(wf::reload_config_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*>(std::__invoke_other, wf::signal::provider_t::emit<wf::reload_config_signal>(wf::reload_config_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&&) /usr/include/c++/15.2.1/bits/invoke.h:63
#21 0x7bbaf3d83e8a in std::enable_if<is_invocable_r_v<void, wf::signal::provider_t::emit<wf::reload_config_signal>(wf::reload_config_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::reload_config_signal>(wf::reload_config_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*>(wf::signal::provider_t::emit<wf::reload_config_signal>(wf::reload_config_signal*)::{lambda(wf::signal::connection_base_t*)#1}&, wf::signal::connection_base_t*&&) /usr/include/c++/15.2.1/bits/invoke.h:113
#22 0x7bbaf3d8105f in std::_Function_handler<void (wf::signal::connection_base_t*), wf::signal::provider_t::emit<wf::reload_config_signal>(wf::reload_config_signal*)::{lambda(wf::signal::connection_base_t*)#1}>::_M_invoke(std::_Any_data const&, wf::signal::connection_base_t*&&) /usr/include/c++/15.2.1/bits/std_function.h:292
#23 0x56305e034c53 in std::function<void (wf::signal::connection_base_t*)>::operator()(wf::signal::connection_base_t*) const /usr/include/c++/15.2.1/bits/std_function.h:593
#24 0x56305e02e3b4 in void std::__invoke_impl<void, std::function<void (wf::signal::connection_base_t*)>&, wf::signal::connection_base_t*&>(std::__invoke_other, std::function<void (wf::signal::connection_base_t*)>&, wf::signal::connection_base_t*&) /usr/include/c++/15.2.1/bits/invoke.h:63
#25 0x56305e025539 in std::enable_if<is_invocable_r_v<void, std::function<void (wf::signal::connection_base_t*)>&, wf::signal::connection_base_t*&>, void>::type std::__invoke_r<void, std::function<void (wf::signal::connection_base_t*)>&, wf::signal::connection_base_t*&>(std::function<void (wf::signal::connection_base_t*)>&, wf::signal::connection_base_t*&) /usr/include/c++/15.2.1/bits/invoke.h:113
#26 0x56305e01de30 in std::_Function_handler<void (wf::signal::connection_base_t*&), std::function<void (wf::signal::connection_base_t*)> >::_M_invoke(std::_Any_data const&, wf::signal::connection_base_t*&) /usr/include/c++/15.2.1/bits/std_function.h:292
#27 0x56305e01b7b8 in std::function<void (wf::signal::connection_base_t*&)>::operator()(wf::signal::connection_base_t*&) const /usr/include/c++/15.2.1/bits/std_function.h:593
#28 0x56305e015f6e in wf::safe_list_t<wf::signal::connection_base_t*>::for_each(std::function<void (wf::signal::connection_base_t*&)>) /usr/include/wayfire/nonstd/safe-list.hpp:73
#29 0x56305e00ebbd in wf::signal::provider_t::for_each_connection(std::type_index, std::function<void (wf::signal::connection_base_t*)>) ../src/core/object.cpp:40
#30 0x7bbaf3d77395 in void wf::signal::provider_t::emit<wf::reload_config_signal>(wf::reload_config_signal*) ../src/api/wayfire/signal-provider.hpp:147
#31 0x7bbad8df86f2 in wf::ipc_rules_utility_methods_t::set_config_options::{lambda(wf::json_t const&)#1}::operator()(wf::json_t const&) const ../plugins/ipc-rules/ipc-utility-methods.hpp:345
#32 0x7bbad8ef2a6a in wf::json_t std::__invoke_impl<wf::json_t, wf::ipc_rules_utility_methods_t::set_config_options::{lambda(wf::json_t const&)#1}&, wf::json_t>(std::__invoke_other, wf::ipc_rules_utility_methods_t::set_config_options::{lambda(wf::json_t const&)#1}&, wf::json_t&&) /usr/include/c++/15.2.1/bits/invoke.h:63
#33 0x7bbad8ebc704 in std::enable_if<is_invocable_r_v<wf::json_t, wf::ipc_rules_utility_methods_t::set_config_options::{lambda(wf::json_t const&)#1}&, wf::json_t>, wf::json_t>::type std::__invoke_r<wf::json_t, wf::ipc_rules_utility_methods_t::set_config_options::{lambda(wf::json_t const&)#1}&, wf::json_t>(wf::ipc_rules_utility_methods_t::set_config_options::{lambda(wf::json_t const&)#1}&, wf::json_t&&) /usr/include/c++/15.2.1/bits/invoke.h:118
#34 0x7bbad8e84387 in std::_Function_handler<wf::json_t (wf::json_t), wf::ipc_rules_utility_methods_t::set_config_options::{lambda(wf::json_t const&)#1}>::_M_invoke(std::_Any_data const&, wf::json_t&&) /usr/include/c++/15.2.1/bits/std_function.h:293
#35 0x7bbad99353be in std::function<wf::json_t (wf::json_t)>::operator()(wf::json_t) const /usr/include/c++/15.2.1/bits/std_function.h:593
#36 0x7bbad99172d6 in wf::ipc::method_repository_t::register_method(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<wf::json_t (wf::json_t)>)::{lambda(wf::json_t const&, wf::ipc::client_interface_t*)#1}::operator()(wf::json_t const&, wf::ipc::client_interface_t*) const ../plugins/ipc/wayfire/plugins/ipc/ipc-method-repository.hpp:81
#37 0x7bbad9965583 in wf::json_t std::__invoke_impl<wf::json_t, wf::ipc::method_repository_t::register_method(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<wf::json_t (wf::json_t)>)::{lambda(wf::json_t const&, wf::ipc::client_interface_t*)#1}&, wf::json_t, 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<wf::json_t (wf::json_t)>)::{lambda(wf::json_t const&, wf::ipc::client_interface_t*)#1}&, wf::json_t&&, wf::ipc::client_interface_t*&&) /usr/include/c++/15.2.1/bits/invoke.h:63
#38 0x7bbad995bff6 in std::enable_if<is_invocable_r_v<wf::json_t, wf::ipc::method_repository_t::register_method(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<wf::json_t (wf::json_t)>)::{lambda(wf::json_t const&, wf::ipc::client_interface_t*)#1}&, wf::json_t, wf::ipc::client_interface_t*>, wf::json_t>::type std::__invoke_r<wf::json_t, wf::ipc::method_repository_t::register_method(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<wf::json_t (wf::json_t)>)::{lambda(wf::json_t const&, wf::ipc::client_interface_t*)#1}&, wf::json_t, 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<wf::json_t (wf::json_t)>)::{lambda(wf::json_t const&, wf::ipc::client_interface_t*)#1}&, wf::json_t&&, wf::ipc::client_interface_t*&&) /usr/include/c++/15.2.1/bits/invoke.h:118
#39 0x7bbad994e4ea in std::_Function_handler<wf::json_t (wf::json_t, 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<wf::json_t (wf::json_t)>)::{lambda(wf::json_t const&, wf::ipc::client_interface_t*)#1}>::_M_invoke(std::_Any_data const&, wf::json_t&&, wf::ipc::client_interface_t*&&) /usr/include/c++/15.2.1/bits/std_function.h:293
#40 0x7bbad95966b1 in std::function<wf::json_t (wf::json_t, wf::ipc::client_interface_t*)>::operator()(wf::json_t, wf::ipc::client_interface_t*) const /usr/include/c++/15.2.1/bits/std_function.h:593
#41 0x7bbad957a9a5 in wf::ipc::method_repository_t::call_method(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, wf::json_t, wf::ipc::client_interface_t*) ../plugins/ipc/wayfire/plugins/ipc/ipc-method-repository.hpp:103
#42 0x7bbae40c6f67 in wf::ipc::server_t::handle_incoming_message(wf::ipc::client_t*, wf::json_t) ../plugins/ipc/ipc.cpp:137
#43 0x7bbae40cc2a1 in wf::ipc::client_t::handle_fd_incoming(unsigned int) ../plugins/ipc/ipc.cpp:281
#44 0x7bbae40c7287 in operator() ../plugins/ipc/ipc.cpp:166
#45 0x7bbae40d2536 in __invoke_impl<void, wf::ipc::client_t::client_t(wf::ipc::server_t*, int)::<lambda(uint32_t)>&, unsigned int> /usr/include/c++/15.2.1/bits/invoke.h:63
#46 0x7bbae40d1c2a in __invoke_r<void, wf::ipc::client_t::client_t(wf::ipc::server_t*, int)::<lambda(uint32_t)>&, unsigned int> /usr/include/c++/15.2.1/bits/invoke.h:113
#47 0x7bbae40d0e78 in _M_invoke /usr/include/c++/15.2.1/bits/std_function.h:292
#48 0x56305e2a2fa7 in std::function<void (unsigned int)>::operator()(unsigned int) const /usr/include/c++/15.2.1/bits/std_function.h:593
#49 0x7bbae40c7120 in wl_loop_handle_ipc_client_fd_event(int, unsigned int, void*) ../plugins/ipc/ipc.cpp:144
#50 0x7fbafafc7641 in wl_event_loop_dispatch (/usr/lib/libwayland-server.so.0+0xa641) (BuildId: eaeed0645478c33a1a975d52ebd375751b26c19e)
#51 0x7fbafafc9776 in wl_display_run (/usr/lib/libwayland-server.so.0+0xc776) (BuildId: eaeed0645478c33a1a975d52ebd375751b26c19e)
#52 0x56305de31030 in main ../src/main.cpp:514
#53 0x7fbaf8c27b8a (/usr/lib/libc.so.6+0x27b8a) (BuildId: 7ca1c72ce7733770eeca8102591e6d59d18b2e6a)
#54 0x7fbaf8c27c4a in __libc_start_main (/usr/lib/libc.so.6+0x27c4a) (BuildId: 7ca1c72ce7733770eeca8102591e6d59d18b2e6a)
#55 0x56305de24c64 in _start (/usr/bin/wayfire+0x1fc6c64) (BuildId: 45c9a97bdc359c85e8e2b493bce92d5f5e346f7f)
Additional context
I didn't read the crash logs and don't know what this is about. I just pasted the output to avoid losing the information.
Reactions are currently unavailable