**Environment:**
- OS: Arch Linux
- GPU and driver version: NVIDIA GeForce RTXā¦ 3060 Laptop GPU 570.124.04
- SDK or header version if building from repo: N/A
- Options enabled (synchronization, best practices, etc.): N/A
**Describe the Issue**
Creating `VkInstance` with `VK_LAYER_KHRONOS_validation` layer fails with the following message:
`/usr/lib/libVkLayer_khronos_validation.so: undefined symbol: _ZN3vku42safe_VkVideoSessionParametersCreateInfoKHR10initializeEPK37VkVideoSessionParametersCreateInfoKHRPNS_14PNextCopyStateE
Requested layer "VK_LAYER_KHRONOS_validation" failed to load!`
**Expected behavior**
Expected behaviour is successful `VkInstance` creation with `VK_LAYER_KHRONOS_validation` layers enabled and working validation layers messages. This was the case until upgrading the validation layers package to version 1.4.304.1.
Creation of `VkInstance` without `VK_LAYER_KHRONOS_validation` works and the Vulkan applications runs as expected.
**Downgrading ONLY `vulkan-validation-layers` package to version 1.3.296.0 also fixes the issue and the `VkInstance` is successfully created with working validation layers.** This eliminates the potential issues with the driver versions though this can still be caused by the faulty packaging of Arch Linux package `vulkan-validation-layers`.
**Additional context**
Everything in the system is installed via Arch Linux package manager `pacman` and whole system is up to date as of 2025/03/02, no partial upgrades.
`vulkaninfo` lists `VK_LAYER_KHRONOS_validation` as present:
```
Layers: count = 10
==================
VK_LAYER_KHRONOS_validation (Khronos Validation Layer) Vulkan version 1.4.304, layer version 1:
Layer Extensions: count = 4
VK_EXT_debug_report : extension revision 9
VK_EXT_debug_utils : extension revision 1
VK_EXT_layer_settings : extension revision 2
VK_EXT_validation_features : extension revision 2
Devices: count = 1
GPU id = 0 (NVIDIA GeForce RTX 3060 Laptop GPU)
Layer-Device Extensions: count = 3
VK_EXT_debug_marker : extension revision 4
VK_EXT_tooling_info : extension revision 1
VK_EXT_validation_cache : extension revision 1
```
No environment variable is set that could effect Vulkan and Validation layers, nothing is downloaded or compiled elsewhere, everything is done via package manager.
System is running on KDE Plasma with Wayland but that doesn't affect the outcome, application runs without issues with validation layers disabled, or validation layers downgraded to a previous version.
Here is the list of versions of all related packages installed in the system:
- linux 6.13.5
- mesa 24.3.4
- nvidia-open 570.124.04
- nvidia-utils 570.124.04
- vulkan-headers 1.4.304.1
- vulkan-icd-loader 1.4.304.1
- vulkan-validation-layers 1.4.304.1
- clang 19.1.7
- llvm 19.1.7
Here is a working C code to get the mentioned output:
```C
#include <vulkan/vulkan.h>
VkInstance instance;
VkDebugUtilsMessengerEXT messenger;
VKAPI_ATTR VkBool32 VKAPI_CALL messageCallback( VkDebugUtilsMessageSeverityFlagBitsEXT severity,
VkDebugUtilsMessageTypeFlagsEXT type,
const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
void* pUserData) {
printf("%s", pCallbackData->pMessage);
return VK_FALSE;
}
void createInstance() {
const char *layers[] = {
"VK_LAYER_KHRONOS_validation"
};
const char *extensions[] = {
VK_EXT_DEBUG_UTILS_EXTENSION_NAME
};
VkDebugUtilsMessengerCreateInfoEXT messengerInfo = {
.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,
.pNext = NULL,
.flags = 0,
.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT |
VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT |
VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT |
VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT,
.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT |
VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT |
VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT,
.pfnUserCallback = messageCallback,
.pUserData = NULL
};
VkApplicationInfo applicationInfo = {
.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
.pNext = NULL,
.pApplicationName = "Vulkan Application",
.applicationVersion = VK_MAKE_API_VERSION(0, 0, 0, 1),
.pEngineName = "Vulkan Engine",
.engineVersion = VK_MAKE_API_VERSION(0, 0, 0, 1),
.apiVersion = VK_API_VERSION_1_3
};
VkInstanceCreateInfo instanceInfo = {
.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
.pNext = &messengerInfo,
.flags = 0,
.pApplicationInfo = &applicationInfo,
.enabledLayerCount = 1,
.ppEnabledLayerNames = layers,
.enabledExtensionCount = 1,
.ppEnabledExtensionNames = extensions
};
vkCreateInstance(&instanceInfo, NULL, &instance);
// Code can't even reach here but if we remove `instanceInfo.pNext = &messengerInfo` line, it fails here with the same message.
PFN_vkCreateDebugUtilsMessengerEXT createDebugUtilsMessenger = (PFN_vkCreateDebugUtilsMessengerEXT) vkGetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT");
createDebugUtilsMessenger(instance, &messengerInfo, NULL, &messenger);
}
void destroyInstance() {
PFN_vkDestroyDebugUtilsMessengerEXT destroyDebugUtilsMessenger = (PFN_vkDestroyDebugUtilsMessengerEXT) vkGetInstanceProcAddr(instance, "vkDestroyDebugUtilsMessengerEXT");
destroyDebugUtilsMessenger(instance, messenger, NULL);
vkDestroyInstance(instance, NULL);
}
int main() {
createInstance();
destroyInstance();
return 0;
}
```
Full validation layers messages leading to that crash:
```
No valid vk_loader_settings.json file found, no loader settings will be active
Searching for implicit layer manifest files
In following locations:
/home/arch/.config/vulkan/implicit_layer.d
/home/arch/.config/kdedefaults/vulkan/implicit_layer.d
/etc/xdg/vulkan/implicit_layer.d
/etc/vulkan/implicit_layer.d
/home/arch/.local/share/vulkan/implicit_layer.d
/usr/local/share/vulkan/implicit_layer.d
/usr/share/vulkan/implicit_layer.d
Found the following files:
/etc/vulkan/implicit_layer.d/renderdoc_capture.json
/home/arch/.local/share/vulkan/implicit_layer.d/steamoverlay_i386.json
/home/arch/.local/share/vulkan/implicit_layer.d/steamoverlay_x86_64.json
/home/arch/.local/share/vulkan/implicit_layer.d/steamfossilize_i386.json
/home/arch/.local/share/vulkan/implicit_layer.d/steamfossilize_x86_64.json
/usr/share/vulkan/implicit_layer.d/nvidia_layers.json
Found manifest file /etc/vulkan/implicit_layer.d/renderdoc_capture.json (file version 1.1.2)
Found manifest file /home/arch/.local/share/vulkan/implicit_layer.d/steamoverlay_i386.json (file version 1.0.0)
Found manifest file /home/arch/.local/share/vulkan/implicit_layer.d/steamoverlay_x86_64.json (file version 1.0.0)
Found manifest file /home/arch/.local/share/vulkan/implicit_layer.d/steamfossilize_i386.json (file version 1.0.0)
Found manifest file /home/arch/.local/share/vulkan/implicit_layer.d/steamfossilize_x86_64.json (file version 1.0.0)
Found manifest file /usr/share/vulkan/implicit_layer.d/nvidia_layers.json (file version 1.0.1)
Searching for explicit layer manifest files
In following locations:
/home/arch/.config/vulkan/explicit_layer.d
/home/arch/.config/kdedefaults/vulkan/explicit_layer.d
/etc/xdg/vulkan/explicit_layer.d
/etc/vulkan/explicit_layer.d
/home/arch/.local/share/vulkan/explicit_layer.d
/usr/local/share/vulkan/explicit_layer.d
/usr/share/vulkan/explicit_layer.d
Found the following files:
/usr/share/vulkan/explicit_layer.d/VkLayer_api_dump.json
/usr/share/vulkan/explicit_layer.d/VkLayer_monitor.json
/usr/share/vulkan/explicit_layer.d/VkLayer_screenshot.json
/usr/share/vulkan/explicit_layer.d/VkLayer_khronos_validation.json
Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_api_dump.json (file version 1.2.0)
Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_monitor.json (file version 1.0.0)
Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_screenshot.json (file version 1.2.0)
Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_khronos_validation.json (file version 1.2.0)
Searching for driver manifest files
In following locations:
/home/arch/.config/vulkan/icd.d
/home/arch/.config/kdedefaults/vulkan/icd.d
/etc/xdg/vulkan/icd.d
/etc/vulkan/icd.d
/home/arch/.local/share/vulkan/icd.d
/usr/local/share/vulkan/icd.d
/usr/share/vulkan/icd.d
Found the following files:
/usr/share/vulkan/icd.d/nvidia_icd.json
Found ICD manifest file /usr/share/vulkan/icd.d/nvidia_icd.json, version 1.0.1
Searching for ICD drivers named libGLX_nvidia.so.0
/usr/lib/libVkLayer_khronos_validation.so: undefined symbol: _ZN3vku42safe_VkVideoSessionParametersCreateInfoKHR10initializeEPK37VkVideoSessionParametersCreateInfoKHRPNS_14PNextCopyStateE
Requested layer "VK_LAYER_KHRONOS_validation" failed to load!
```
Successful `VkInstance` creation with downgraded validation layers:
```
No valid vk_loader_settings.json file found, no loader settings will be active
Searching for implicit layer manifest files
In following locations:
/home/arch/.config/vulkan/implicit_layer.d
/home/arch/.config/kdedefaults/vulkan/implicit_layer.d
/etc/xdg/vulkan/implicit_layer.d
/etc/vulkan/implicit_layer.d
/home/arch/.local/share/vulkan/implicit_layer.d
/usr/local/share/vulkan/implicit_layer.d
/usr/share/vulkan/implicit_layer.d
Found the following files:
/etc/vulkan/implicit_layer.d/renderdoc_capture.json
/home/arch/.local/share/vulkan/implicit_layer.d/steamoverlay_i386.json
/home/arch/.local/share/vulkan/implicit_layer.d/steamoverlay_x86_64.json
/home/arch/.local/share/vulkan/implicit_layer.d/steamfossilize_i386.json
/home/arch/.local/share/vulkan/implicit_layer.d/steamfossilize_x86_64.json
/usr/share/vulkan/implicit_layer.d/nvidia_layers.json
Found manifest file /etc/vulkan/implicit_layer.d/renderdoc_capture.json (file version 1.1.2)
Found manifest file /home/arch/.local/share/vulkan/implicit_layer.d/steamoverlay_i386.json (file version 1.0.0)
Found manifest file /home/arch/.local/share/vulkan/implicit_layer.d/steamoverlay_x86_64.json (file version 1.0.0)
Found manifest file /home/arch/.local/share/vulkan/implicit_layer.d/steamfossilize_i386.json (file version 1.0.0)
Found manifest file /home/arch/.local/share/vulkan/implicit_layer.d/steamfossilize_x86_64.json (file version 1.0.0)
Found manifest file /usr/share/vulkan/implicit_layer.d/nvidia_layers.json (file version 1.0.1)
Searching for explicit layer manifest files
In following locations:
/home/arch/.config/vulkan/explicit_layer.d
/home/arch/.config/kdedefaults/vulkan/explicit_layer.d
/etc/xdg/vulkan/explicit_layer.d
/etc/vulkan/explicit_layer.d
/home/arch/.local/share/vulkan/explicit_layer.d
/usr/local/share/vulkan/explicit_layer.d
/usr/share/vulkan/explicit_layer.d
Found the following files:
/usr/share/vulkan/explicit_layer.d/VkLayer_api_dump.json
/usr/share/vulkan/explicit_layer.d/VkLayer_monitor.json
/usr/share/vulkan/explicit_layer.d/VkLayer_screenshot.json
/usr/share/vulkan/explicit_layer.d/VkLayer_khronos_validation.json
Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_api_dump.json (file version 1.2.0)
Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_monitor.json (file version 1.0.0)
Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_screenshot.json (file version 1.2.0)
Found manifest file /usr/share/vulkan/explicit_layer.d/VkLayer_khronos_validation.json (file version 1.2.0)
Searching for driver manifest files
In following locations:
/home/arch/.config/vulkan/icd.d
/home/arch/.config/kdedefaults/vulkan/icd.d
/etc/xdg/vulkan/icd.d
/etc/vulkan/icd.d
/home/arch/.local/share/vulkan/icd.d
/usr/local/share/vulkan/icd.d
/usr/share/vulkan/icd.d
Found the following files:
/usr/share/vulkan/icd.d/nvidia_icd.json
Found ICD manifest file /usr/share/vulkan/icd.d/nvidia_icd.json, version 1.0.1
Searching for ICD drivers named libGLX_nvidia.so.0
Loading layer library libVkLayer_khronos_validation.so
Insert instance layer "VK_LAYER_KHRONOS_validation" (libVkLayer_khronos_validation.so)
vkCreateInstance layer callstack setup to:
<Application>
||
<Loader>
||
VK_LAYER_KHRONOS_validation
Type: Explicit
Enabled By: By the Application
Manifest: /usr/share/vulkan/explicit_layer.d/VkLayer_khronos_validation.json
Library: libVkLayer_khronos_validation.so
||
<Drivers>
Validation Information: [ WARNING-CreateInstance-status-message ] Object 0: handle = 0x5fb9bd9d82b0, type = VK_OBJECT_TYPE_INSTANCE; | MessageID = 0x23dfd876 | vkCreateInstance(): Khronos Validation Layer Active:
Current Enables: None.
Current Disables: None.
linux_read_sorted_physical_devices:
Original order:
[0] NVIDIA GeForce RTX 3060 Laptop GPU
Sorted order:
[0] NVIDIA GeForce RTX 3060 Laptop GPU
linux_read_sorted_physical_devices:
Original order:
[0] NVIDIA GeForce RTX 3060 Laptop GPU
Sorted order:
[0] NVIDIA GeForce RTX 3060 Laptop GPU
Copying old device 0 into new device 0
```
Successful destruction part of the message:
```
Unloading layer library libVkLayer_khronos_validation.so
```