Skip to content

Crash when using Validation Layers and Vulkan Decode Sample #11531

@mbechard

Description

@mbechard

Environment:

  • OS: Windows 11
  • GPU and driver version: RTX Pro 6000 Blackwell
  • SDK or header version if building from repo: 1.4.335.0
  • Options enabled (synchronization, best practices, etc.): Validation

Describe the Issue

Run the vk-video-dec-test from
https://github.com/nvpro-samples/vk_video_samples
(note you'll need to bring in mbechard/vk_video_samples@4e9f7e8 as of today since the head of main fails to start due to an incorrect error check). Likely that'll be merged/fixed soon though.
With the options:
-i Jelly.mov -v -vv
Using:
https://github.com/user-attachments/assets/700479bc-a791-4af0-a31f-f61a2984fd85

You'll quickly get a crash. The crash sometimes occurs in the Nvidia driver, which I think is caused by the validation layers mangling some of the parameters passed through to the driver.

 	nvoglv64.dll!00007fff64a82d62()	Unknown
 	VkLayer_khronos_validation.dll!vvl::dispatch::Device::QueueSubmit2KHR(VkQueue_T * queue, unsigned int submitCount, const VkSubmitInfo2 * pSubmits, VkFence_T * fence) Line 4772	C++
 	VkLayer_khronos_validation.dll!vulkan_layer_chassis::QueueSubmit2KHR(VkQueue_T * queue, unsigned int submitCount, const VkSubmitInfo2 * pSubmits, VkFence_T * fence) Line 16414	C++
>	vk-video-dec-test.exe!VulkanDeviceContext::MultiThreadedQueueSubmit(const VulkanDeviceContext::QueueFamilySubmitType submitType, const int queueIndex, unsigned int submitCount, const VkSubmitInfo2 * pSubmits, VkFence_T * fence, const char * submissionName, unsigned __int64 decodeEncodeOrder, unsigned __int64 displayInputOrder) Line 193	C++
 	vk-video-dec-test.exe!VkVideoDecoder::DecodePictureWithParameters(VkParserPerFrameDecodeParameters * pCurrFrameDecParams, VkParserDecodePictureInfo * pDecodePictureInfo) Line 1257	C++
 	vk-video-dec-test.exe!NvVulkanDecoder::VulkanVideoParser::DecodePicture(VkParserPictureData * pd, vkPicBuffBase * __formal, VkParserDecodePictureInfo * pDecodePictureInfo) Line 2640	C++
 	vk-video-dec-test.exe!NvVulkanDecoder::VulkanVideoParser::DecodePicture(VkParserPictureData * pd) Line 830	C++
 	nvidia-vkvideo-parser.dll!VulkanVideoDecoder::end_of_picture() Line 513	C++
 	nvidia-vkvideo-parser.dll!VulkanVideoDecoder::nal_unit() Line 364	C++

Other times I get call crashes such as:

 	vcruntime140.dll!_CxxThrowException(void * pExceptionObject, const _s__ThrowInfo * pThrowInfo) Line 80	C++
 	VkLayer_khronos_validation.dll!std::_Throw_future_error2(const std::future_errc _Ec) Line 144	C++
 	[Inline Frame] VkLayer_khronos_validation.dll!std::_Associated_state<int>::_Set_value_raw(int &&) Line 344	C++
 	[Inline Frame] VkLayer_khronos_validation.dll!std::_Associated_state<int>::_Set_value(int &&) Line 338	C++
 	[Inline Frame] VkLayer_khronos_validation.dll!std::_State_manager<int>::_Set_value(int &&) Line 751	C++
 	VkLayer_khronos_validation.dll!std::promise<void>::set_value() Line 1166	C++
 	[Inline Frame] VkLayer_khronos_validation.dll!vvl::Fence::Retire() Line 122	C++
 	VkLayer_khronos_validation.dll!vvl::Queue::Retire(vvl::QueueSubmission & submission) Line 313	C++
 	VkLayer_khronos_validation.dll!vvl::Queue::ThreadFunc() Line 331	C++
 	[Inline Frame] VkLayer_khronos_validation.dll!std::invoke(void(vvl::Queue::*)() &&) Line 1686	C++
 	VkLayer_khronos_validation.dll!std::thread::_Invoke<std::tuple<void (__cdecl vvl::Queue::*)(void),vvl::Queue *>,0,1>(void * _RawVals) Line 61	C++

No crashes occur if validation isn't enabled (remove -v -vv)

Metadata

Metadata

Labels

VideoVulkan Video

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions