Skip to content

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

Description

@BeauTaapken

Regression?

Yes

System Info and Version

System/Version info
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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions