hyprwm / Hyprland

Hyprland is an independent, highly customizable, dynamic tiling Wayland compositor that doesn't sacrifice on its looks.
https://hyprland.org
BSD 3-Clause "New" or "Revised" License
21.54k stars 901 forks source link

Random 100% usage of a single core #7156

Closed LivacoNew closed 3 months ago

LivacoNew commented 3 months ago

Regression?

No

System Info and Version

System/Version info ```sh Hyprland, built from branch main at commit 55ceca4cdd8f4b3980d2840b85f6b91778a24eab (flake.lock: update aquamarine). Date: Sat Jul 27 18:32:11 2024 Tag: v0.41.2-113-g55ceca4c, commits: 4999 flags: (if any) System Information: System name: Linux Node name: silverhand Release: 6.10.2-arch1-1 Version: #1 SMP PREEMPT_DYNAMIC Sat, 27 Jul 2024 16:49:55 +0000 GPU information: 03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 32 [Radeon RX 7700 XT / 7800 XT] [1002:747e] (rev c8) (prog-if 00 [VGA controller]) 12:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Raphael [1002:164e] (rev cb) (prog-if 00 [VGA controller]) os-release: NAME="Arch Linux" PRETTY_NAME="Arch Linux" ID=arch BUILD_ID=rolling ANSI_COLOR="38;2;23;147;209" HOME_URL="https://archlinux.org/" DOCUMENTATION_URL="https://wiki.archlinux.org/" SUPPORT_URL="https://bbs.archlinux.org/" BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues" PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/" LOGO=archlinux-logo plugins: ======Config-Start====== Config File: /home/sam/.config/hypr/hyprland.conf: Read Succeeded # # Monitors # monitor=DP-2,1920x1080@240,0x0,1 monitor=HDMI-A-1,1920x1080@75,1920x-415,1,transform,3 # monitor=HDMI-A-1,1920x1080@60,1920x50,1 workspace=1, monitor:DP-2 workspace=10, monitor:HDMI-A-1, default:true # # Environment Config # # Make /tmp/logs exec-once=mkdir /tmp/logs # Force GUI Libraries to use Wayland # https://wiki.archlinux.org/title/wayland#GUI_libraries env = QT_QPA_PLATFORM,wayland # QT5/QT6 env = CLUTTER_BACKEND,wayland # Clutter env = SDL_VIDEODRIVER,wayland # SDL2 # Other Important Stuff exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # Desktop Portal env = XCURSOR_PATH,/usr/share/icons env = XCURSOR_SIZE,24 env = XCURSOR_THEME,BreezeX-RosePine-Linux env = SDL_AUDIODRIVER,alsa env = __GL_THREADED_OPTIMIZATION,1 env = EDITOR,nvim env = VISUAL,nvim # Blurry stuff layerrule = blur,waybar # Waybar Blur layerrule = blur,notifications layerrule = blur,wofi windowrule = opacity 0.99 0.99, obsidian # Obsidian blur - Makes the app not opaque, credit to https://www.reddit.com/r/unixporn/comments/105mdur/hyprland_frosted_glass_everywhere/ # Steam fix # Thanks https://github.com/hyprwm/Hyprland/issues/2661#issuecomment-1821639125 windowrulev2 = stayfocused, title:^()$,class:^(steam)$ windowrulev2 = minsize 1 1, title:^()$,class:^(steam)$ # Keep oversteer on Workspace 9 for the wheel deadzone fix windowrule = workspace 9 silent, ^(.*oversteer.*)$ # Some windows that should be floating windowrule = float, ^(lxqt-policykit-agent)$ # xwaylandvideobridge window rules, taken from https://wiki.hyprland.org/Useful-Utilities/Screen-Sharing/ windowrulev2 = opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$ windowrulev2 = noanim,class:^(xwaylandvideobridge)$ windowrulev2 = noinitialfocus,class:^(xwaylandvideobridge)$ windowrulev2 = maxsize 1 1,class:^(xwaylandvideobridge)$ windowrulev2 = noblur,class:^(xwaylandvideobridge)$ # # Startup programs # exec-once=hyprpaper > /tmp/logs/hyprpaper.log exec-once=waybar > /tmp/logs/waybar.log exec-once=/home/sam/Repositories/AUR/waybar-git/src/build/waybar > /tmp/logs/waybar.log exec-once=dunst > /tmp/logs/dunst.log exec-once=wl-paste -p --watch wl-copy -p '' > /tmp/logs/middle-click-paste.log # Disables middle click paste - https://wiki.hyprland.org/FAQ/#how-to-disable-middle-click-paste exec-once=/usr/bin/lxqt-policykit-agent > /tmp/logs/polkit-auth-agent.log # Polkit auth agent exec-once=/home/sam/.scripts/start-shit.sh exec-once=pulseeffects -w exec-once=[workspace 1 silent;noanim]env OBSIDIAN_USE_WAYLAND=1 /usr/bin/obsidian -enable-features=UseOzonePlatform -ozone-platform=wayland # exec-once=hyprctl setcursor Bibata-Modern-Classic 12 # # env = HYPRCURSOR_THEME,Bibata-Modern-Classic # env = HYPRCURSOR_SIZE,12 # # Config Variables # This is in order of the Wiki https://wiki.hyprland.org/Configuring/Variables/ # general { border_size = 1 gaps_in = 3 gaps_out = 10 layout = dwindle no_focus_fallback = true allow_tearing = false # col.active_border = rgba(a48bc4ff) # col.active_border = rgba(a48bc4a0) col.active_border = rgba(934ed9a0) } decoration { rounding = 2 drop_shadow = false # shadow_range = 4 # shadow_render_power = 3 # col.shadow = rgba(1a1a1aee) blur { enabled = false size = 2 passes = 4 ignore_opacity = true } } animations { # This is just the default stuff - I'm too stupid to make these myself enabled = true bezier = myBezier, 0.05, 0.9, 0.1, 1.05 animation = windows, 1, 7, myBezier animation = windowsOut, 1, 7, default, popin 80% animation = border, 1, 10, default animation = borderangle, 1, 8, default animation = fade, 1, 7, default animation = workspaces, 1, 6, default } input { kb_layout = us repeat_rate = 25 repeat_delay = 125 sensitivity = -0.6 accel_profile = flat follow_mouse = 1 } # Disables my macro keyboard so Hyprland doesn't grab it device { name = gaming-kb-gaming-kb enabled = false } device { name = gaming-kb-gaming-kb-consumer-control enabled = false } device { name = gaming-kb-gaming-kb-system-control enabled = false } device { name = gaming-kb-gaming-kb-keyboard enabled = false } misc { disable_hyprland_logo = true # sorry :( disable_splash_rendering = true mouse_move_focuses_monitor = true vrr = 0 background_color = rgb(161616) } debug { overlay = false disable_logs = true enable_stdout_logs = true } dwindle { pseudotile = true preserve_split = true smart_split = true } # # Binds # $mainMod = SUPER # Apps and Launchers bind = $mainMod, Q, exec, kitty bind = $mainMod, T, exec, nemo bind = $mainMod, E, exec, firefox bind = $mainMod, R, exec, wofi --show drun bind = $mainMod, Z, exec, [floating] galculator bind = $mainMod, B, exec, hyprpicker -a bind = $mainMod, L, exec, hyprlock # Screenshotting / Recording bind = , PRINT, exec, $HOME/.scripts/screenshot.sh monitor copy bind = SHIFT, PRINT, exec, $HOME/.scripts/screenshot.sh monitor copysave bind = CTRL, PRINT, exec, $HOME/.scripts/screenshot.sh region copy bind = CTRL SHIFT, PRINT, exec, $HOME/.scripts/screenshot.sh region copysave bind = ALT, PRINT, exec, $HOME/.scripts/screenshot.sh window copy bind = ALT SHIFT, PRINT, exec, $HOME/.scripts/screenshot.sh window copysave # bind = CTRL SHIFT, Q, exec, $HOME/.scripts/record.sh bind = $mainMod SHIFT, T, exec, ~/.scripts/OCRRegionCapture.sh # Function keys bind = , code:173, exec, playerctl -p spotify previous bind = , code:172, exec, playerctl -p spotify play-pause bind = , code:171, exec, playerctl -p spotify next bind = , code:121, exec, playerctl -p spotify volume 0 bind = , code:122, exec, playerctl -p spotify volume 0.05- bind = , code:123, exec, playerctl -p spotify volume 0.05+ bind = , code:232, exec, touch /tmp/no-judy bind = , code:233, exec, rm /tmp/no-judy bind = $mainMod ALT, TAB, exec, /home/sam/.scripts/wallpaper.sh # SUPER + Arrow Keys for slightly faster movement using HOME/END # Uses wtype bind = SUPER, LEFT, exec, wtype -P HOME -p HOME bind = SUPER, RIGHT, exec, wtype -P END -p END # Workspace Controls bind = $mainMod, C, killactive, bind = $mainMod, F, fullscreen bind = $mainMod, V, togglefloating, bind = $mainMod, P, pseudo, bind = $mainMod, X, togglesplit, # Moving Focus bind = $mainMod, A, movefocus, l bind = $mainMod, D, movefocus, r bind = $mainMod, W, movefocus, u bind = $mainMod, S, movefocus, d # Moving windows around in a workspace bind = $mainMod SHIFT, A, movewindow, l bind = $mainMod SHIFT, D, movewindow, r bind = $mainMod SHIFT, W, movewindow, u bind = $mainMod SHIFT, S, movewindow, d # Resize windows binde = $mainMod CTRL, A, resizeactive, -20 0 binde = $mainMod CTRL, D, resizeactive, 20 0 binde = $mainMod CTRL, W, resizeactive, 0 -20 binde = $mainMod CTRL, S, resizeactive, 0 20 # Special Workspaces bind = $mainMod SHIFT, TAB, movetoworkspace, special bind = $mainMod, TAB, togglespecialworkspace # Switching workspaces bind = $mainMod, 1, workspace, 1 bind = $mainMod, 2, workspace, 2 bind = $mainMod, 3, workspace, 3 bind = $mainMod, 4, workspace, 4 bind = $mainMod, 5, workspace, 5 bind = $mainMod, 6, workspace, 6 bind = $mainMod, 7, workspace, 7 bind = $mainMod, 8, workspace, 8 bind = $mainMod, 9, workspace, 9 bind = $mainMod, 0, workspace, 10 # Moving windows between workspaces bind = $mainMod SHIFT, 1, movetoworkspace, 1 bind = $mainMod SHIFT, 2, movetoworkspace, 2 bind = $mainMod SHIFT, 3, movetoworkspace, 3 bind = $mainMod SHIFT, 4, movetoworkspace, 4 bind = $mainMod SHIFT, 5, movetoworkspace, 5 bind = $mainMod SHIFT, 6, movetoworkspace, 6 bind = $mainMod SHIFT, 7, movetoworkspace, 7 bind = $mainMod SHIFT, 8, movetoworkspace, 8 bind = $mainMod SHIFT, 9, movetoworkspace, 9 bind = $mainMod SHIFT, 0, movetoworkspace, 10 # Scroll through workspaces bind = $mainMod, mouse_down, workspace, e+1 bind = $mainMod, mouse_up, workspace, e-1 bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow ======Config-End======== ```

