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.48k stars 898 forks source link

Freezing issue with nvidia when not explicitly disabling render:explicit_sync #7230

Closed BeauTaapken closed 3 months ago

BeauTaapken commented 3 months ago

Regression?

Yes

System Info and Version

System/Version info ```sh Hyprland, built from branch main at commit 83a334f97df4389ca30cb63e50317a66a82562b9 (core: Move to C++26 and use native_handle to CLOEXEC the debug fd (7219)). Date: Thu Aug 8 11:54:41 2024 Tag: v0.42.0-1-g83a334f9, commits: 5070 flags: (if any) System Information: System name: Linux Node name: archlinux Release: 6.10.3-arch1-2 Version: #1 SMP PREEMPT_DYNAMIC Tue, 06 Aug 2024 07:21:19 +0000 GPU information: 2d:00.0 VGA compatible controller [0300]: NVIDIA Corporation AD102 [GeForce RTX 4090] [10de:2684] (rev a1) (prog-if 00 [VGA controller]) NVRM version: NVIDIA UNIX Open Kernel Module for x86_64 560.31.02 Release Build (archlinux_builder@archlinux) Wed Jul 31 08:27:06 PM CEST 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: split-monitor-workspaces by Duckonaut ver 1.2.0 ======Config-Start====== Config File: /home/beau/.config/hypr/hyprland.conf: Read Succeeded # This is an example Hyprland config file. # # Refer to the wiki for more information. # # Please note not all available settings / options are set here. # For a full list, see the wiki # # See https://wiki.hyprland.org/Configuring/Monitors/ monitor=DP-3, 3440x1440@144, 0x441, 1, vrr,1 monitor=DP-1, 3440x1440@165, 3440x441, 1, vrr,1 monitor=DP-2, 2560x1080@75, 6880x0, 1, transform,3, vrr,1 # See https://wiki.hyprland.org/Configuring/Keywords/ for more # Execute your favorite apps at launch source=~/.config/hypr/execs.conf # Set programs that you use $terminal = kitty $fileManager = dolphin $menu = rofi -show drun # Some default env vars. source=~/.config/hypr/env.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 = 3 gaps_out = 5 border_size = 2 col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg col.inactive_border = rgba(595959aa) layout = dwindle } decoration { # See https://wiki.hyprland.org/Configuring/Variables/ for more rounding = 10 blur { enabled = true size = 3 passes = 1 vibrancy = 0.1696 } drop_shadow = true shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) } 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 } misc { # See https://wiki.hyprland.org/Configuring/Variables/ for more force_default_wallpaper = 2 # Set to 0 or 1 to disable the anime mascot wallpapers mouse_move_enables_dpms=true key_press_enables_dpms=true vrr = 1 #no_direct_scanout=true initial_workspace_tracking=0 font_family=BlexMono Nerd Font Mono } xwayland { force_zero_scaling = true } render { explicit_sync = false } # opengl { # nvidia_anti_flicker = false # } plugin { split-monitor-workspaces { count = 10 } } # workspace = 1, monitor:DP-3, default:true, persistent:true # workspace = 2, monitor:DP-3, default:true, persistent:true # workspace = 3, monitor:DP-3, default:true, persistent:true # workspace = 4, monitor:DP-3, default:true, persistent:true # workspace = 5, monitor:DP-3, default:true, persistent:true # workspace = 6, monitor:DP-1, default:true, persistent:true # workspace = 7, monitor:DP-1, default:true, persistent:true # workspace = 8, monitor:DP-1, default:true, persistent:true # workspace = 9, monitor:DP-1, default:true, persistent:true # workspace = 10, monitor:DP-1, default:true, persistent:true # workspace = 11, monitor:DP-2, default:true, persistent:true # workspace = 12, monitor:DP-2, default:true, persistent:true # workspace = 13, monitor:DP-2, default:true, persistent:true # workspace = 14, monitor:DP-2, default:true, persistent:true # workspace = 15, monitor:DP-2, default:true, persistent:true # Example per-device config # See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more # device { # name = epic-mouse-v1 # sensitivity = -0.5 # } source=~/.config/hypr/windowrules.conf source=~/.config/hypr/keybinds.conf Config File: /home/beau/.config/hypr/execs.conf: Read Succeeded # Bar, notifications, wallpaper utility exec-once = waybar & swaync & hyprpaper & hypridle # Clipboard # exec-once = klipper exec-once = wl-paste --type text --watch cliphist store #Stores only text data exec-once = wl-paste --type image --watch cliphist store #Stores only image data # Authentication agent (password popup) exec-once = /usr/lib/polkit-kde-authentication-agent-1 # Apps to start exec-once = firefox & steam-screensaver-fix-runtime & vesktop & thunderbird # Load plugins exec-once = hyprpm reload -n # Prevent sleep when playing games with controller exec-once = wljoywake -t 10 Config File: /home/beau/.config/hypr/env.conf: Read Succeeded env = XCURSOR_THEME,Bibata-Modern-Classic env = XCURSOR_SIZE,24 env = HYPRCURSOR_THEME,HyprBibataModernClassicSVG env = HYPRCURSOR_SIZE,24 env = QT_QPA_PLATFORMTHEME,qt6ct env = WLR_NO_HARDWARE_CURSORS,1 env = LIBVA_DRIVER_NAME,nvidia env = XDG_SESSION_TYPE,wayland env = GBM_BACKEND,nvidia-drm env = __GLX_VENDOR_LIBRARY_NAME,nvidia env = __GL_GSYNC_ALLOWED,1 env = XDG_CURRENT_DESKTOP,Hyprland env = XDG_SESSION_TYPE,wayland env = XDG_SESSION_DESKTOP,Hyprland Config File: /home/beau/.config/hypr/windowrules.conf: Read Succeeded # Example windowrule v1 # windowrule = float, ^(kitty)$ # Example windowrule v2 # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. # Kitty transparrency windowrule = opacity 0.9 override,^(kitty)$ # set opacity to 0.9 active for kitty # Xwaylandvideobridge fix windowrulev2 = opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$ windowrulev2 = noanim,class:^(xwaylandvideobridge)$ windowrulev2 = noinitialfocus,class:^(xwaylandvideobridge)$ss windowrulev2 = maxsize 1 1,class:^(xwaylandvideobridge)$ windowrulev2 = noblur,class:^(xwaylandvideobridge)$s # Unreal fix # Unreal 5? windowrulev2=unset,class:^(UnrealEditor)$,title:^\w*$ windowrulev2=noinitialfocus,class:^(UnrealEditor)$,title:^\w*$ windowrulev2=suppressevent activate,class:^(UnrealEditor)$,title:^\w*$ # Unreal 4 windowrulev2=unset,class:^(UE4Editor)$,title:^\w*$ windowrulev2=noinitialfocus,class:^(UE4Editor)$,title:^\w*$ windowrulev2=suppressevent activate,class:^(UE4Editor)$,title:^\w*$ # Jetbrains product fixes # TODO: somehow fix this if needed (fakefullscreen has been removed and PROBABLY been replaced with syncFullscreen/fullscreenState X Y) # windowrule = fakefullscreen, class:^(jetbrains.*)$ # Possible fix for floating popups made by san windowrulev2=nofocus,class:^(steamachievementnotifierv.*)$,title:^.*: Notification$ windowrulev2=noblur,class:^(steamachievementnotifierv.*)$,title:^.*: Notification$ windowrulev2=nofocus,class:^(steamachievementnotifierv.*)$,title:^.*: Now Tracking$ windowrulev2=noblur,class:^(steamachievementnotifierv.*)$,title:^.*: Now Tracking$ # new Steam notification fix # windowrulev2=idleinhibit none,class:^(steam)$,title:^(notificationtoasts_.*)$ windowrulev2=nofocus,class:^(steam)$,title:^(notificationtoasts_.*)$ Config File: /home/beau/.config/hypr/keybinds.conf: Read Succeeded # See https://wiki.hyprland.org/Configuring/Keywords/ for more $mainMod = SUPER # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = $mainMod, Q, exec, $terminal bind = $mainMod, C, killactive, bind = $mainMod, M, exit, bind = $mainMod, E, exec, $fileManager bind = $mainMod, V, togglefloating, bind = $mainMod, R, exec, $menu # bind = $mainMod, P, pseudo, # dwindle bind = $mainMod, J, togglesplit, # dwindle # Move focus with mainMod + arrow keys bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r bind = $mainMod, up, movefocus, u bind = $mainMod, down, movefocus, d # Enable again once split workspaces plugin can build without crashing hyprland # Switch workspaces on focused screen with mainMod + [0-9] bind = $mainMod, 1, split-workspace, 1 bind = $mainMod, 2, split-workspace, 2 bind = $mainMod, 3, split-workspace, 3 bind = $mainMod, 4, split-workspace, 4 bind = $mainMod, 5, split-workspace, 5 bind = $mainMod, 6, split-workspace, 6 bind = $mainMod, 7, split-workspace, 7 bind = $mainMod, 8, split-workspace, 8 bind = $mainMod, 9, split-workspace, 9 bind = $mainMod, 0, split-workspace, 10 # Move active window to a workspace on current screen with mainMod + SHIFT + [0-9] bind = $mainMod SHIFT, 1, split-movetoworkspace, 1 bind = $mainMod SHIFT, 2, split-movetoworkspace, 2 bind = $mainMod SHIFT, 3, split-movetoworkspace, 3 bind = $mainMod SHIFT, 4, split-movetoworkspace, 4 bind = $mainMod SHIFT, 5, split-movetoworkspace, 5 bind = $mainMod SHIFT, 6, split-movetoworkspace, 6 bind = $mainMod SHIFT, 7, split-movetoworkspace, 7 bind = $mainMod SHIFT, 8, split-movetoworkspace, 8 bind = $mainMod SHIFT, 9, split-movetoworkspace, 9 bind = $mainMod SHIFT, 0, split-movetoworkspace, 10 # Move active window to other displays bind = $mainMod SHIFT, left, split-changemonitor, prev bind = $mainMod SHIFT, right, split-changemonitor, +1 # Standby shortcut bind = $mainMod SHIFT, L, exec, /mnt/crucial-ssd/shell-scripts/standby-wayland.sh # Screenshot bind = CTRL, PRINT, exec, hyprshot -m region --clipboard-only # Rofi Clipboard bind = $mainMod SHIFT, V, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy # Audio control binde =, XF86AudioRaiseVolume, exec, wpctl set-volume -p $(hyprctl activewindow -j | jq -r '.pid') -l 1 5%+ binde =, XF86AudioLowerVolume, exec, wpctl set-volume -p $(hyprctl activewindow -j | jq -r '.pid') -l 1 5%- bind =, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle # # Example special workspace (scratchpad) # bind = $mainMod, S, togglespecialworkspace, magic # bind = $mainMod SHIFT, S, movetoworkspace, special:magic # Scroll through existing workspaces with mainMod + scroll # Something doesn't seem to like this (probably nvidia driver) # 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 # Fullscreen a window (mostly for games) bind = $mainMod, F, fullscreen ======Config-End======== ```

