microsoft / ShaderConductor

ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages
MIT License
1.78k stars 250 forks source link

ShaderConductorTest abort DxilModuleReflection::_GetConstantBufferByName #66

Open CatDroid opened 3 years ago

CatDroid commented 3 years ago

Describe the bug run ShaderConductorTest ,and crash on LinkTest

To Reproduce

  1. vs2019 on Win10 Debug and x64 build

  2. commit id: 30a77c78d24fa08f4fe5fc4428f10dbfc92717a6 branch: maset

  3. start up with ShaderConductorTest

  4. console log : [----------] 1 test from LinkTest [ RUN ] LinkTest.LinkDxil --- after here, program crash

    program is runing TEST(LinkTest, LinkDxil) at ShaderConductorTest.cpp

  5. crash info DxilContainerReflection.cpp DxilModuleReflection::_GetConstantBufferByName(LPCSTR Name)

crash on "if (it != m_StructuredBufferCBsByName.end()) " map/set iterators in range are from different containers

Name is "cbPS" which i found that in "ShaderConductor/Source/Tests/Data/Input/CalcLight.hlsl"

m_StructuredBufferCBsByName size() is 0 but m_CBsByName size() is 1 and m_CBsByName contains "cbPS"

CatDroid commented 3 years ago

more info: when running: DxilModuleReflection::CreateReflectionObjects() m_pDxilModule->GetUAVs() and m_pDxilModule->GetSRVs() both are empty , so "m_StructuredBufferCBsByName" keep empty too