Hyprland: Hyprland crashes when turning off monitor

Hyprland Version

System/Version info
  • hyperland version 0.35.0-37.3
λ hyprctl systeminfo
Hyprland, built from branch  at commit  dirty ().
Date: 
Tag: 

flags: (if any)


System Information:
System name: Linux
Node name: xor
Release: 6.6.11-1-default
Version: #1 SMP PREEMPT_DYNAMIC Thu Jan 11 08:01:39 UTC 2024 (05ae4ad)


GPU information: 
44:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 [Radeon RX 7900 XT/7900 XTX] [1002:744c] (rev cc) (prog-if 00 [VGA controller])


os-release: NAME="openSUSE Tumbleweed"
# VERSION="20240213"
ID="opensuse-tumbleweed"
ID_LIKE="opensuse suse"
VERSION_ID="20240213"
PRETTY_NAME="openSUSE Tumbleweed"
ANSI_COLOR="0;32"
# CPE 2.3 format, boo#1217921
CPE_NAME="cpe:2.3:o:opensuse:tumbleweed:20240213:*:*:*:*:*:*:*"
#CPE 2.2 format
#CPE_NAME="cpe:/o:opensuse:tumbleweed:20240213"
BUG_REPORT_URL="https://bugzilla.opensuse.org"
SUPPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org"
DOCUMENTATION_URL="https://en.opensuse.org/Portal:Tumbleweed"
LOGO="distributor-logo-Tumbleweed"


plugins:

Bug or Regression?

Bug

Description

I’ve now gotten this crash for the second time. It seems to not happen 100% consistently.

