Waybar
Waybar copied to clipboard
Segmentation fault while communicating over sway socket
Version: 0.10 plus some commits now included in master (https://github.com/hrdl-github/Waybar/commit/74773885c6166d190a294ad945b1f1d4d5f007ec) Environment: x86_64, GNU/Linux (Arch), sway 1.9.
This happened when docking a suspended laptop and then resuming. This took a bit longer than expected, possibly due to some USB initialisation issues. Just before sway closed two sockets, which probably included waybrar: [ERROR] [sway/ipc-server.c:206] IPC Client socket error, removing client.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x000076828ecfeebe in ?? () from /usr/lib/libjsoncpp.so.25
[Current thread is 1 (Thread 0x7681f42006c0 (LWP 1433266))]
#0 0x000076828ecfeebe in ??? () at /usr/lib/libjsoncpp.so.25
#1 0x000076828ed04dc8 in Json::Value::find(char const*, char const*) const ()
at /usr/lib/libjsoncpp.so.25
#2 0x000076828ed04eab in Json::Value::operator[](char const*) const ()
at /usr/lib/libjsoncpp.so.25
#3 0x000076828ecf7f75 in Json::CharReaderBuilder::newCharReader() const ()
at /usr/lib/libjsoncpp.so.25
#4 0x000076828ecfbc91 in Json::parseFromStream(Json::CharReader::Factory const&, std::basic_istream<char, std::char_traits<char> >&, Json::Value*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) () at /usr/lib/libjsoncpp.so.25
#5 0x000057dc86d2bf4e in waybar::util::JsonParser::parse
(this=0x57dc8937f460, jsonStr="{ \"id\": 1, \"type\": \"root\", \"orientation\": \"horizontal\", \"percent\": null, \"urgent\": false, \"marks\": [ ], \"focused\": false, \"layout\": \"splith\", \"border\": \"none\", \"current_border_width\": 0, \"rect\": { \"x\""...) at ../include/util/json.hpp:33
#6 0x000057dc86e47b8c in waybar::modules::sway::Scratchpad::onCmd
(this=0x57dc8937f1a0, res=...) at ../src/modules/sway/scratchpad.cpp:63
#7 0x000057dc86e49535 in sigc::bound_mem_functor1<void, waybar::modules::sway::Scratchpad, waybar::modules::sway::Ipc::ipc_response const&>::operator()
(this=0x57dc89dd6cf8, _A_a1=...)
at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:2066
#8 0x000057dc86e49471 in sigc::adaptor_functor<sigc::bound_mem_functor1<void, waybar::modules::sway::Scratchpad, waybar::modules::sway::Ipc::ipc_response const&> >::operator()<waybar::modules::sway::Ipc::ipc_response const&> (this=0x57dc89dd6cf0, _A_arg1=...)
at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:89
#9 0x000057dc86e492e3 in sigc::internal::slot_call<sigc::bound_mem_functor1<void, waybar::modules::sway::Scratchpad, waybar::modules::sway::Ipc::ipc_response const&>, void, waybar::modules::sway::Ipc::ipc_response const&>::call_it (rep=0x57dc89dd6cc0, a_#0=...)
at /usr/include/sigc++-2.0/sigc++/functors/slot.h:451
#10 0x000057dc86e1422a in sigc::internal::signal_emit1<void, waybar::modules::sway::Ipc::ipc_response const&, sigc::nil>::emit (impl=0x57dc89ea9f30, _A_a1=...)
at /usr/include/sigc++-2.0/sigc++/signal.h:1041
--Type <RET> for more, q to quit, c to continue without paging--
#11 0x000057dc86e14043 in sigc::signal1<void, waybar::modules::sway::Ipc::ipc_response const&, sigc::nil>::emit (this=0x57dc8937f3b0, _A_a1=...)
at /usr/include/sigc++-2.0/sigc++/signal.h:2961
#12 0x000057dc86e13b28 in waybar::modules::sway::Ipc::sendCmd
(this=0x57dc8937f3a0, type=4, payload="") at ../src/modules/sway/ipc/client.cpp:142
#13 0x000057dc86e47a0d in waybar::modules::sway::Scratchpad::getTree
(this=0x57dc8937f1a0) at ../src/modules/sway/scratchpad.cpp:54
#14 0x000057dc86e4810e in waybar::modules::sway::Scratchpad::onEvent
(this=0x57dc8937f1a0, res=...) at ../src/modules/sway/scratchpad.cpp:82
#15 0x000057dc86e49535 in sigc::bound_mem_functor1<void, waybar::modules::sway::Scratchpad, waybar::modules::sway::Ipc::ipc_response const&>::operator()
(this=0x57dc897e41b8, _A_a1=...)
at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:2066
#16 0x000057dc86e49471 in sigc::adaptor_functor<sigc::bound_mem_functor1<void, waybar::modules::sway::Scratchpad, waybar::modules::sway::Ipc::ipc_response const&> >::operator()<waybar::modules::sway::Ipc::ipc_response const&> (this=0x57dc897e41b0, _A_arg1=...)
at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:89
#17 0x000057dc86e492e3 in sigc::internal::slot_call<sigc::bound_mem_functor1<void, waybar::modules::sway::Scratchpad, waybar::modules::sway::Ipc::ipc_response const&>, void, waybar::modules::sway::Ipc::ipc_response const&>::call_it (rep=0x57dc897e4180, a_#0=...)
at /usr/include/sigc++-2.0/sigc++/functors/slot.h:451
#18 0x000057dc86e1422a in sigc::internal::signal_emit1<void, waybar::modules::sway::Ipc::ipc_response const&, sigc::nil>::emit (impl=0x57dc89fa2200, _A_a1=...)
at /usr/include/sigc++-2.0/sigc++/signal.h:1041
#19 0x000057dc86e14043 in sigc::signal1<void, waybar::modules::sway::Ipc::ipc_response const&, sigc::nil>::emit (this=0x57dc8937f3a0, _A_a1=...)
at /usr/include/sigc++-2.0/sigc++/signal.h:2961
#20 0x000057dc86e13d03 in waybar::modules::sway::Ipc::handleEvent (this=0x57dc8937f3a0)
at ../src/modules/sway/ipc/client.cpp:154
#21 0x000057dc86e46cfd in operator() (__closure=0x57dc89dbe2a0)
at ../src/modules/sway/scratchpad.cpp:25
--Type <RET> for more, q to quit, c to continue without paging--
ratchpad(const std::string&, const Json::Value&)::<lambda()>&>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/13.2.1/bits/invoke.h:61
#23 0x000057dc86e48315 in std::__invoke_r<void, waybar::modules::sway::Scratchpad::Scratchpad(const std::string&, const Json::Value&)::<lambda()>&>(struct {...} &) (__fn=...)
at /usr/include/c++/13.2.1/bits/invoke.h:111
#24 0x000057dc86e48207 in std::_Function_handler<void(), waybar::modules::sway::Scratchpad::Scratchpad(const std::string&, const Json::Value&)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...)
at /usr/include/c++/13.2.1/bits/std_function.h:290
#25 0x000057dc86d2d220 in std::function<void ()>::operator()() const (this=0x57dc89dbe2a0) at /usr/include/c++/13.2.1/bits/std_function.h:591
#26 0x000057dc86d2c283 in waybar::util::SleeperThread::operator=(std::function<void ()>)::{lambda()#1}::operator()() const (__closure=0x57dc89dbe298) at ../include/util/sleeper_thread.hpp:48
#27 0x000057dc86d5d4ef in std::__invoke_impl<void, waybar::util::SleeperThread::operator=(std::function<void ()>)::{lambda()#1}>(std::__invoke_other, waybar::util::SleeperThread::operator=(std::function<void ()>)::{lambda()#1}&&) (__f=...) at /usr/include/c++/13.2.1/bits/invoke.h:61
#28 0x000057dc86d5d4b2 in std::__invoke<waybar::util::SleeperThread::operator=(std::function<void ()>)::{lambda()#1}>(waybar::util::SleeperThread::operator=(std::function<void ()>)::{lambda()#1}&&) (__fn=...)
at /usr/include/c++/13.2.1/bits/invoke.h:96
#29 0x000057dc86d5d408 in std::thread::_Invoker<std::tuple<waybar::util::SleeperThread::operator=(std::function<void ()>)::{lambda()#1}> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (this=0x57dc89dbe298)
at /usr/include/c++/13.2.1/bits/std_thread.h:292
#30 0x000057dc86d5d3b4 in std::thread::_Invoker<std::tuple<waybar::util::SleeperThread::operator=(std::function<void ()>)::{lambda()#1}> >::operator()() (this=0x57dc89dbe298)
at /usr/include/c++/13.2.1/bits/std_thread.h:299
#31 0x000057dc86d5d37e in std::thread::_State_impl<std::thread::_Invoker<std::tuple<waybar::util::SleeperThread::operator=(std::function<void ()>)::{lambda()#1}> > >::_M_run() (this=0x57dc89dbe290)
at /usr/include/c++/13.2.1/bits/std_thread.h:244
#32 0x000076828d2e1943 in std::execute_native_thread_routine (__p=0x57dc89dbe290) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:104
#33 0x000076828d08455a in start_thread (arg=<optimized out>) at pthread_create.c:447
#34 0x000076828d101a3c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
(gdb) bt full
#0 0x000076828ecfeebe in ??? () at /usr/lib/libjsoncpp.so.25
#1 0x000076828ed04dc8 in Json::Value::find(char const*, char const*) const () at /usr/lib/libjsoncpp.so.25
#2 0x000076828ed04eab in Json::Value::operator[](char const*) const () at /usr/lib/libjsoncpp.so.25
#3 0x000076828ecf7f75 in Json::CharReaderBuilder::newCharReader() const () at /usr/lib/libjsoncpp.so.25
#4 0x000076828ecfbc91 in Json::parseFromStream(Json::CharReader::Factory const&, std::basic_istream<char, std::char_traits<char> >&, Json::Value*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) () at /usr/lib/libjsoncpp.so.25
#5 0x000057dc86d2bf4e in waybar::util::JsonParser::parse
(this=0x57dc8937f460, jsonStr="{ \"id\": 1, \"type\": \"root\", \"orientation\": \"horizontal\", \"percent\": null, \"urgent\": false, \"marks\": [ ], \"focused\": false, \"layout\": \"splith\", \"border\": \"none\", \"current_border_width\": 0, \"rect\": { \"x\""...) at ../include/util/json.hpp:33
root = {static minLargestInt = -9223372036854775808, static maxLargestInt = 9223372036854775807, static maxLargestUInt = 18446744073709551615, static minInt = -2147483648, static maxInt = 2147483647, static maxUInt = 4294967295, static minInt64 = -9223372036854775808, static maxInt64 = 9223372036854775807, static maxUInt64 = 18446744073709551615, static defaultRealPrecision = 17, static maxUInt64AsDouble = 1.8446744073709552e+19, value_ = {int_ = 130299711198288, uint_ = 130299711198288, real_ = 6.4376610966110065e-310, bool_ = 80, string_ = 0x7681c4001450 "", map_ = 0x7681c4001450}, bits_ = {value_type_ = 0, allocated_ = 0}, comments_ = {ptr_ = std::unique_ptr<std::array<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, 3>> = {get() = 0x0}}, start_ = 0, limit_ = 0}
modifiedJsonStr = "{ \"id\": 1, \"type\": \"root\", \"orientation\": \"horizontal\", \"percent\": null, \"urgent\": false, \"marks\": [ ], \"focused\": false, \"layout\": \"splith\", \"border\": \"none\", \"current_border_width\": 0, \"rect\": { \"x\""...
jsonStream = Python Exception <class 'gdb.error'>: You can't do that without a process to debug.
{<std::basic_istream<char, std::char_traits<char> >> = {<std::basic_ios<char, std::char_traits<char> >> = {<std::ios_base> = {_vptr.ios_base = 0x76828d471518 <vtable for std::__cxx11::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >+64>, static boolalpha = std::_S_boolalpha, static dec = std::_S_dec, static fixed = std::_S_fixed, static hex = std::_S_hex, static internal = std::_S_internal, static left = std::_S_left, static oct = std::_S_oct, static right = std::_S_right, static scientific = std::_S_scientific, static showbase = std::_S_showbase, static showpoint = std::_S_showpoint, static showpos = std::_S_showpos, static skipws = std::_S_skipws, static unitbuf = std::_S_unitbuf, static uppercase = std::_S_uppercase, static adjustfield = std::_S_adjustfield, static basefield = std::_S_basefield, static floatfield = std::_S_floatfield, static badbit = std::_S_badbit, static eofbit = std::_S_eofbit, static failbit = std::_S_failbit, static goodbit = std::_S_goodbit, static app = std::_S_app, static ate = std::_S_ate, static binary = std::_S_bin, static in = std::_S_in, static out = std::_S_out, static trunc = std::_S_trunc, static __noreplace = std::_S_noreplace, static beg = std::_S_beg, static cur = std::_S_cur, static end = std::_S_end, _M_precision = 6, _M_width = 0, _M_flags = 4098, _M_exception = std::_S_goodbit, _M_streambuf_state = std::_S_goodbit, _M_callbacks = 0x0, _M_word_zero = {_M_pword = 0x0, _M_iword = 0}, _M_local_word = {{_M_pword = 0x0, _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}}, _M_word_size = 8, _M_word = 0x7681f41ff3c8, _M_ios_locale = {static none = 0, static ctype = 1, static numeric = 2, static collate = 4, static time = 8, static monetary = 16, static messages = 32, static all = 63, _M_impl = 0x76828d478d20 <(anonymous namespace)::c_locale_impl>}}, _M_tie = 0x0, _M_fill = 0 '\000', _M_fill_init = false, _M_streambuf = 0x7681f41ff320, _M_ctype = 0x76828d478740 <(anonymous namespace)::ctype_c>, _M_num_put = 0x76828d4786d0 <(anonymous namespace)::num_put_c>, _M_num_get = 0x76828d4786e0 <(anonymous namespace)::num_get_c>}, _vptr.basic_istream = 0x76828d4714f0 <vtable for std::__cxx11::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >+24>, _M_gcount = 0}, _M_stringbuf = "{ \"id\": 1, \"type\": \"root\", \"orientation\": \"horizontal\", \"percent\": null, \"urgent\": false, \"marks\": [ ], \"focused\": false, \"layout\": \"splith\", \"border\": \"none\", \"current_border_width\": 0, \"rect\": { \"x\""...}
errs = ""
#6 0x000057dc86e47b8c in waybar::modules::sway::Scratchpad::onCmd (this=0x57dc8937f1a0, res=...) at ../src/modules/sway/scratchpad.cpp:63
lock = {_M_device = @0x57dc8937f378}
tree = {static minLargestInt = -9223372036854775808, static maxLargestInt = 9223372036854775807, static maxLargestUInt = 18446744073709551615, static minInt = -2147483648, static maxInt = 2147483647, static maxUInt = 4294967295, static minInt64 = -9223372036854775808, static maxInt64 = 9223372036854775807, static maxUInt64 = 18446744073709551615, static defaultRealPrecision = 17, static maxUInt64AsDouble = 1.8446744073709552e+19, value_ = {int_ = 130299711198288, uint_ = 130299711198288, real_ = 6.4376610966110065e-310, bool_ = 80, string_ = 0x7681c4001450 "", map_ = 0x7681c4001450}, bits_ = {value_type_ = 0, allocated_ = 0}, comments_ = {ptr_ = std::unique_ptr<std::array<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, 3>> = {get() = 0x0}}, start_ = 0, limit_ = 0}
#7 0x000057dc86e49535 in sigc::bound_mem_functor1<void, waybar::modules::sway::Scratchpad, waybar::modules::sway::Ipc::ipc_response const&>::operator() (this=0x57dc89dd6cf8, _A_a1=...)
at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:2066
#8 0x000057dc86e49471 in sigc::adaptor_functor<sigc::bound_mem_functor1<void, waybar::modules::sway::Scratchpad, waybar::modules::sway::Ipc::ipc_response const&> >::operator()<waybar::modules::sway::Ipc::ipc_response const&> (this=0x57dc89dd6cf0, _A_arg1=...) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:89
#9 0x000057dc86e492e3 in sigc::internal::slot_call<sigc::bound_mem_functor1<void, waybar::modules::sway::Scratchpad, waybar::modules::sway::Ipc::ipc_response const&>, void, waybar::modules::sway::Ipc::ipc_response const&>::call_it (rep=0x57dc89dd6cc0, a_#0=...) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:451
typed_rep = 0x57dc89dd6cc0
#10 0x000057dc86e1422a in sigc::internal::signal_emit1<void, waybar::modules::sway::Ipc::ipc_response const&, sigc::nil>::emit (impl=0x57dc89ea9f30, _A_a1=...) at /usr/include/sigc++-2.0/sigc++/signal.h:1041
slot = @0x57dc894e4e30: {<sigc::functor_base> = {<No data fields>}, rep_ = 0x57dc89dd6cc0, blocked_ = false}
__for_range = @0x7681f41ff760: {slots_ = std::__cxx11::list = {[0] = {<sigc::functor_base> = {<No data fields>}, rep_ = 0x57dc89dd6cc0, blocked_ = false}, [1] = {<sigc::functor_base> = {<No data fields>}, rep_ = 0x0, blocked_ = false}}, placeholder = {<sigc::functor_base> = {<No data fields>}, rep_ = 0x0, blocked_ = false}}
__for_begin = {<sigc::functor_base> = {<No data fields>}, rep_ = 0x57dc89dd6cc0, blocked_ = false}
__for_end = {<sigc::functor_base> = {<No data fields>}, rep_ = 0x0, blocked_ = false}
exec = {sig_ = 0x57dc89ea9f30}
slots = {slots_ = std::__cxx11::list = {[0] = {<sigc::functor_base> = {<No data fields>}, rep_ = 0x57dc89dd6cc0, blocked_ = false}, [1] = {<sigc::functor_base> = {<No data fields>}, rep_ = 0x0, blocked_ = false}}, placeholder = {<sigc::functor_base> = {<No data fields>}, rep_ = 0x0, blocked_ = false}}
#11 0x000057dc86e14043 in sigc::signal1<void, waybar::modules::sway::Ipc::ipc_response const&, sigc::nil>::emit (this=0x57dc8937f3b0, _A_a1=...) at /usr/include/sigc++-2.0/sigc++/signal.h:2961
#12 0x000057dc86e13b28 in waybar::modules::sway::Ipc::sendCmd (this=0x57dc8937f3a0, type=4, payload="") at ../src/modules/sway/ipc/client.cpp:142
lock = {_M_device = @0x57dc8937f3c8}
res = {size = 11736, type = 4, payload = "{ \"id\": 1, \"type\": \"root\", \"orientation\": \"horizontal\", \"percent\": null, \"urgent\": false, \"marks\": [ ], \"focused\": false, \"layout\": \"splith\", \"border\": \"none\", \"current_border_width\": 0, \"rect\": { \"x\""...}
#13 0x000057dc86e47a0d in waybar::modules::sway::Scratchpad::getTree (this=0x57dc8937f1a0) at ../src/modules/sway/scratchpad.cpp:54
#14 0x000057dc86e4810e in waybar::modules::sway::Scratchpad::onEvent (this=0x57dc8937f1a0, res=...) at ../src/modules/sway/scratchpad.cpp:82
#15 0x000057dc86e49535 in sigc::bound_mem_functor1<void, waybar::modules::sway::Scratchpad, waybar::modules::sway::Ipc::ipc_response const&>::operator() (this=0x57dc897e41b8, _A_a1=...)
at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:2066
#16 0x000057dc86e49471 in sigc::adaptor_functor<sigc::bound_mem_functor1<void, waybar::modules::sway::Scratchpad, waybar::modules::sway::Ipc::ipc_response const&> >::operator()<waybar::modules::sway::Ipc::ipc_response const&> (this=0x57dc897e41b0, _A_arg1=...) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:89
#17 0x000057dc86e492e3 in sigc::internal::slot_call<sigc::bound_mem_functor1<void, waybar::modules::sway::Scratchpad, waybar::modules::sway::Ipc::ipc_response const&>, void, waybar::modules::sway::Ipc::ipc_response const&>::call_it (rep=0x57dc897e4180, a_#0=...) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:451
typed_rep = 0x57dc897e4180
--Type <RET> for more, q to quit, c to continue without paging--
#18 0x000057dc86e1422a in sigc::internal::signal_emit1<void, waybar::modules::sway::Ipc::ipc_response const&, sigc::nil>::emit (impl=0x57dc89fa2200, _A_a1=...) at /usr/include/sigc++-2.0/sigc++/signal.h:1041
slot = @0x57dc898eea70: {<sigc::functor_base> = {<No data fields>}, rep_ = 0x57dc897e4180, blocked_ = false}
__for_range = @0x7681f41ff9a0: {slots_ = std::__cxx11::list = {[0] = {<sigc::functor_base> = {<No data fields>}, rep_ = 0x57dc897e4180, blocked_ = false}, [1] = {<sigc::functor_base> = {<No data fields>}, rep_ = 0x0, blocked_ = false}}, placeholder = {<sigc::functor_base> = {<No data fields>}, rep_ = 0x0, blocked_ = false}}
__for_begin = {<sigc::functor_base> = {<No data fields>}, rep_ = 0x57dc897e4180, blocked_ = false}
__for_end = {<sigc::functor_base> = {<No data fields>}, rep_ = 0x0, blocked_ = false}
exec = {sig_ = 0x57dc89fa2200}
slots = {slots_ = std::__cxx11::list = {[0] = {<sigc::functor_base> = {<No data fields>}, rep_ = 0x57dc897e4180, blocked_ = false}, [1] = {<sigc::functor_base> = {<No data fields>}, rep_ = 0x0, blocked_ = false}}, placeholder = {<sigc::functor_base> = {<No data fields>}, rep_ = 0x0, blocked_ = false}}
#19 0x000057dc86e14043 in sigc::signal1<void, waybar::modules::sway::Ipc::ipc_response const&, sigc::nil>::emit (this=0x57dc8937f3a0, _A_a1=...) at /usr/include/sigc++-2.0/sigc++/signal.h:2961
#20 0x000057dc86e13d03 in waybar::modules::sway::Ipc::handleEvent (this=0x57dc8937f3a0) at ../src/modules/sway/ipc/client.cpp:154
res = {size = 908, type = 2147483651, payload = "{ \"change\": \"focus\", \"container\": { \"id\": 420, \"type\": \"floating_con\", \"orientation\": \"none\", \"percent\": 0.14909297052154194, \"urgent\": false, \"marks\": [ ], \"focused\": true, \"layout\": \"none\", \"border\""...}
#21 0x000057dc86e46cfd in operator() (__closure=0x57dc89dbe2a0) at ../src/modules/sway/scratchpad.cpp:25
this = 0x57dc8937f1a0
#22 0x000057dc86e4842e in std::__invoke_impl<void, waybar::modules::sway::Scratchpad::Scratchpad(const std::string&, const Json::Value&)::<lambda()>&>(std::__invoke_other, struct {...} &) (__f=...)
at /usr/include/c++/13.2.1/bits/invoke.h:61
#23 0x000057dc86e48315 in std::__invoke_r<void, waybar::modules::sway::Scratchpad::Scratchpad(const std::string&, const Json::Value&)::<lambda()>&>(struct {...} &) (__fn=...)
at /usr/include/c++/13.2.1/bits/invoke.h:111
#24 0x000057dc86e48207 in std::_Function_handler<void(), waybar::modules::sway::Scratchpad::Scratchpad(const std::string&, const Json::Value&)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...)
at /usr/include/c++/13.2.1/bits/std_function.h:290
#25 0x000057dc86d2d220 in std::function<void ()>::operator()() const (this=0x57dc89dbe2a0) at /usr/include/c++/13.2.1/bits/std_function.h:591
#26 0x000057dc86d2c283 in waybar::util::SleeperThread::operator=(std::function<void ()>)::{lambda()#1}::operator()() const (__closure=0x57dc89dbe298) at ../include/util/sleeper_thread.hpp:48
func = {<std::_Maybe_unary_or_binary_function<void>> = {<No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x57dc8937f1a0, _M_const_object = 0x57dc8937f1a0, _M_function_pointer = 0x57dc8937f1a0, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x57dc8937f1a0}, _M_pod_data = "\240\3617\211\334W\000\000\000\000\000\000\000\000\000"}, _M_manager = 0x57dc86e4820a <std::_Function_handler<void(), waybar::modules::sway::Scratchpad::Scratchpad(const std::string&, const Json::Value&)::<lambda()> >::_M_manager(std::_Any_data &, const std::_Any_data &, std::_Manager_operation)>}, _M_invoker = 0x57dc86e481e7 <std::_Function_handler<void(), waybar::modules::sway::Scratchpad::Scratchpad(const std::string&, const Json::Value&)::<lambda()> >::_M_invoke(const std::_Any_data &)>}
this = 0x57dc8937f3f0
#27 0x000057dc86d5d4ef in std::__invoke_impl<void, waybar::util::SleeperThread::operator=(std::function<void ()>)::{lambda()#1}>(std::__invoke_other, waybar::util::SleeperThread::operator=(std::function<void ()>)::{lambda()#1}&&) (__f=...) at /usr/include/c++/13.2.1/bits/invoke.h:61
#28 0x000057dc86d5d4b2 in std::__invoke<waybar::util::SleeperThread::operator=(std::function<void ()>)::{lambda()#1}>(waybar::util::SleeperThread::operator=(std::function<void ()>)::{lambda()#1}&&) (__fn=...)
at /usr/include/c++/13.2.1/bits/invoke.h:96
#29 0x000057dc86d5d408 in std::thread::_Invoker<std::tuple<waybar::util::SleeperThread::operator=(std::function<void ()>)::{lambda()#1}> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (this=0x57dc89dbe298)
at /usr/include/c++/13.2.1/bits/std_thread.h:292
#30 0x000057dc86d5d3b4 in std::thread::_Invoker<std::tuple<waybar::util::SleeperThread::operator=(std::function<void ()>)::{lambda()#1}> >::operator()() (this=0x57dc89dbe298)
at /usr/include/c++/13.2.1/bits/std_thread.h:299
#31 0x000057dc86d5d37e in std::thread::_State_impl<std::thread::_Invoker<std::tuple<waybar::util::SleeperThread::operator=(std::function<void ()>)::{lambda()#1}> > >::_M_run() (this=0x57dc89dbe290)
at /usr/include/c++/13.2.1/bits/std_thread.h:244
#32 0x000076828d2e1943 in std::execute_native_thread_routine (__p=0x57dc89dbe290) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:104
__t = std::unique_ptr<std::thread::_State> = {get() = <optimized out>}
#33 0x000076828d08455a in start_thread (arg=<optimized out>) at pthread_create.c:447
ret = <optimized out>
pd = <optimized out>
out = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {130300518598336, -2453817227294688390, -216, 11, 140726494847408, 130300510208000, 3526778123269815162, 3528376978849905530}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
#34 0x000076828d101a3c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78