Description

Seemingly randomly, Hyprland will start having hammering a single core of my CPU, causing visible lag to the entire desktop. I have to restart it to get it to stop.

image

Closing something like Firefox during this causes the entire desktop to freeze without swapping to a TTY or anything working, resulting in me having to power off my computer.

How to reproduce

No idea, as I've yet to encounter the reason for it. It's not uptime related, nor have I noticed a specific action that causes it. I've had it happen numerous times in a day, or it can once every week. I seem to be a magnet for these types of random hickups...

Crash reports, logs, images, videos

No response

vaxerski commented 3 months ago

open ssh to your pc and whenever it hangs, connect via ssh, sudo gdb attach $(pidof Hyprland) and show the output of bt -full

LivacoNew commented 3 months ago

Haven't got it on my Desktop but managed to get the core maxxing on my laptop today, which runs a much older hyprland version:

Hyprland, built from branch  at commit 918d8340afd652b011b937d29d5eea0be08467f5  (flake.lock: update).
Date: Tue Jun 25 12:06:02 2024
Tag: v0.41.2, commits: 4886

flags: (if any)

although wasn't able to freeze it. Output of gdb from it regardless:

 sam@songbird > sudo gdb attach $(pidof Hyprland)    ~
[sudo] password for sam: 
GNU gdb (GDB) 15.1
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
attach: No such file or directory.
Attaching to process 1245
[New LWP 5789]
[New LWP 5787]
[New LWP 5782]
[New LWP 5781]
[New LWP 1317]
[New LWP 1307]
[New LWP 1306]
[New LWP 1305]
[New LWP 1304]
[New LWP 1303]
[New LWP 1302]
[New LWP 1301]
[New LWP 1300]
[New LWP 1299]
[New LWP 1298]
[New LWP 1297]
[New LWP 1296]
[New LWP 1295]
[New LWP 1294]
[New LWP 1293]
[New LWP 1292]
[New LWP 1291]
[New LWP 1290]
[New LWP 1289]
[New LWP 1288]
[New LWP 1287]
[New LWP 1286]
[New LWP 1285]
[New LWP 1284]
[New LWP 1283]
[New LWP 1282]
[New LWP 1266]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
0x000061c34c3c2639 in ?? ()
(gdb) bt -full
#0  0x000061c34c3c2639 in ?? ()
No symbol table info available.
#1  0x000061c34c416565 in CPrimarySelectionProtocol::setSelection(Hyprutils::Memory::CSharedPointer<IDataSource>) ()
No symbol table info available.
#2  0x000061c34c377e9c in CSeatManager::setCurrentPrimarySelection(Hyprutils::Memory::CSharedPointer<IDataSource>) ()
No symbol table info available.
#3  0x000061c34c3bf76f in ?? ()
No symbol table info available.
#4  0x000061c34c4eb8b9 in ?? ()
No symbol table info available.
#5  0x00007021a10d6596 in ?? () from /usr/lib/libffi.so.8
No symbol table info available.
#6  0x00007021a10d300e in ?? () from /usr/lib/libffi.so.8
No symbol table info available.
#7  0x00007021a10d5bd3 in ffi_call () from /usr/lib/libffi.so.8
No symbol table info available.
#8  0x00007021a1694e45 in ?? () from /usr/lib/libwayland-server.so.0
No symbol table info available.
#9  0x00007021a1699c42 in ?? () from /usr/lib/libwayland-server.so.0
No symbol table info available.
#10 0x00007021a16980a2 in wl_event_loop_dispatch () from /usr/lib/libwayland-server.so.0
No symbol table info available.
#11 0x00007021a169a10f in wl_display_run () from /usr/lib/libwayland-server.so.0
No symbol table info available.
#12 0x000061c34c37f919 in CEventLoopManager::enterLoop(wl_display*, wl_event_loop*) ()
No symbol table info available.
#13 0x000061c34c1d818b in main ()
No symbol table info available.
(gdb) 

