37c6cd42f5
fix freebsd compilation
2025-02-19 21:15:18 +01:00
5b8839ab5c
Hyprland IPC improvements
...
Fixes IPC being blocked at shutdown
2025-02-19 20:45:47 +01:00
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
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
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
c08660d837
modules/hyprland/backend: handle empty json responses
...
Fixes https://github.com/Alexays/Waybar/issues/3388
2024-06-28 13:18:44 -05:00
f6482c36dc
hyprland: clangd cleanup
2024-06-28 13:06:14 -05:00
f9e693b2a2
modules/hyprland/backend: remove testing log warn
2024-06-15 18:37:25 -05:00
959422f143
modules/hyprland/backend: protect against crash when XDG_RUNTIME_DIR not set
2024-06-09 10:18:20 -05:00
fa2e21dfd5
modules/hyprland/backend: move getSocketFolder to class
2024-06-09 10:18:20 -05:00
24e8766aaa
hyprland/backend: use /tmp
...
Was hardcoded to /tmp in previous versions
2024-05-28 11:00:20 -05:00
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
f41458ea24
Fix Hyprland socketpath changed to XDG_RUNTIME_DIR ( #3183 )
2024-04-29 19:46:28 +02:00
42f4386e2e
fix clang-tidy errors in hyprland module
2024-02-25 12:11:22 +01:00
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
4cb8efbecc
chore: cpplint fixes hyprland classes
2023-09-03 00:18:31 -05:00
8fc4187713
refactor: replace strcpy with snprintf
2023-09-02 23:56:06 -05:00
0f6eff1f20
hyprland: fix json parser runtime err from socket read ending early
2023-07-16 22:18:27 +10:00
33236c222f
save
2023-06-28 02:52:01 +03:00
b163b21ace
More robust Hyprland backend
2023-06-20 13:36:48 +03:00
f00602058c
Fix misinterpreting return value of getaddrinfo call which caused an early return for Hyprland language
2023-04-23 13:31:02 +02:00
a9a2223469
fix: lint
2023-04-17 09:09:13 +02:00
55d7868f86
fix(2): use getaddrinfo() instead of gethostbyname()
2022-12-02 22:18:32 +08:00
0540977e45
format: remove some newlines
2022-12-02 21:42:58 +08:00
385726e701
fix: use getaddrinfo() instead of gethostbyname()
2022-12-02 21:36:14 +08:00
9f0a14c22b
make linter happy
2022-11-10 09:19:49 +01:00
8f4f67f69f
Do not crash when a monitor is removed
2022-11-09 09:34:19 +01:00
e2e59a52df
make the linter happy
2022-08-17 22:03:49 +02:00
c1f92d2a3c
added workspaces
2022-07-01 15:16:54 +02:00
72f478c195
added backend and hyprland/window
2022-07-01 12:46:28 +02:00