Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hyprland git version crashes when focusing a monitor that was powered off and back on #7414

Closed
Cloudperry opened this issue Aug 19, 2024 · 22 comments
Labels
bug Something isn't working
Milestone

Comments

@Cloudperry
Copy link

Cloudperry commented Aug 19, 2024

Regression?

Yes

System Info and Version

System/Version info
Hyprland, built from branch main at commit 83d88fa56467a2b749fb2320e1595281107bd326  (hyprpm, hyprctl:  update shell completions).
Date: Mon Aug 19 00:21:59 2024
Tag: v0.42.0-42-g83d88fa5, commits: 5111

flags: (if any)


System Information:
System name: Linux
Node name: roni-desktop
Release: 6.10.5-2-cachyos-lto
Version: #1 SMP PREEMPT_DYNAMIC Thu, 15 Aug 2024 07:47:43 +0000


GPU information:
0d:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21 [Radeon RX 6950 XT] [1002:73a5] (rev c0) (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/roni/.config/hypr/hyprland.conf: Read Succeeded
source = ~/.config/hypr/startup.conf
source = ~/.config/hypr/settings.conf
source = ~/.config/hypr/input.conf
source = ~/.config/hypr/rules.conf


Config File: /home/roni/.config/hypr/startup.conf: Read Succeeded
#################
### AUTOSTART ###
#################

# Hyprlock
# exec-once = hyprlock
# Hypridle
exec-once = hypridle
# Notification service
exec-once = systemctl --user start swaync-without-graphical-target
# Status bar
exec-once = systemctl --user start ironbar
# Wallpaper service
exec-once = systemctl --user start hyprpaper
# Polkit service
exec-once = systemctl --user start lxqt-policykit-agent
# Clipboard history daemon
exec-once = systemctl --user start cliphist-text
exec-once = systemctl --user start cliphist-image

# Startup apps
exec-once = discord & corectrl & blueman-applet

#############################
### ENVIRONMENT VARIABLES ###
#############################

# See https://wiki.hyprland.org/Configuring/Environment-variables/

env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
#env = AQ_NO_ATOMIC,1
env = HYPRLAND_TRACE,1
env = AQ_TRACE,1

# Toolkit options
env = GDK_BACKEND,wayland,x11,*
env = QT_QPA_PLATFORM,wayland;xcb
env = QT_QPA_PLATFORMTHEME,qt6ct
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1

# KDE apps fixes
env = XDG_MENU_PREFIX,arch-


Config File: /home/roni/.config/hypr/settings.conf: Read Succeeded
################
### MONITORS ###
################

# See https://wiki.hyprland.org/Configuring/Monitors/
monitor = DP-3, 2560x1440@144, 1920x0, 1
monitor = HDMI-A-1, 1920x1080@60, 0x700, 1

###################
### MY PROGRAMS ###
###################

# See https://wiki.hyprland.org/Configuring/Keywords/

# Set programs that you use
$terminal = alacritty
$fileManager = dolphin
$browser = firefox
$textEditor = neovide
$menu = wofi --show drun
$menuExec = wofi --show run

#####################
### LOOK AND FEEL ###
#####################

# Refer to https://wiki.hyprland.org/Configuring/Variables/

# https://wiki.hyprland.org/Configuring/Variables/#general
general {
    gaps_in = 4
    gaps_out = 8

    border_size = 2

    # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
    col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
    col.inactive_border = rgba(595959aa)

    # Set to true enable resizing windows by clicking and dragging on borders and gaps
    resize_on_border = false

    # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
    allow_tearing = false

    layout = dwindle
}

# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
    rounding = 6

    # Change transparency of focused and unfocused windows
    active_opacity = 1.0
    inactive_opacity = 1.0

    drop_shadow = true
    shadow_range = 4
    shadow_render_power = 3
    col.shadow = rgba(1a1a1aee)

    # https://wiki.hyprland.org/Configuring/Variables/#blur
    blur {
        enabled = true
        size = 3
        passes = 1

        vibrancy = 0.1696
    }
}

# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
    enabled = true

    # 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
}

# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
    preserve_split = false
    no_gaps_when_only = 1
}

# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
    enable_swallow = true
    swallow_regex = .*
    initial_workspace_tracking = 0 # Special workspaces bug workaround
    force_default_wallpaper = 1
    disable_hyprland_logo = true
    vrr = 2
}

cursor {
    no_hardware_cursors = true
    no_break_fs_vrr = true
    min_refresh_rate = 48
}

render {
    explicit_sync = 1
    explicit_sync_kms = 0
    direct_scanout = true
}

debug {
    disable_logs = false
}


Config File: /home/roni/.config/hypr/input.conf: Read Succeeded
input {
    # Keyboard
    kb_layout = fi
    kb_variant = nodeadkeys
    repeat_rate = 20
    repeat_delay = 200

    # Mouse
    follow_mouse = 1
    sensitivity = -0.78 # -1.0 - 1.0, 0 means no modification.
    accel_profile = flat

    touchpad {
        natural_scroll = false
    }
}