Core was generated by `Hyprland'.
Program terminated with signal SIGABRT, Aborted.
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
44	     return INTERNAL_SYSCALL_ERROR_P (ret) ? INTERNAL_SYSCALL_ERRNO (ret) : 0;
[Current thread is 1 (Thread 0x7f22c4816ac0 (LWP 3065))]
(gdb) bt
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1  0x00007f22c55c9a73 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2  0x00007f22c5576176 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3  0x00007f22c555d917 in __GI_abort () at abort.c:79
#4  0x000055dbbcd9c9b6 in handleUnrecoverableSignal(int) (sig=11) at ../src/Compositor.cpp:34
#5  0x00007f22c5576240 in <signal handler called> () at /lib64/libc.so.6
#6  operator() (__closure=0x0, x=<optimized out>, y=<optimized out>, data=<optimized out>, surf=0x55dbbe692dc0) at ../src/Window.cpp:361
#7  _FUN(wlr_surface*, int, int, void*) () at ../src/Window.cpp:366
#8  0x000055dbbcf1ab0e in surface_for_each_surface(wlr_surface*, int, int, wlr_surface_iterator_func_t, void*)
    (surface=0x55dbbe692dc0, x=0, y=0, iterator=0x55dbbcdd4c80 <_FUN(wlr_surface*, int, int, void*)>, user_data=0x55dbbe89a2d0) at ../subprojects/wlroots/types/wlr_compositor.c:1151
#9  0x000055dbbcdd4c0d in CWindow::updateSurfaceScaleTransformDetails() (this=0x55dbbe89a2d0) at ../src/Window.cpp:326
#10 CWindow::updateToplevel() (this=0x55dbbe89a2d0) at ../src/Window.cpp:311
#11 0x000055dbbce4167a in Events::listener_setTitleWindow(void*, void*) (owner=<optimized out>, data=<optimized out>) at ../src/events/Windows.cpp:895
#12 0x000055dbbce564e7 in std::function<void (void*, void*)>::operator()(void*, void*) const (__args#1=<optimized out>, __args#0=<optimized out>, this=<optimized out>)
    at /usr/include/c++/13/bits/std_function.h:591
#13 CHyprWLListener::emit(void*) (data=0x0, this=<optimized out>) at ../src/helpers/WLListener.cpp:61
#14 handleWrapped(wl_listener*, void*) (listener=0x55dbbe89a470, data=0x0) at ../src/helpers/WLListener.cpp:14
#15 0x00007f22c60764ac in wl_signal_emit_mutable (signal=<optimized out>, data=0x0) at ../src/wayland-server.c:2241
#16 0x00007f22c5531962 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#17 0x00007f22c552e2df in ffi_call_int (cif=cif@entry=0x7ffd9f6b4400, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
#18 0x00007f22c5530f26 in ffi_call (cif=cif@entry=0x7ffd9f6b4400, fn=<optimized out>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7ffd9f6b44d0) at ../src/x86/ffi64.c:710
#19 0x00007f22c60750a8 in wl_closure_invoke (closure=closure@entry=0x55dbbe618df0, target=<optimized out>, target@entry=0x55dbbe53e160, opcode=opcode@entry=2, data=<optimized out>, 
    data@entry=0x55dbbe488cf0, flags=2) at ../src/connection.c:1025
#20 0x00007f22c6079408 in wl_client_connection_data (fd=<optimized out>, mask=<optimized out>, data=<optimized out>) at ../src/wayland-server.c:438
#21 0x00007f22c6077e62 in wl_event_loop_dispatch (loop=0x55dbbd732820, timeout=timeout@entry=-1) at ../src/event-loop.c:1027
#22 0x00007f22c60785c5 in wl_display_run (display=0x55dbbd732730) at ../src/wayland-server.c:1493
#23 0x000055dbbcd85734 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /usr/include/c++/13/bits/unique_ptr.h:199

Full backtrace is attached.

How to reproduce

  1. swaylock
  2. turn off monitor
  3. come back hours later
  4. see above coredump, sometimes

Crash reports, logs, images, videos

Full backtrace:
(gdb) bt full
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
        tid = <optimized out>
        ret = 0
        pd = <optimized out>
        old_mask = {
          __val = {0}
        }
        ret = <optimized out>
#1  0x00007f22c55c9a73 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2  0x00007f22c5576176 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
        ret = <optimized out>
#3  0x00007f22c555d917 in __GI_abort () at abort.c:79
        save_stage = 1
        act = {
          __sigaction_handler = {
            sa_handler = 0x20,
            sa_sigaction = 0x20
          },
          sa_mask = {
            __val = {0, 0, 0, 0, 139784005615624, 140727278057304, 139787321797856, 0, 0, 140727278057000, 139787321796352, 139787321796240, 139787321796256, 140727278057968, 17854534424936460032, 97}
          },
          sa_flags = 11,
          sa_restorer = 0x55dbbe692dc0
        }
#4  0x000055dbbcd9c9b6 in handleUnrecoverableSignal(int) (sig=11) at ../src/Compositor.cpp:34
#5  0x00007f22c5576240 in <signal handler called> () at /lib64/libc.so.6
#6  operator() (__closure=0x0, x=<optimized out>, y=<optimized out>, data=<optimized out>, surf=0x55dbbe692dc0) at ../src/Window.cpp:361
        PMONITOR = 0x0
        PSURFACE = 0x55dbbe89ab58
#7  _FUN(wlr_surface*, int, int, void*) () at ../src/Window.cpp:366
#8  0x000055dbbcf1ab0e in surface_for_each_surface(wlr_surface*, int, int, wlr_surface_iterator_func_t, void*)
    (surface=0x55dbbe692dc0, x=0, y=0, iterator=0x55dbbcdd4c80 <_FUN(wlr_surface*, int, int, void*)>, user_data=0x55dbbe89a2d0) at ../subprojects/wlroots/types/wlr_compositor.c:1151
        subsurface = <optimized out>
#9  0x000055dbbcdd4c0d in CWindow::updateSurfaceScaleTransformDetails() (this=0x55dbbe89a2d0) at ../src/Window.cpp:326
#10 CWindow::updateToplevel() (this=0x55dbbe89a2d0) at ../src/Window.cpp:311
#11 0x000055dbbce4167a in Events::listener_setTitleWindow(void*, void*) (owner=<optimized out>, data=<optimized out>) at ../src/events/Windows.cpp:895
        PWINDOW = 0x55dbbe89a2d0
        PEVENTVEC = 0x55dbbe64eae0
        PEVENTVEC = 0x55dbbe85bc20
#12 0x000055dbbce564e7 in std::function<void (void*, void*)>::operator()(void*, void*) const (__args#1=<optimized out>, __args#0=<optimized out>, this=<optimized out>)
    at /usr/include/c++/13/bits/std_function.h:591
        pWrap = 0x55dbbe89a470
#13 CHyprWLListener::emit(void*) (data=0x0, this=<optimized out>) at ../src/helpers/WLListener.cpp:61
        pWrap = 0x55dbbe89a470
#14 handleWrapped(wl_listener*, void*) (listener=0x55dbbe89a470, data=0x0) at ../src/helpers/WLListener.cpp:14
        pWrap = 0x55dbbe89a470
#15 0x00007f22c60764ac in wl_signal_emit_mutable (signal=<optimized out>, data=0x0) at ../src/wayland-server.c:2241
        pos = 0x55dbbe89a470
        l = 0x55dbbe89a470
        cursor = {
          link = {
            prev = 0x55dbbe89a470,
            next = 0x7ffd9f6b41d0
          },
          notify = 0x7f22c6073750 <handle_noop>
        }
        end = {
          link = {
            prev = 0x7ffd9f6b41f0,
            next = 0x55dbbe69c928
          },
          notify = 0x7f22c6073750 <handle_noop>
        }
#16 0x00007f22c5531962 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#17 0x00007f22c552e2df in ffi_call_int (cif=cif@entry=0x7ffd9f6b4400, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
        classes = {X86_64_INTEGER_CLASS, 32765, 3310537196, 32546}
        stack = <optimized out>
        argp = 0x7ffd9f6b4240 ""
        arg_types = <optimized out>
        gprcount = 3
        ssecount = <optimized out>
        ngpr = 1
        nsse = 0
        i = <optimized out>
        avn = <optimized out>
        flags = <optimized out>
        reg_args = <optimized out>
#18 0x00007f22c5530f26 in ffi_call (cif=cif@entry=0x7ffd9f6b4400, fn=<optimized out>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7ffd9f6b44d0) at ../src/x86/ffi64.c:710
        arg_types = 0x7ffd9f6b4420
        i = <optimized out>
        nargs = 3
        max_reg_struct_size = <optimized out>
#19 0x00007f22c60750a8 in wl_closure_invoke (closure=closure@entry=0x55dbbe618df0, target=<optimized out>, target@entry=0x55dbbe53e160, opcode=opcode@entry=2, data=<optimized out>, 
    data@entry=0x55dbbe488cf0, flags=2) at ../src/connection.c:1025
        count = <optimized out>
        cif = {
          abi = FFI_UNIX64,
          nargs = 3,
          arg_types = 0x7ffd9f6b4420,
          rtype = 0x7f22c55321a0 <ffi_type_void>,
          bytes = 0,
          flags = 0
        }
        ffi_types = {0x7f22c55322a0 <ffi_type_pointer>, 0x7f22c55322a0 <ffi_type_pointer>, 0x7f22c55322a0 <ffi_type_pointer>, 0x0 <repeats 18 times>, 0x7f22c59d22e5 <std::filesystem::status(std::filesystem::__cxx11::path const&, std::error_code&)+213>}
        ffi_args = {0x7ffd9f6b43e0, 0x7ffd9f6b43e8, 0x55dbbe618e08, 0x3e8000081a4, 0x64, 0x0, 0x1a7c, 0xec, 0x55dbbebe1680, 0x7f22c6076990 <log_closure+80>, 0x7f22c5724ac0 <main_arena>, 0x55dbbd732730, 0xec, 0x7f22c55d9b68 <__libc_calloc+218>, 0x13cf1b72, 0x0, 0x55dbbcf9e778, 0x55dbbd02bfd0 <xdg_toplevel_requests.lto_priv+48>, 0x0, 0x1c, 0x1, 0x7f22c60746e8 <wl_closure_init+248>}
        implementation = <optimized out>
#20 0x00007f22c6079408 in wl_client_connection_data (fd=<optimized out>, mask=<optimized out>, data=<optimized out>) at ../src/wayland-server.c:438
        client = <optimized out>
        connection = <optimized out>
        resource = <optimized out>
        object = 0x55dbbe53e160
        closure = <optimized out>
        message = 0x55dbbd02bfd0 <xdg_toplevel_requests.lto_priv+48>
        p = {43, 1835010}
        resource_flags = 0
        opcode = 2
        size = <optimized out>
        since = <optimized out>
        len = <optimized out>
#21 0x00007f22c6077e62 in wl_event_loop_dispatch (loop=0x55dbbd732820, timeout=timeout@entry=-1) at ../src/event-loop.c:1027
        ep = {{
            events = 1,
            data = {
              ptr = 0x55dbbe68ec70,
              fd = -1100419984,
              u32 = 3194547312,
              u64 = 94402280746096
            }
          }, {
            events = 1,
            data = {
              ptr = 0x55dbbd732868,
              fd = -1116526488,
              u32 = 3178440808,
              u64 = 94402264639592
            }
          }, {
            events = 1280454400,
            data = {
              ptr = 0x55dbf7c80c76,
              fd = -137884554,
              u32 = 4157082742,
              u64 = 94403243281526
            }
          }, {
            events = 1,
            data = {
              ptr = 0x20,
              fd = 32,
              u32 = 32,
              u64 = 32
            }
          }, {
            events = 3196402128,
            data = {
              ptr = 0x9f6b4850000055db,
              fd = 21979,
              u32 = 21979,
              u64 = 11487354782973187547
            }
          }, {
            events = 32765,
            data = {
              ptr = 0x55dbbe8569e8,
              fd = -1098552856,
              u32 = 3196414440,
              u64 = 94402282613224
            }
          }, {
            events = 3196406232,
            data = {
              ptr = 0x1000055db,
              fd = 21979,
              u32 = 21979,
              u64 = 4294989275
            }
          }, {
            events = 0,
            data = {
              ptr = 0x7f22c6074b26 <wl_connection_flush+374>,
              fd = -972600538,
              u32 = 3322366758,
              u64 = 139787327982374
            }
          }, {
            events = 3190490368,
            data = {
              ptr = 0x20000055db,
              fd = 21979,
              u32 = 21979,
              u64 = 137438975451
            }
          }, {
            events = 0,
            data = {
              ptr = 0x7ffd9f6b4890,
              fd = -1620359024,
              u32 = 2674608272,
              u64 = 140727278061712
            }
          }, {
            events = 0,
            data = {
              ptr = 0x11434,
              fd = 70708,
              u32 = 70708,
              u64 = 70708
            }
          }, {
            events = 0,
            data = {
              ptr = 0x0,
              fd = 0,
              u32 = 0,
              u64 = 0
            }
          }, {
            events = 0,
            data = {
              ptr = 0x0,
              fd = 0,
              u32 = 0,
              u64 = 0
            }
          }, {
            events = 0,
            data = {
              ptr = 0x0,
              fd = 0,
              u32 = 0,
              u64 = 0
            }
          }, {
            events = 0,
            data = {
              ptr = 0x0,
              fd = 0,
              u32 = 0,
              u64 = 0
            }
          }, {
            events = 0,
            data = {
              ptr = 0xf7c80c764c522f00,
              fd = 1280454400,
              u32 = 1280454400,
              u64 = 17854534424936460032
            }
          }, {
            events = 3196407308,
            data = {
              ptr = 0x20000055db,
              fd = 21979,
              u32 = 21979,
              u64 = 137438975451
            }
          }, {
            events = 0,
            data = {
              ptr = 0x55dbbe8549d8,
              fd = -1098561064,
              u32 = 3196406232,
              u64 = 94402282605016
            }
          }, {
            events = 220,
            data = {
              ptr = 0x1400000000,
              fd = 0,
              u32 = 0,
              u64 = 85899345920
            }
          }, {
            events = 0,
            data = {
              ptr = 0x100000001,
              fd = 1,
              u32 = 1,
              u64 = 4294967297
            }
          }, {
            events = 116,
            data = {
              ptr = 0x7d00000074,
              fd = 116,
              u32 = 116,
              u64 = 536870912116
            }
          }, {
            events = 134,
            data = {
              ptr = 0x980000008f,
              fd = 143,
              u32 = 143,
              u64 = 652835029135
            }
          }, {
            events = 161,
            data = {
              ptr = 0x930000008b,
              fd = 139,
              u32 = 139,
              u64 = 631360192651
            }
          }, {
            events = 148,
            data = {
              ptr = 0x9d0000009c,
              fd = 156,
              u32 = 156,
              u64 = 674309865628
            }
          }, {
            events = 165,
            data = {
              ptr = 0xbe2b0660000000a6,
              fd = 166,
              u32 = 166,
              u64 = 13703053300591493286
            }
          }, {
            events = 21979,
            data = {
              ptr = 0x55dbbe2b0678,
              fd = -1104476552,
              u32 = 3190490744,
              u64 = 94402276689528
            }
          }, {
            events = 3190490768,
            data = {
              ptr = 0x55db,
              fd = 21979,
              u32 = 21979,
              u64 = 21979
            }
          }, {
            events = 0,
            data = {
              ptr = 0x55db00000008,
              fd = 8,
              u32 = 8,
              u64 = 94399086198792
            }
          }, {
            events = 2674608280,
            data = {
              ptr = 0xc55796d000007ffd,
              fd = 32765,
              u32 = 32765,
              u64 = 14220000168543027197
            }
          }, {
            events = 32546,
            data = {
              ptr = 0x0,
              fd = 0,
              u32 = 0,
              u64 = 0
            }
          }, {
            events = 1280454400,
            data = {
              ptr = 0x8f7c80c76,
              fd = -137884554,
              u32 = 4157082742,
              u64 = 38516821110
            }
          }, {
            events = 0,
            data = {
              ptr = 0x55dbbe33ee60,
              fd = -1103892896,
              u32 = 3191074400,
              u64 = 94402277273184
            }
          }}
        source = <optimized out>
        i = 0
        count = <optimized out>
        has_timers = <optimized out>
#22 0x00007f22c60785c5 in wl_display_run (display=0x55dbbd732730) at ../src/wayland-server.c:1493
#23 0x000055dbbcd85734 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /usr/include/c++/13/bits/unique_ptr.h:199
        cmd = "Hyprland"
        configPath = ""
        ignoreSudo = <optimized out>
        args = std::vector of length 0, capacity 0
(gdb) 

About this issue

  • Original URL
  • State: closed
  • Created 4 months ago
  • Comments: 15 (11 by maintainers)

Most upvoted comments

@levnikmyskin the issue https://github.com/hyprwm/Hyprland/issues/4628 got solved on my machine, infinitely thxx if i have any issues i will report it