Dota2 seems to be broken with 396.18 and Vulkan

Just upgraded my Gentoo box from 390.X driver to 396.18 and it seems that bunch of games, doesn’t start at all, mostly seems to be related to Vulkan (when I disable vulkan DLC in dota2, game comes up as expected).

Anyone else with same issue?

[   35.163030] vulkandriverque[881]: segfault at 0 ip 0000000000000000 sp 00007ffd3528f768 error 14 in vulkandriverquery[567cfc8e7000+246000]
[   38.862648] dota2[918]: segfault at 0 ip 0000000000000000 sp 00007ffd86217e18 error 14
[   55.287712] dota2[1001]: segfault at 0 ip 0000000000000000 sp 00007ffcaf4a9a88 error 14
[   69.626659] vulkandriverque[1250]: segfault at 0 ip 0000000000000000 sp 00007ffd8f221a68 error 14 in vulkandriverquery[60fc66811000+246000]
[   73.480773] dota2[1281]: segfault at 0 ip 0000000000000000 sp 00007ffdb2c06b68 error 14
[  369.837395] vulkandriverque[1916]: segfault at 0 ip 0000000000000000 sp 00007ffda9dd82e8 error 14 in vulkandriverquery[645b64ef8000+246000]
[  387.290697] HitmanPro[2012]: segfault at 0 ip 0000000000000000 sp 00007fff38ccd218 error 14 in HitmanPro[400000+4025000]
[  413.812605] dota2[2062]: segfault at 0 ip 0000000000000000 sp 00007ffc792d5758 error 14
[  428.520141] vulkandriverque[2348]: segfault at 0 ip 0000000000000000 sp 00007ffc3c64f218 error 14 in vulkandriverquery[5a15e6ad2000+246000]
[  533.321464] dota2[2879]: segfault at 0 ip 0000000000000000 sp 00007ffc3dfecfb8 error 14
[  612.743350] dota2[2997]: segfault at 0 ip 0000000000000000 sp 00007ffc84a7d0a8 error 14

Vulkan is just really broken on this driver. Running vulkaninfo:

===========
VULKAN INFO
===========

Vulkan Instance Version: 1.1.70

WARNING: [Loader Message] Code 0 : Skipping manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_api_dump.json - The file has already been read once
WARNING: [Loader Message] Code 0 : Skipping manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_parameter_validation.json - The file has already been read once
WARNING: [Loader Message] Code 0 : Skipping manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_unique_objects.json - The file has already been read once
WARNING: [Loader Message] Code 0 : Skipping manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_core_validation.json - The file has already been read once
WARNING: [Loader Message] Code 0 : Skipping manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_monitor.json - The file has already been read once
WARNING: [Loader Message] Code 0 : Skipping manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_object_tracker.json - The file has already been read once
WARNING: [Loader Message] Code 0 : Skipping manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_standard_validation.json - The file has already been read once
WARNING: [Loader Message] Code 0 : Skipping manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_screenshot.json - The file has already been read once
WARNING: [Loader Message] Code 0 : Skipping manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_vktrace_layer.json - The file has already been read once
WARNING: [Loader Message] Code 0 : Skipping manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_threading.json - The file has already been read once
WARNING: [Loader Message] Code 0 : Skipping manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_device_simulation.json - The file has already been read once
WARNING: [Loader Message] Code 0 : Skipping manifest file /usr/share/vulkan/icd.d/nvidia_icd.json - The file has already been read once
Segmentation fault (core dumped)

The 390.xx drivers already had this issue as well.

Thread 1 (Thread 0x7ffff795f100 (LWP 6488)):
#0  0x0000000000000000 in ?? ()
#1  0x00007ffff695736d in ?? () from /usr/lib64/libnvidia-glcore.so.396.18
#2  0x00007ffff6957869 in ?? () from /usr/lib64/libnvidia-glcore.so.396.18
#3  0x00007ffff76c6508 in ?? () from /usr/lib64/opengl/nvidia/lib/libGLX_nvidia.so.0
#4  0x00007ffff7d2f913 in terminator_CreateInstance (pCreateInfo=<optimized out>, pAllocator=<optimized out>, pInstance=<optimized out>)
    at /tmp-ram/portage/media-libs/vulkan-loader-9999/work/vulkan-loader-9999/loader/loader.c:5256
#5  0x00007ffff7d3029c in loader_create_instance_chain (pCreateInfo=pCreateInfo@entry=0x7fffffffcd90, pAllocator=pAllocator@entry=0x0, inst=inst@entry=0x48f1d0, 
    created_instance=created_instance@entry=0x7fffffffcdd8) at /tmp-ram/portage/media-libs/vulkan-loader-9999/work/vulkan-loader-9999/loader/loader.c:4757
#6  0x00007ffff7d35141 in vkCreateInstance (pCreateInfo=pCreateInfo@entry=0x7fffffffcef0, pAllocator=pAllocator@entry=0x0, pInstance=pInstance@entry=0x7fffffffcf40)
    at /tmp-ram/portage/media-libs/vulkan-loader-9999/work/vulkan-loader-9999/loader/trampoline.c:498
#7  0x00000000004094bf in AppCreateInstance (inst=0x7fffffffcf40) at /tmp-ram/portage/media-libs/vulkan-loader-9999/work/vulkan-loader-9999/demos/vulkaninfo.c:806
#8  main (argc=<optimized out>, argv=<optimized out>) at /tmp-ram/portage/media-libs/vulkan-loader-9999/work/vulkan-loader-9999/demos/vulkaninfo.c:2953

390.x ran fine for me.
396 contains new vulkan libs which need a changed ebuild. Currently fiddling with it, don’t know if that’s the problem.

Lazy guys,
libnvidia-glvkspirv.so has to be added to NV_GLX_LIBRARIES in ebuild and then it runs fine again.

yeah on Arch i needed to add this to the PKGBUILD:

install -D -m644 "libnvidia-glvkspirv.so.396.18" "${pkgdir}/usr/lib/libnvidia-glvkspirv.so.396.18"

and it started working, at least with vulkancapsviewer, no idea about dota 2 though

Xpander, does it fix your Rust issue, too? Afaik, Rust was to support vulkan. If it checks for it on start, it would crash.

No it doesn’t
Rust issue is different. It doesnt have vulkan yet and i dont even think it has that Spir-V compiler extension for opengl, so the compiler switch to old doesn’t help either, i tried anyway though.

Thx guys, I was indeed using broken ebuild.

https://bugs.gentoo.org/652992