Ashes icon indicating copy to clipboard operation
Ashes copied to clipboard

vulkaninfo segfaults

Open aruncveli opened this issue 8 months ago • 2 comments

I tried building this on an ancient laptop running a Geforce 820M with proprietary driver v390.157. Cloned with submodules, ran cmake ., cmake --build . and cmake --build . --target install. It succeeded.

In /binaries/amd64/Release/lib, I ran VK_DRIVER_FILES=./ashesGlRenderer_icd.json vulkaninfo --summary, resulting in the below output:

==========
VULKANINFO
==========

Vulkan Instance Version: 1.4.321


Instance Extensions: count = 9
------------------------------
VK_EXT_debug_report                    : extension revision 10
VK_EXT_debug_utils                     : extension revision 2
VK_KHR_display                         : extension revision 23
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_portability_enumeration         : extension revision 1
VK_KHR_surface                         : extension revision 25
VK_KHR_xcb_surface                     : extension revision 6
VK_KHR_xlib_surface                    : extension revision 6
VK_LUNARG_direct_driver_loading        : extension revision 1

Instance Layers: count = 9
--------------------------
VK_LAYER_INTEL_nullhw           INTEL NULL HW                1.1.73   version 1
VK_LAYER_KHRONOS_validation     Khronos Validation Layer     1.4.321  version 1
VK_LAYER_LUNARG_api_dump        LunarG API dump layer        1.4.321  version 2
VK_LAYER_LUNARG_monitor         Execution Monitoring Layer   1.4.321  version 1
VK_LAYER_LUNARG_screenshot      LunarG image capture layer   1.4.321  version 1
VK_LAYER_MESA_device_select     Linux device selection layer 1.4.303  version 1
VK_LAYER_MESA_overlay           Mesa Overlay layer           1.4.303  version 1
VK_LAYER_MESA_screenshot        Mesa Screenshot layer        1.4.303  version 1
VK_LAYER_MESA_vram_report_limit Limit reported VRAM          1.4.303  version 1

Devices:
========
GPU0:
        apiVersion         = 1.0.0
        driverVersion      = 0
        vendorID           = 0x10de
        deviceID           = 0x0000
        deviceType         = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
        deviceName         = GeForce 820M/PCIe/SSE2 (gl)
Segmentation fault         (core dumped) VK_DRIVER_FILES=./ashesGlRenderer_icd.json vulkaninfo --summary

coredumpctl printed the following out:

Process 9716 (vulkaninfo) of user 1000 dumped core.

                Module libnvidia-eglcore.so.390.157 without build-id.
                Module libnvidia-glsi.so.390.157 without build-id.
                Module libEGL_nvidia.so.0 without build-id.
                Module libnvidia-glcore.so.390.157 without build-id.
                Module libnvidia-tls.so.390.157 without build-id.
                Module libGLX_nvidia.so.0 without build-id.
                Stack trace of thread 9716:
                #0  0x00007f700fb7784a _ZN5ashes2gl7Context4lockEv (.../Ashes/binaries/amd64/Release/lib/libashesGlRenderer.so.1.0 + 0x17784a)
                #1  0x00007f700fba118d _ZNK5ashes2gl6Device10getContextEv (.../Ashes/binaries/amd64/Release/lib/libashesGlRenderer.so.1.0 + 0x1a118d)
                #2  0x00007f700fba19df _ZN5ashes2gl6DeviceD1Ev (.../Ashes/binaries/amd64/Release/lib/libashesGlRenderer.so.1.0 + 0x1a19df)
                #3  0x00007f700fb27f35 _ZN5ashes2gl15vkDestroyDeviceEP10VkDevice_TPK21VkAllocationCallbacks (.../Ashes/binaries/amd64/Release/lib/libashesGlRenderer.so.1.0 + 0x127f35)
                #4  0x00007f700febb00b n/a (libvulkan.so.1 + 0x3100b)
                #5  0x00007f700fecc4d5 vkDestroyDevice (libvulkan.so.1 + 0x424d5)
                #6  0x0000558f2be3380f n/a (/usr/bin/vulkaninfo + 0xc780f)
                #7  0x0000558f2bd98b03 n/a (/usr/bin/vulkaninfo + 0x2cb03)
                #8  0x00007f70100376b5 n/a (libc.so.6 + 0x276b5)
                #9  0x00007f7010037769 __libc_start_main (libc.so.6 + 0x27769)
                #10 0x0000558f2bd9ac35 n/a (/usr/bin/vulkaninfo + 0x2ec35)
                ELF object binary architecture: AMD x86-64

I'm not very experienced with cmake and core dump analysis. Is this something went wrong due to configuration on my side? Can you suggest a direction to dig more?

aruncveli avatar Jul 29 '25 20:07 aruncveli

Except from running this command through gdb and inspecting the values in the debugger, I have no clue there. It seems to crash on device destruction, while trying to reserve the context for the current thread (ashes::gl::Context::lock), in a GLX function call, which points to either glXMakeCurrent or eglMakeCurrent, which is rather weird...

DragonJoker avatar Jul 29 '25 20:07 DragonJoker

Thanks for the swift response!

Running this command through gdb and inspecting the values in the debugger

I'll ask Google/some LLM how to do this and see what I can find. 👍

aruncveli avatar Jul 29 '25 20:07 aruncveli