After switching from an NVIDIA RTX 3060 to an AMD radeon RX 7900xt, a handful of games crash hyprland from a random span of roughtly 5 minutes to 50 minutes after launching.
When it crashes, all monitors freeze for ~5 seconds, audio still works, and than hyprland crashes and is put into safe mode. If I close hyprland and reopen it, next time the crash occurs, hyprland is stuck launching in the ttui and never enters safe mode and I have to forcefully reboot.
All the games that have done this are running on DirectX 12 and games running Vulkan seem not to have this issue.
Here is the hyprland crash report (for some reason all the crash reports say August 5th, I have no idea why it says that but it happened today):
--------------------------------------------
Hyprland Crash Report
--------------------------------------------
Oops
Hyprland received signal 6(ABRT)
Version: efb50993780079460b0cbed1363e2166a2de1d9f
Tag: v0.56.2
Date: Wed Aug 5 14:13:21 2026
Flags:
System info:
System name: Linux
Node name: archlinux
Release: 7.2.5-hardened1-1-hardened
Version: #1 SMP PREEMPT_DYNAMIC Sat, 12 Sep 2026 11:41:39 +0000
GPU:
03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 [Radeon RX 7900 XT/7900 XTX/7900 GRE/7900M] [1002:744c] (rev cc) (prog-if 00 [VGA controller])
7c:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Granite Ridge [Radeon Graphics] [1002:13c0] (rev c9) (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
Libraries:
Hyprgraphics: built against 0.5.1, system has 0.5.1
Hyprutils: built against 0.14.1, system has 0.14.2
Hyprcursor: built against 0.1.13, system has 0.1.13
Hyprlang: built against 0.6.8, system has 0.6.8
Aquamarine: built against 0.15.0, system has 0.15.0
Backtrace:
#0 | Hyprland(_Z12getBacktracev+0x73) [0x8b5ca5224f3]
getBacktrace()
??:?
#1 | Hyprland(_ZN13CrashReporter18createAndSaveCrashEi+0xad4) [0x8b5ca4469d4]
CrashReporter::createAndSaveCrash(int)
??:?
#2 | Hyprland(+0x3bc7ee) [0x8b5ca31c7ee]
void std::println<>(_IO_FILE*, std::basic_format_string<char>)
??:?
#3 | /usr/lib/libc.so.6(+0x3e6f0) [0x64fb3c43e6f0]
??
??:0
#4 | /usr/lib/libc.so.6(+0x9a17c) [0x64fb3c49a17c]
??
??:0
#5 | /usr/lib/libc.so.6(gsignal+0x20) [0x64fb3c43e5d0]
??
??:0
#6 | Hyprland(_Z10assertImplIJRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEviSt17basic_string_viewIcS3_ESt19basic_format_stringIcJDpNSt13type_identityIT_E4typeEEEDpOSB_+0xe3) [0x8b5ca193ff2]
void assertImpl<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>(int, std::basic_string_view<char, std::char_traits<char> >, std::basic_format_string<char, std::type_identity<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>::type>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)
??:?
#7 | Hyprland(_ZN6Render2GL15CHyprOpenGLImpl5beginEN9Hyprutils6Memory14CSharedPointerIN7Monitor8CMonitorEEERKNS2_4Math7CRegionENS4_INS_12IFramebufferEEESt8optionalIS9_E+0x80b) [0x8b5ca922acb]
Render::GL::CHyprOpenGLImpl::begin(Hyprutils::Memory::CSharedPointer<Monitor::CMonitor>, Hyprutils::Math::CRegion const&, Hyprutils::Memory::CSharedPointer<Render::IFramebuffer>, std::optional<Hyprutils::Math::CRegion>)
??:?
#8 | Hyprland(_ZN6Render2GL15CHyprGLRenderer19beginRenderInternalEN9Hyprutils6Memory14CSharedPointerIN7Monitor8CMonitorEEERNS2_4Math7CRegionEb+0x17d) [0x8b5ca90f55d]
Render::GL::CHyprGLRenderer::beginRenderInternal(Hyprutils::Memory::CSharedPointer<Monitor::CMonitor>, Hyprutils::Math::CRegion&, bool)
??:?
#9 | Hyprland(_ZN6Render13IHyprRenderer11beginRenderEN9Hyprutils6Memory14CSharedPointerIN7Monitor8CMonitorEEERNS1_4Math7CRegionENS_11eRenderModeENS3_I9IHLBufferEENS3_INS_12IFramebufferEEEb+0x8d4) [0x8b5ca961fa4]
Render::IHyprRenderer::beginRender(Hyprutils::Memory::CSharedPointer<Monitor::CMonitor>, Hyprutils::Math::CRegion&, Render::eRenderMode, Hyprutils::Memory::CSharedPointer<IHLBuffer>, Hyprutils::Memory::CSharedPointer<Render::IFramebuffer>, bool)
??:?
#10 | Hyprland(_ZN6Render13IHyprRenderer13renderMonitorEN9Hyprutils6Memory14CSharedPointerIN7Monitor8CMonitorEEEb+0xde0) [0x8b5ca973b90]
Render::IHyprRenderer::renderMonitor(Hyprutils::Memory::CSharedPointer<Monitor::CMonitor>, bool)
??:?
#11 | Hyprland(_ZN7Monitor22CMonitorFrameScheduler7onFrameEv+0x300) [0x8b5ca6aef10]
Monitor::CMonitorFrameScheduler::onFrame()
??:?
#12 | /usr/lib/libhyprutils.so.13(_ZN9Hyprutils6Signal15CSignalListener12emitInternalEPv+0x2d) [0x64fb3e0541ad]
??
??:0
#13 | /usr/lib/libhyprutils.so.13(_ZN9Hyprutils6Signal11CSignalBase12emitInternalEPv+0x1b3) [0x64fb3e054423]
??
??:0
#14 | /usr/lib/libhyprutils.so.13(_ZN9Hyprutils6Signal15CSignalListener12emitInternalEPv+0x2d) [0x64fb3e0541ad]
??
??:0
#15 | /usr/lib/libhyprutils.so.13(_ZN9Hyprutils6Signal11CSignalBase12emitInternalEPv+0x1b3) [0x64fb3e054423]
??
??:0
#16 | /usr/lib/libaquamarine.so.14(_ZN10Aquamarine11CDRMBackend14handlePageFlipEmjjjj+0x56c) [0x64fb3e1852fc]
??
??:0
#17 | /usr/lib/libaquamarine.so.14(+0xc9571) [0x64fb3e185571]
??
??:0
#18 | /usr/lib/libdrm.so.2(drmHandleEvent+0x135) [0x64fb3dc62e95]
??
??:0
#19 | /usr/lib/libaquamarine.so.14(_ZN10Aquamarine11CDRMBackend14dispatchEventsEv+0x135) [0x64fb3e17e3f5]
??
??:0
#20 | Hyprland(+0x6a079a) [0x8b5ca60079a]
std::_Hashtable<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned int>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned int> >, std::__detail::_Select1st, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned int>, true>*, unsigned long)
??:?
#21 | /usr/lib/libwayland-server.so.0(wl_event_loop_dispatch+0x1e2) [0x64fb3def1992]
??
??:0
#22 | /usr/lib/libwayland-server.so.0(wl_display_run+0x37) [0x64fb3def3b87]
??
??:0
#23 | Hyprland(_ZN17CEventLoopManager9enterLoopEv+0x2f3) [0x8b5ca603b73]
CEventLoopManager::enterLoop()
??:?
#24 | Hyprland(main+0x1174) [0x8b5ca1dcd44]
main
??:?
#25 | /usr/lib/libc.so.6(+0x27781) [0x64fb3c427781]
??
??:0
#26 | /usr/lib/libc.so.6(__libc_start_main+0x89) [0x64fb3c4278b9]
??
??:0
#27 | Hyprland(_start+0x25) [0x8b5ca3055e5]
_start
??:?
Log tail:
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_DOWN → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS → DEBOUNCE_EVENT_TIMEOUT_SHORT → DEBOUNCE_STATE_IS_UP_WAITING
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_UP_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_UP
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_IS_DOWN_WAITING
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_DOWN_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_DOWN
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_DOWN → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS → DEBOUNCE_EVENT_TIMEOUT_SHORT → DEBOUNCE_STATE_IS_UP_WAITING
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_UP_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_UP
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_IS_DOWN_WAITING
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_DOWN_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_DOWN
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_DOWN → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS → DEBOUNCE_EVENT_TIMEOUT_SHORT → DEBOUNCE_STATE_IS_UP_WAITING
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_UP_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_UP
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_IS_DOWN_WAITING
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_DOWN_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_DOWN
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_DOWN → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS → DEBOUNCE_EVENT_TIMEOUT_SHORT → DEBOUNCE_STATE_IS_UP_WAITING
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_UP_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_UP
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_IS_DOWN_WAITING
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_DOWN_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_DOWN
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_DOWN → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS → DEBOUNCE_EVENT_TIMEOUT_SHORT → DEBOUNCE_STATE_IS_UP_WAITING
DEBUG from aquamarine ]: [libinput] Plugin:button-debounce - debounce state: DEBOUNCE_STATE_IS_UP_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_UP
ERR from aquamarine ]: [EGL] Command eglDupNativeFenceFDANDROID errored out with EGL_BAD_PARAMETER (0x12300): eglDupNativeFenceFDANDROID
Hyprland version
Hyprland 0.56.2 built from branch v0.56.2 at commit efb50993780079460b0cbed1363e2166a2de1d9f clean ([gha] Nix: update inputs).
Date: Wed Aug 5 14:13:21 2026
Tag: v0.56.2, commits: 7661
Libraries:
Hyprgraphics: built against 0.5.1, system has 0.5.1
Hyprutils: built against 0.14.1, system has 0.14.2
Hyprcursor: built against 0.1.13, system has 0.1.13
Hyprlang: built against 0.6.8, system has 0.6.8
Aquamarine: built against 0.15.0, system has 0.15.0
Version ABI string: efb50993780079460b0cbed1363e2166a2de1d9f_aq_0.15_hu_0.14_hg_0.5_hc_0.1_hlg_0.6
no flags were set