Environment:
- OS: Windows (macOS works fine afaict)
- SDK or header version if building from repo: both latest sdk (1.4.335.0) and latest master branch commit (df738a2) break
- Options enabled (synchronization, best practices, etc.): VK_LAYER_KHRONOS_validation, validate_sync
Describe the Issue
[VkLayer_khronos_validation.dll] vvl::SubStateManager<vvl::CommandBufferSubState>::SubState(LayerObjectTypeId) state_object.h:151
[VkLayer_khronos_validation.dll] syncval::SubState(const vvl::CommandBuffer &) sync_commandbuffer.h:415
[VkLayer_khronos_validation.dll] syncval::GetResourceUsageInfoFromRecord(ResourceUsageTagEx, const syncval::ResourceUsageRecord &, const syncval::DebugNameProvider *) sync_reporting.cpp:613
[VkLayer_khronos_validation.dll] syncval::QueueBatchContext::GetResourceUsageInfo(ResourceUsageTagEx) sync_reporting.cpp:645
[VkLayer_khronos_validation.dll] syncval::ErrorMessages::FirstUseError(const syncval::HazardResult &, const syncval::CommandExecutionContext &, const syncval::CommandBufferAccessContext &, unsigned int) sync_error_messages.cpp:430
[VkLayer_khronos_validation.dll] syncval::ReplayState::DetectFirstUseHazard(const vvl::range<unsigned __int64> &) sync_op.cpp:1397
[VkLayer_khronos_validation.dll] syncval::SyncOpPipelineBarrier::ReplayValidate(syncval::ReplayState &, unsigned long long) sync_op.cpp:572
[VkLayer_khronos_validation.dll] syncval::ReplayState::ValidateFirstUse() sync_op.cpp:1416
[VkLayer_khronos_validation.dll] syncval::QueueBatchContext::ValidateSubmit(const std::vector<std::shared_ptr<const vvl::CommandBuffer> > &, unsigned long long, unsigned int, std::vector<std::string> &, const ErrorObject &) sync_submit.cpp:691
[VkLayer_khronos_validation.dll] syncval::SyncValidator::ValidateQueueSubmit(VkQueue_T *, unsigned int, const VkSubmitInfo2 *, VkFence_T *, const ErrorObject &) sync_validation.cpp:2646
[VkLayer_khronos_validation.dll] syncval::SyncValidator::PreCallValidateQueueSubmit(VkQueue_T *, unsigned int, const VkSubmitInfo *, VkFence_T *, const ErrorObject &) sync_validation.cpp:2557
[VkLayer_khronos_validation.dll] vulkan_layer_chassis::QueueSubmit(VkQueue_T *, unsigned int, const VkSubmitInfo *, VkFence_T *) chassis.cpp:472
[vulkan-1.dll] <unknown> 0x00007ffe82a5c60a
[01_HelloTriangle.exe] vk::detail::DispatchLoaderStatic::vkQueueSubmit(VkQueue_T *, unsigned int, const VkSubmitInfo *, VkFence_T *) vulkan.hpp:1152
[01_HelloTriangle.exe] vk::Queue::submit<vk::detail::DispatchLoaderStatic, 1>(unsigned int, const vk::SubmitInfo *, Fence, const vk::detail::DispatchLoaderStatic &) vulkan_funcs.hpp:920
[01_HelloTriangle.exe] My app's stuff
(that's where i think the issue is at, the crash happens in handle_records.size() inside GetResourceUsageInfoFromRecord as it tries to read from the nullptr)
syncval::SubState calls vll::SubStateManager::SubState. In this function the iterator points to end, and thus returns nullptr. syncval::SubState happilly dereferences it, returning it as reference after which GetResourceUsageInfoFromRecord blows up.
Expected behavior
Report me an error if my code is invalid.
Other
- Run this 01_HelloTriangle.zip
- Press F1
- Press D
- This will try to dump some engine internals for the current frame. Instead it'll crash.
When everything works you will see a commandline flash, this is trying to invoke graphviz to convert a generated dot file to svg. If graphviz is installed the svg will be opened, otherwise it'll just fail. You do not need graphviz for the reproduce.
After you're done there are files in %localappdata%\mevicg\Hello Triangle and Documents\GraphDump which you might want to clean up.
Environment:
Describe the Issue
(that's where i think the issue is at, the crash happens in
handle_records.size()insideGetResourceUsageInfoFromRecordas it tries to read from the nullptr)syncval::SubStatecallsvll::SubStateManager::SubState. In this function the iterator points to end, and thus returnsnullptr.syncval::SubStatehappilly dereferences it, returning it as reference after whichGetResourceUsageInfoFromRecordblows up.Expected behavior
Report me an error if my code is invalid.
Other
When everything works you will see a commandline flash, this is trying to invoke graphviz to convert a generated dot file to svg. If graphviz is installed the svg will be opened, otherwise it'll just fail. You do not need graphviz for the reproduce.
After you're done there are files in
%localappdata%\mevicg\Hello TriangleandDocuments\GraphDumpwhich you might want to clean up.