If I can get it on my Desktop today, or can get my laptop to freeze will post an updated one.

vaxerski commented 3 months ago

IIRC that one is fixed on git?

LivacoNew commented 3 months ago

As I said my laptop's running a older version so may make sense, Desktop's not acted up today yet so may be something completely different still just that was the best I had for a few days.

LivacoNew commented 3 months ago

Got it on my Desktop finally, happened when I closed a Firefox window. Elevated CPU usage but not pinned, from what I can tell in btop it was only about 50% on one core.

Thread 1 "Hyprland" received signal SIGINT, Interrupt.
0x00005741937732bf in std::_Function_handler<void (CZwpPrimarySelectionOfferV1*), CPrimarySelectionOffer::CPrimarySelectionOffer(Hyprutils::Memory::CSharedPointer<CZwpPrimarySelectionOfferV1>, Hyprutils::Memory::CSharedPointer<IDataSource>)::{lambda(CZwpPrimarySelectionOfferV1*)#2}>::_M_invoke(std::_Any_data const&, CZwpPrimarySelectionOfferV1*&&) ()
(gdb) bt -full
#0  0x00005741937732bf in std::_Function_handler<void (CZwpPrimarySelectionOfferV1*), CPrimarySelectionOffer::CPrimarySelectionOffer(Hyprutils::Memory::CSharedPointer<CZwpPrimarySelectionOfferV1>, Hyprutils::Memory::CSharedPointer<IDataSource>)::{lambda(CZwpPrimarySelectionOfferV1*)#2}>::_M_invoke(std::_Any_data const&, CZwpPrimarySelectionOfferV1*&&) ()
#1  0x00005741938ccc64 in _CZwpPrimarySelectionOfferV1__DestroyListener(wl_listener*, void*) ()
#2  0x00007a7786a44af8 in ??? () at /usr/lib/libwayland-server.so.0
#3  0x00007a7786a44d59 in wl_client_destroy () at /usr/lib/libwayland-server.so.0
#4  0x00007a7786a44f1a in ??? () at /usr/lib/libwayland-server.so.0
#5  0x00007a7786a440a2 in wl_event_loop_dispatch () at /usr/lib/libwayland-server.so.0
#6  0x00007a7786a4610f in wl_display_run () at /usr/lib/libwayland-server.so.0
#7  0x00005741936aa363 in CEventLoopManager::enterLoop() ()
#8  0x000057419348cf58 in main ()
(gdb) 
LivacoNew commented 3 months ago

Looks like one of these lambdas, to be clear I'm not an expert in C++ just blindly following the trace back so ignore me if I'm being dumb https://github.com/hyprwm/Hyprland/blob/2b520571e897be2a0e88c8692da607b062000038/src/protocols/PrimarySelection.cpp#L13-L14

vaxerski commented 3 months ago

IMO it's likely you have some clipboard manager that is just going nuts

LivacoNew commented 3 months ago

afaik I don't even have a clipboard manager installed

vaxerski commented 3 months ago

grep what you have installed for clip, maybe you do

LivacoNew commented 3 months ago

Don't believe any of this would count as a clipboard manager..? image

vaxerski commented 3 months ago

dont think so, odd

LivacoNew commented 3 months ago

Moved back up to latest git a few hours ago fixing some flickering in Minecraft, will see if it happens again now

LivacoNew commented 3 months ago

Replicated & caught it, you were right, looks like it was this outdated way of disabling middle click paste from older Hyprlands;

image

I noticed while Hyprland was freaking out it was at consistent small 0.1% CPU, killing wl-paste caused Hyprland to calm back down.

image

No idea why it would spam clipboard stuff like that, but alas it seems to have been the issue. Will close and use the new variable for it, sorry for wasting your time :)