Christian Fillion
92242f0b9d
hyprland: fix a data race at startup between sockets 1 and 2
...
`Workspaces::*` and `IPC::startIPC` may both call `getSocketFolder` at the same time.
This randomly causes crashes and/or corruption of the socket path.
Typical crash A:
[2024-10-16 07:42:09.987] [info] Hyprland IPC starting
malloc(): unaligned tcache chunk detected
[2024-10-16 07:42:09.987] [error] Hyprland IPC: Unable to connect?
Thread 1 "waybar" received signal SIGABRT, Aborted.
(gdb) bt
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
(omitted for brievety)
#9 0x00007ffff64ae745 in operator new (sz=sz@entry=296) at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/new_op.cc:50
#10 0x00007ffff65ab1f1 in std::filesystem::__cxx11::path::_List::_Impl::copy (this=0x555555a23350) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++17/fs_path.cc:249
#11 0x00007ffff65ab3bd in std::filesystem::__cxx11::path::_List::_List (this=0x7fffffff9d30, other=<optimized out>) at /usr/src/debug/gcc/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/unique_ptr.h:454
#12 0x00005555556f4ab1 in waybar::modules::hyprland::IPC::getSocket1Reply(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
#13 0x00005555556f5e3d in waybar::modules::hyprland::IPC::getSocket1JsonReply(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
#14 0x000055555571289c in waybar::modules::hyprland::Workspaces::setCurrentMonitorId() ()
Typical crash B:
[2024-10-16 10:01:15.859] [info] Hyprland IPC starting
[2024-10-16 10:01:15.859] [info] Loading persistent workspaces from Hyprland workspace rules
Thread 8 "waybar" received signal SIGSEGV, Segmentation fault.
(gdb) bt
#0 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_S_copy
(__d=0x5555558fbca8 "/", __s=0x2973961a26d35726 <error: Cannot access memory at address 0x2973961a26d35726>, __n=1)
at /usr/src/debug/gcc/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/basic_string.h:433
(omitted for brievety)
#15 waybar::modules::hyprland::IPC::getSocketFolder[abi:cxx11](char const*)
(instanceSig=0x7fffffffe604 "4520b30d498daca8079365bdb909a8dea38e8d55_1729051218_1982280648") at ../src/modules/hyprland/backend.cpp:41
#16 0x000055555564230f in waybar::modules::hyprland::IPC::startIPC()::{lambda()#1}::operator()() const ()
at ../src/modules/hyprland/backend.cpp:70
#17 0x00007ffff64e1c34 in std::execute_native_thread_routine (__p=0x5555558119c0) at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/thread.cc:104
#18 0x00007ffff62a339d in start_thread (arg=<optimized out>) at pthread_create.c:447
2024-10-17 06:46:07 -04:00
Aleksei Bavshin
1f23b30b56
hyprland/backend: drop unnecessary getaddrinfo call
...
Hyprland hasn't been using TCP sockets for IPC since the first release,
so this getaddrinfo call and its result was never needed.
Additionally, it leaks the `aiRes`, causing test failure under ASan.
2024-08-17 22:32:17 -07:00
Austin Horstman
4295faa7c4
hyprland/backend: throw runtime_error instead of log
...
Allows us to disable modules entirely when socket connection isn't
working. This is similar to how sway handles their socket connections
disabling modules. This supports a single waybar config for multiple
IPCs.
2024-07-16 18:40:47 -05:00
Austin Horstman
c08660d837
modules/hyprland/backend: handle empty json responses
...
Fixes https://github.com/Alexays/Waybar/issues/3388
2024-06-28 13:18:44 -05:00
Austin Horstman
f6482c36dc
hyprland: clangd cleanup
2024-06-28 13:06:14 -05:00
Austin Horstman
f9e693b2a2
modules/hyprland/backend: remove testing log warn
2024-06-15 18:37:25 -05:00
Austin Horstman
959422f143
modules/hyprland/backend: protect against crash when XDG_RUNTIME_DIR not set
2024-06-09 10:18:20 -05:00
Austin Horstman
fa2e21dfd5
modules/hyprland/backend: move getSocketFolder to class
2024-06-09 10:18:20 -05:00
Austin Horstman
24e8766aaa
hyprland/backend: use /tmp
...
Was hardcoded to /tmp in previous versions
2024-05-28 11:00:20 -05:00
yangyingchao
b8e68b0e63
(hyprland) fix crash when failed to parse IPC message
...
IPC messages are parsed in a dedicated thread, and the thread terminates when
an exception is not caught, which causes the waybar process to crash with
SIGABORT.
While this issue might be related to Hyprland, it is really annoying to see
waybar crash. It would be better to catch those exceptions and report errors
instead of crashing.
2024-05-22 12:52:01 +08:00
Tuur Vanhoutte
f41458ea24
Fix Hyprland socketpath changed to XDG_RUNTIME_DIR ( #3183 )
2024-04-29 19:46:28 +02:00
zjeffer
42f4386e2e
fix clang-tidy errors in hyprland module
2024-02-25 12:11:22 +01:00
yangyingchao
bdd7271da9
Improvements for Hyprland backend
...
1. Fix warnings reported by clang tidy
2. Use unique lock instead of manully lock/unlock on mutex.
The RAII style locking makes sure mutex is unlocked when exceptions are thrown
2024-01-08 09:26:16 +08:00
Austin Horstman
4cb8efbecc
chore: cpplint fixes hyprland classes
2023-09-03 00:18:31 -05:00
Austin Horstman
8fc4187713
refactor: replace strcpy with snprintf
2023-09-02 23:56:06 -05:00
Calvin Chu
0f6eff1f20
hyprland: fix json parser runtime err from socket read ending early
2023-07-16 22:18:27 +10:00
dmitry
33236c222f
save
2023-06-28 02:52:01 +03:00
gardenapple
b163b21ace
More robust Hyprland backend
2023-06-20 13:36:48 +03:00
Enes Hecan
f00602058c
Fix misinterpreting return value of getaddrinfo call which caused an early return for Hyprland language
2023-04-23 13:31:02 +02:00
Alex
a9a2223469
fix: lint
2023-04-17 09:09:13 +02:00
Soc Virnyl S. Estela
55d7868f86
fix(2): use getaddrinfo() instead of gethostbyname()
2022-12-02 22:18:32 +08:00
Soc Virnyl S. Estela
0540977e45
format: remove some newlines
2022-12-02 21:42:58 +08:00
Soc Virnyl S. Estela
385726e701
fix: use getaddrinfo() instead of gethostbyname()
2022-12-02 21:36:14 +08:00
Jef Steelant
9f0a14c22b
make linter happy
2022-11-10 09:19:49 +01:00
Jef Steelant
8f4f67f69f
Do not crash when a monitor is removed
2022-11-09 09:34:19 +01:00
vaxerski
e2e59a52df
make the linter happy
2022-08-17 22:03:49 +02:00
vaxerski
c1f92d2a3c
added workspaces
2022-07-01 15:16:54 +02:00
vaxerski
72f478c195
added backend and hyprland/window
2022-07-01 12:46:28 +02:00