gestures {
    workspace_swipe = false
}

# See https://wiki.hyprland.org/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier

# Binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, Q, killactive,
bind = $mainMod, Z, exec, loginctl terminate-session $XDG_SESSION_ID
bind = $mainMod Control_L, F, togglefloating,
bind = $mainMod, space, exec, $menu
bind = $mainMod SHIFT, space, exec, $menuExec
bind = $mainMod Control_L, T, togglesplit, # dwindle

# Important apps
bind = $mainMod, C, exec, $terminal
bind = $mainMod, B, exec, start-in-workspaces -a=$browser
bind = $mainMod, F, exec, $fileManager
bind = $mainMod, E, exec, $textEditor

# Move focus with mainMod + arrow keys
bind = $mainMod, H, movefocus, l
bind = $mainMod, S, movefocus, r
bind = $mainMod, N, movefocus, u
bind = $mainMod, T, movefocus, d

# Move window with mainMod + arrow keys
bind = $mainMod SHIFT, H, movewindow, l
bind = $mainMod SHIFT, S, movewindow, r
bind = $mainMod SHIFT, N, movewindow, u
bind = $mainMod SHIFT, T, movewindow, d

# Move window with mainMod + arrow keys
#bind = $mainMod, Left, swapwindow, l
#bind = $mainMod, Right, swapwindow, r
#bind = $mainMod, Up, swapwindow, u
#bind = $mainMod, Down, swapwindow, d

# Switch workspaces with mainMod + [0-9]
bind = $mainMod, Down, workspace, r+1
bind = $mainMod, Up, workspace, r-1
bind = $mainMod, Left, focusmonitor, l
bind = $mainMod, Right, focusmonitor, r

# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, Down, movetoworkspace, r+1
bind = $mainMod SHIFT, Up, movetoworkspace, r-1

# Special workspaces
bind = $mainMod, M, togglespecialworkspace, music
bind = $mainMod SHIFT, C, togglespecialworkspace, terminal
bind = $mainMod, G, togglespecialworkspace, fullscreenGame

# 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

# Clipboard history
bind = $mainMod, V, exec, cliphist list | wofi --show dmenu | cliphist decode | wl-copy

# Screenshotting
bind = $mainMod, Print, exec, grim -o DP-3
bind = $mainMod SHIFT, Print, exec, grim -g "$(slurp)"
bind = $mainMod CTRL, Print, exec, grim

# Media keys
bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioStop, exec, playerctl stop
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPrev, exec, playerctl previous
bindl = Control_L, XF86AudioNext, exec, playerctl position 5+
bindl = Control_L, XF86AudioPrev, exec, playerctl position 5-
bindel = Control_L, XF86AudioRaiseVolume, exec, playerctl volume 0.05+
bindel = Control_L, XF86AudioLowerVolume, exec, playerctl volume 0.05-

# Wallpaper switching
bind = $mainMod, W, exec, hyprctl hyprpaper preload /home/roni/Pictures/Wallpapers/hyprland-current-background.png
bind = $mainMod, W, exec, hyprctl hyprpaper wallpaper /home/roni/Pictures/Wallpapers/hyprland-current-background.png
bind = $mainMod, W, exec, hyprctl hyprpaper unload unused


Config File: /home/roni/.config/hypr/rules.conf: Read Succeeded
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules

# Example windowrule v1
# windowrule = float, ^(kitty)$

# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$

$high = 0.88 0.88
$medium = 0.91 0.91
$subtle = 0.94 0.94
$minimal = 0.97 0.97

windowrulev2 = suppressevent maximize,class:.*
windowrulev2 = workspace special:fullscreenGame, class:steam_app_[0-9]+, fullscreen:1
windowrulev2 = immediate, class:.*
windowrulev2 = opacity $minimal, class:^(neovide)$
windowrulev2 = opacity $subtle, class:^(Alacritty)$
windowrulev2 = opacity $subtle, class:^(org.kde.dolphin)$
windowrulev2 = opacity $minimal, class:^(discord)$
windowrulev2 = opacity 1.0 1.0, fullscreen:1

workspace = r[1-6], persistent:true
workspace = 1, monitor:DP-3, default:true
workspace = r[1-3], monitor:DP-3
workspace = 4, monitor:HDMI-A-1, default:true
workspace = r[4-6], monitor:HDMI-A-1
workspace = special:music, on-created-empty:deadbeef
workspace = special:terminal, on-created-empty:$terminal
workspace = special:fullscreenGame
animation = workspaces,1,4,default,slidefadevert
windowrulev2 = workspace 4 silent, class:^(discord)$

======Config-End========

Description

Hyprland crashes when focusing a monitor that was just powered off and back on if cursor:no_break_fs_vrr is on.

How to reproduce with two monitors

  1. Set cursor:no_break_fs_vrr = true and cursor:no_hardware_cursors = true
  2. Start Hyprland with two monitors on
  3. Unplug a monitor and plug it back in
  4. Switch focus to the monitor that was just turned on (using keybind or mouse) and Hyprland crashes