Description

After updating, it seems that the default for explicit sync has been changed to on by default. This seems to cause a weird freezing issue on at least nvidia gpu's while using the 560.31.02 driver with the open kernel module. The screen i had focus on would freeze after 10 - 20 seconds of focus, and moving to another screen with the mouse or shortcuts did still work, until all my screens froze. This caused hyprland to crash. Disabling render:explicit_sync seems to fix this issue.

I think this is just an issue with the Nvidia driver not properly supporting explicit sync for wayland yet, so for now I'd see this more as a bug report for people who run into this issue to quickly be able to find what can fix the issue for them

How to reproduce

have an NVIDIA gpu with the NVIDIA 560.31.02 driver (may also be the case with older driver versions) and the open kernel modules (did not test with the "old" closed source kernel modules). Once loaded, your focused screen will freeze after a little bit, but you can still move your mouse if you have another screen After all screens are frozen, hyprland will crash to the TTY (I do have SDDM, but it did not go to SDDM, which it does do when i normally have a hyprland crash)

Crash reports, logs, images, videos

seems like there is no crash report of this, if needed I will try and get it to generate.

LDAP commented 3 months ago

From the release notes:

Explicit sync support has been added and will be automatically turned on/off depending on your setup. For some select nvidia users, this might cause glitches. In such cases, disable it with render:explicit_sync = false

So this is more or less expected, for context: https://github.com/hyprwm/Hyprland/pull/7151

BeauTaapken commented 3 months ago

From the release notes:

Explicit sync support has been added and will be automatically turned on/off depending on your setup. For some select nvidia users, this might cause glitches. In such cases, disable it with render:explicit_sync = false

So this is more or less expected, for context: #7151

seems i've missed that, i'll close the ticket, just wondering what causes certain nvidia users to have the issue while others don't

vaxerski commented 3 months ago

thats an nvidia bug fwiw