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.22k stars 895 forks source link

Resizing window will casuse high vmem usage without mem release #7362

Closed Avimitin closed 2 months ago

Avimitin commented 2 months ago

Regression?

No

System Info and Version

System/Version info ```sh Hyprland, built from branch main at commit 12d9901472c6f9128fa8b16c25b3a879d1859e60 (protocols: refactor protocol logging to a macro (7324)). Date: Fri Aug 16 00:16:18 2024 Tag: v0.42.0-26-g12d99014, commits: 5095 flags: (if any) System Information: System name: Linux Node name: homelab Release: 6.10.5-arch1-1 Version: #1 SMP PREEMPT_DYNAMIC Thu, 15 Aug 2024 00:25:30 +0000 GPU information: 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA102 [GeForce RTX 3080 Lite Hash Rate] [10de:2216] (rev a1) (prog-if 00 [VGA controller]) NVRM version: NVIDIA UNIX x86_64 Kernel Module 560.31.02 Tue Jul 30 21:02:43 UTC 2024 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/sh1marin/.config/hypr/hyprland.conf: Read Succeeded # paru -S hyprland waybar wpaperd dunst libnotify xdg-portal-{gtk,hyprland} wl-clipboard grim slurp swayidle swaylock autogenerated = 0 # IM # As for now, the modern Gtk 3/4 application should be able to use text-input-v3 which is supported almost by every compositor. # So GTK_IM_MODULE is not required. #env = GTK_IM_MODULE,fcitx env = QT_IM_MODULE,fcitx env = XMODIFIERS,@im,fcitx env = SDL_IM_MODULE,fcitx # For kitty env = GLFW_IM_MODULE,ibus # Wayland specific env = XCURSOR_SIZE,24 env = GDK_BACKEND,wayland,x11 env = QT_QPA_PLATFORM,"wayland;xcb" env = CLUTTER_BACKEND,wayland env = SDL_VIDEODRIVER,wayland env = XDG_CURRENT_DESKTOP,Hyprland env = XDG_SESSION_TYPE,wayland env = XDG_SESSION_DESKTOP,Hyprland env = QT_QPA_PLATFORM,wayland;xcb env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 env = QT_ENABLE_HIGHDPI_SCALING,1 env = MOZ_ENABLE_WAYLAND,1 # Themeing # paru -S whitesur-gtk-theme whitesur-icon-theme env = GTK_THEME,WhiteSur-Dark exec-once = gsettings set org.gnome.desktop.interface gtk-theme 'WhiteSur-Dark' exec-once = gsettings set org.gnome.desktop.interface icon-theme 'WhiteSur-dark' exec-once = gsettings set org.gnome.desktop.interface cursor-theme 'WhiteSur-cursors' exec-once = hyprctl setcursor WhiteSur-cursors 24 # paru -S kvantum kvantum-theme-whitesur-git env = QT_STYLE_OVERRIDE,kvantum # Nvidia specific # paru -S nvidia-beta nvidia-utils-beta lib32-nvidia-utils-beta (nvidia >= 555) env = LIBVA_DRIVER_NAME,nvidia env = GBM_BACKEND,nvidia-drm env = __GLX_VENDOR_LIBRARY_NAME,nvidia env = NVD_BACKEND,direct cursor { no_hardware_cursors = false } debug { disable_logs = false } # Source a file (multi-file configs) # source = ~/.config/hypr/myColors.conf # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ input { kb_layout = us kb_variant = kb_model = kb_options = kb_rules = follow_mouse = 1 touchpad { natural_scroll = false } sensitivity = 0 # -1.0 - 1.0, 0 means no modification. } general { # See https://wiki.hyprland.org/Configuring/Variables/ for more gaps_in = 2 gaps_out = 2 border_size = 1 col.active_border = 0xCC606060 col.inactive_border = rgba(0, 0, 0, 0) layout = master } # unscale XWayland xwayland { force_zero_scaling = true } decoration { # See https://wiki.hyprland.org/Configuring/Variables/ for more rounding = 5 blur { enabled = true size = 4 passes = 3 } drop_shadow = true shadow_range = 30 shadow_render_power = 3 col.shadow = rgba(25, 25, 25, 0.5) col.shadow_inactive = rgba(25, 25, 25, 0.1) } animations { enabled = true # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more 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 } dwindle { # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below preserve_split = true # you probably want this } master { # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more new_status = master } gestures { # See https://wiki.hyprland.org/Configuring/Variables/ for more workspace_swipe = false } # See https://wiki.hyprland.org/Configuring/Keywords/ for more $mainMod = SUPER # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = $mainMod SHIFT, R, exec, @rotateScript@ bind = $mainMod, Return, bringactivetotop # On floating mode, bring window to top bind = $mainMod, Return, layoutmsg, swapwithmaster # On master mode, bring window to master bind = $mainMod SHIFT, Return, exec, alacritty #bind = $mainMod SHIFT, Return, layoutmsg, swapwithmaster bind = $mainMod SHIFT, Q, killactive, bind = $mainMod SHIFT, E, exit, bind = $mainMod SHIFT, L, exec, /nix/store/a5v7xpcyq0b56smxhld3jc8v7rsaw4j4-run-hyprlock/bin/run-hyprlock bind = $mainMod, f, togglefloating, bind = $mainMod SHIFT, F, fullscreen, 0 bind = $mainMod SHIFT, space, exec, rofi -show drun bind = , Print, exec, env DELETE_SCREENSHOT=1 /nix/store/nmgk0813hz9xzpp6nscx3kgr5n7dp12l-wayland-screenshoter/bin/wayland-screenshoter bind = CTRL, Print, exec, /nix/store/nmgk0813hz9xzpp6nscx3kgr5n7dp12l-wayland-screenshoter/bin/wayland-screenshoter # Move focus with mainMod + arrow keys bind = $mainMod, h, movefocus, l bind = $mainMod, l, movefocus, r bind = $mainMod, k, movefocus, u bind = $mainMod, j, movefocus, d bind = $mainMod SHIFT, left, resizeactive, -10 0 bind = $mainMod SHIFT, down, resizeactive, 0 10 bind = $mainMod SHIFT, up, resizeactive, 0 -10 bind = $mainMod SHIFT, left, resizeactive, 10 0 # Switch workspaces with mainMod + [0-9] bind = $mainMod, Tab, workspace, previous 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 # Move active window to a workspace with mainMod + SHIFT + [0-9] 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 existing workspaces with mainMod + scroll bind = $mainMod, mouse_down, workspace, e+1 bind = $mainMod, mouse_up, workspace, e-1 # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow source = /nix/store/80cjn3x1w7h56icgdaibabi9jvrpbybf-hypr-office.conf exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP QT_QPA_PLATFORMTHEME exec-once = systemd-run --user --unit=fcitx5-hypr /usr/bin/fcitx5 exec-once = systemd-run --user --unit=waybar-hypr /usr/bin/waybar exec-once = systemd-run --user --unit=polkit-hypr /usr/lib/polkit-kde-authentication-agent-1 exec-once = systemd-run --user --unit=kdeconnectd /usr/bin/kdeconnectd exec-once = systemd-run --user --unit=wpaperd-hypr /usr/bin/wpaperd # Windows rules windowrulev2 = float,class:(org.telegram.desktop) # Telegram have different class naming on xwayland windowrulev2 = float,class:^(TelegramDesktop)$ windowrulev2 = noblur,class:^(TelegramDesktop)$ # They even have different class naming for File chooser! FUCK!!! windowrulev2 = float,class:^(telegram-desktop)$ windowrulev2 = float,class:(steam) windowrulev2 = float,class:(SDL Application) windowrulev2 = float,initialTitle:(Steam) windowrulev2 = float,class:(mpv) windowrulev2 = float,class:(swayimg) windowrulev2 = float,class:(firefox),title:(Picture-in-Picture) windowrulev2 = size 20% 20%,class:(firefox),title:(Picture-in-Picture) # Fix rofi losing focus issue windowrulev2 = stayfocused,class:^(Rofi) layerrule = blur,waybar layerrule = blur,rofi Config File: /nix/store/80cjn3x1w7h56icgdaibabi9jvrpbybf-hypr-office.conf: Read Succeeded monitor=DP-1,preferred,auto,2 env = GDK_SCALE,2 env = QT_AUTO_SCREEN_SCALE_FACTOR,2 ======Config-End======== ```

Description

After toggling fullscreen 0 dispatcher for Telegram Desktop, the vmem usage is constantly increasing, and the memory won't release when the application was exited.

How to reproduce

Open telegram desktop (latest from Arch Linux repository, flatpak version not tested), open nvtop, toggle fullscreen 0 multiple time, and experimenters will see the GPU memory usage for Hyprland is increasing. Kill telegram desktop window, and the memory is keeping the same. Exit the telegram desktop process, the memory is still not released.

[Update] This issue is also reproducible on Firefox. Toggle floating mode on the window, then keep toggling the fullscreen mode, the vmem usage will also keep increase without release.

Crash reports, logs, images, videos

hyprland-high-vmem.log

Avimitin commented 2 months ago

https://github.com/user-attachments/assets/169f5de2-c7e5-4a78-8894-7a971d9d6ee0

Reproducible with windows resize

romanstingler commented 2 months ago

an you try installing egl_wayland-git from AUR and test again?

Avimitin commented 2 months ago

It is tested using the -git version.

$ yay -Qs egl
local/egl-wayland-git 1.1.15.r1.gf30cb0e-1
    EGLStream-based Wayland external platform (git version)
vaxerski commented 2 months ago

AMD, can't repro. Nvidia issue?

Avimitin commented 2 months ago

Probably, let me try my intel gpu

Avimitin commented 2 months ago

PROBABLY a bug introduced in nvidia beta (560). After downgrading to 555.58, this issue can't be reproduced now. Closed this issue for now?

romanstingler commented 2 months ago

yes should be closed as it is not a Hyprland issue

Avimitin commented 2 months ago

For other fellows that went into the same issue after updating to NVIDIA 560, here are some reference for you to track:

cubanismo commented 4 weeks ago

Please see the latest update here for a suggested workaround:

https://github.com/NVIDIA/egl-wayland/issues/126#issuecomment-2379945259