How to reproduce with one monitor

  1. Set cursor:no_break_fs_vrr = true and cursor:no_hardware_cursors = true
  2. Start Hyprland with the monitor on
  3. Unplug the monitor
  4. Plug the monitor back in and Hyprland crashes

Crash reports, logs, images, videos

hyprlandCrashReport3885.txt

Edit:

The crash happens instantly after powering on the monitor, if it was off when starting Hyprland. Was a different crash that got fixed.

@Cloudperry Cloudperry added the bug Something isn't working label Aug 19, 2024
@vaxerski
Copy link
Member

can you get a debug stacktrace from git https://wiki.hyprland.org/Crashes-and-Bugs/#obtaining-a-debug-stacktrace

@Cloudperry
Copy link
Author

Cloudperry commented Aug 19, 2024

hyprlandCrashReport69625.txt

Thats a log from a debug build of Hyprland, but I can't get the stacktrace instructions to work, because the coredumpctl command just prints No match found.

Edit: Trying a normal debug build of Hyprland next... Maybe debug building by editing the AUR pkgbuild does something weird.

Edit2: Still can't get coredumpctl to find any coredumps after cloning the git repo and building from it.

@Cloudperry
Copy link
Author

Got a full backtrace by using gdb over ssh.

gdb.txt

@vaxerski
Copy link
Member

broken pipe is non-fatal, but the crash report is good enough, thanks

@vaxerski
Copy link
Member

try now

@Cloudperry
Copy link
Author

Still crashing. I think I had 2 different crashes while getting the backtrace. One where it crashed instantly when powering the monitor back on and one after changing focus to the monitor. I'm trying to get a backtrace of the focus switching crash now using the latest version.

@Cloudperry
Copy link
Author

Now I got a backtrace for the focus switching crash. This time I didn't get a SIGPIPE and triggered a crash by moving focus with focusmonitor.

@vaxerski
Copy link
Member

hm, I thought I fixed that. Are you sure you're on the git version?

@Cloudperry
Copy link
Author

Cloudperry commented Aug 20, 2024

Yeah you did fix the crash that happened in my first backtrace, but it was a different crash (just turning monitor off and on). I updated the reproduction steps and added a backtrace of the crash that this issue report was supposed to be about. When creating the issue I didn't know that it was caused by cursor:no_break_fs_vrr.

Edit: cursor:no_break_fs_vrr in general is quite crashy after Aquamarine merge. For example toggling it on after starting the session can cause crashes.

@vaxerski vaxerski added this to the 0.43.0 milestone Aug 20, 2024
@vaxerski
Copy link
Member

does it still happen on latest hl-git + aq-git?

@Cloudperry
Copy link
Author

Yeah its still crashing with git Aquamarine and Hyprland. Had to check out commit 242e06b, because Hyprland git is not building.

@vaxerski
Copy link
Member

eeeee it is building on my end. Is the stacktrace still the same?

@Cloudperry
Copy link
Author

Yeah its building now. Not sure if it was failing to build with some specific commit or maybe I had too old hyprwayland-scanner or deps. Checking the stack trace soon.

@Cloudperry
Copy link
Author

Cloudperry commented Aug 30, 2024

Still same stack trace (same stack height or number of entries). Posting a new stack trace soon, because the earlier stack trace had quite a lot of entries without debug info.

Edit: Here's a better stack trace.

@vaxerski
Copy link
Member

patch.txt
odd, how about this hl patch?

@vaxerski
Copy link
Member

also try latest aq-git from rn

@Cloudperry
Copy link
Author

Hyprland is crashing at start with Aquamarine git since commit hyprwm/aquamarine@865cd94. Also tried the patch with a Aquamarine version from yesterday and it didn't change anything.

@vaxerski
Copy link
Member

see hyprwm/aquamarine#70

I need a debug stacktrace cuz I cant repro

@Cloudperry
Copy link
Author

Still same stack trace (same stack height or number of entries). Posting a new stack trace soon, because the earlier stack trace had quite a lot of entries without debug info.

Edit: Here's a better stack trace.

Is that debug stack trace okay? I checked the stack trace using patch.txt as well, but it was basically identical (38 stack entries instead of 36). Also I updated the reproduction steps to be more specific.

I can't reproduce the crash that was happening with that Aquamarine commit I mentioned and idk what was happening there.

@vaxerski
Copy link
Member

vaxerski commented Sep 1, 2024

ye that stack trace was for this issue, I meant for the insta crash after aq update

@vaxerski vaxerski modified the milestones: 0.43.0, 0.44.0 Sep 10, 2024
@vaxerski
Copy link
Member

can you try with 49713fa

@Cloudperry
Copy link
Author

It was fixed very recently by some other commit in Hyprland or Aquamarine. Can't reproduce it on 49713fa (with #6877 applied but shouldn't have an effect) or 8b86ee8 (without the MR).

I can maybe check which commit fixed the crash some other day (I'm interested, because I checked the code where it crashed and it was pretty weird).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants