Vulkan layer causes mpv to segfault on startup
Do not report issue for old MangoHud versions
Describe the bug mpv often segfaults immediately after startup.
List relevant hardware/software information
- Arch Linux
- MangoHud 0.8.2-2 from Arch repos
- GPUs: Intel(R) Graphics (RPL-S) (Mesa 25.3.1) & NVIDIA GeForce RTX 4080 Laptop GPU (580.105.08)
To Reproduce Steps to reproduce the behavior:
- Run
MANGOHUD=1 mpv.
Expected behavior mpv should launch, and if given path to a file, start playing it (or display usage otherwise).
Screenshots n/a
Additional context Stack trace:
#0 0x00007fffdc4459d3 in std::__detail::_Hash_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, true>::_M_next
(this=0x5550009319be) at /usr/include/c++/15.2.1/bits/hashtable_policy.h:366
#1 std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, true> > >::_M_deallocate_nodes (this=0x555555bedf50, __n=0x5550009319be)
at /usr/include/c++/15.2.1/bits/hashtable_policy.h:1593
#2 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, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, 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> >::~_Hashtable (this=0x555555bedf50, this=<optimized out>) at /usr/include/c++/15.2.1/bits/hashtable.h:1852
#3 0x00007fffdc43192d in std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, 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::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::~unordered_map
(this=0x555555bedf50, this=<optimized out>) at /usr/include/c++/15.2.1/bits/unordered_map.h:112
#4 overlay_params::~overlay_params (this=0x555555bedac0, this=<optimized out>)
at ../MangoHud-v0.8.2/src/overlay_params.h:283
#5 0x00007fffdc445826 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release_last_use (this=0x555555bedab0)
at /usr/include/c++/15.2.1/bits/shared_ptr_base.h:174
#6 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release_last_use_cold (this=0x555555bedab0)
at /usr/include/c++/15.2.1/bits/shared_ptr_base.h:198
#7 0x00007fffdc4b9fd8 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=0x555555bedab0)
at /usr/include/c++/15.2.1/bits/shared_ptr_base.h:352
#8 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count (this=0x7fffce7f4988, this=<optimized out>)
at /usr/include/c++/15.2.1/bits/shared_ptr_base.h:1069
#9 std::__shared_ptr<overlay_params, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr
(this=0x7fffce7f4980, this=<optimized out>) at /usr/include/c++/15.2.1/bits/shared_ptr_base.h:1531
#10 std::shared_ptr<overlay_params>::~shared_ptr (this=0x7fffce7f4980, this=<optimized out>)
at /usr/include/c++/15.2.1/bits/shared_ptr.h:175
#11 NVIDIA::get_instant_metrics_nvml (this=0x5555558c7890, metrics=<optimized out>)
at ../MangoHud-v0.8.2/src/nvidia.cpp:155
#12 NVIDIA::get_samples_and_copy (this=0x5555558c7890) at ../MangoHud-v0.8.2/src/nvidia.cpp:237
#13 0x00007fffdc600684 in execute_native_thread_routine () at /usr/lib/mangohud/libMangoHud.so
#14 0x00007ffff369698b in start_thread (arg=<optimized out>) at pthread_create.c:448
#15 0x00007ffff371a9cc in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Much less commonly, it aborts with SIGABRT instead:
free(): corrupted unsorted chunks
Aborted (core dumped) /usr/bin/mpv
but I couldn't catch that one with gdb. I should probably reenable coredump storage at some point…
My MangoHud.conf:
gpu_stats
gpu_temp
gpu_load_change
cpu_stats
cpu_temp
cpu_load_change
io_read
io_write
vram
ram
fps
frametime
engine_short_names
engine_version
gpu_name
vulkan_driver
frame_timing
font_size=18
horizontal
no_display
offset_x=1
offset_y=1
background_alpha=0.2
alpha=0.7
toggle_logging=F13
upload_log=F14
permit_upload=0
My mpv.conf:
hwdec=vaapi
vo=gpu-next
gpu-api=vulkan
gpu-context=waylandvk
vulkan-device=868088a7-0400-0000-0002-000000000000
target-colorspace-hint=yes
volume=50
osd-fractions
script-opts=osc-timems=yes
Notably, I was unable to replicate the issue when mpv's vulkan-device points to NVIDIA GPU (maybe because VkDevice on NVIDIA takes ages to be created?), and once successfully launched once, future launches on Intel are much less likely to crash.
Same thing happens with hwdec=vulkan and ANV_DEBUG=video-decode, but less often from what I've noticed.
quick test, does legacy_layout=0 change anything?
So far I'm unable to reproduce with that added on top of MangoHud.conf, but right now I can't reproduce it without that line either…
I'll keep it there and let you know in a couple of days if this resolves my issue.
Nope, unfortunately it's still occasionally happening, with identical backtrace.