GPUOpen-Drivers / AMDVLK

AMD Open Source Driver For Vulkan
MIT License
1.7k stars 160 forks source link

vkd3d-proton test buffer_feedback_instructions_sm51 segfault #299

Closed mbriar closed 2 months ago

mbriar commented 1 year ago

The vkd3d-proton buffer_feedback_instructions_sm51 test segfaults on open amdvlk.
To reproduce build and run the vkd3d-proton tests:

git clone --recurse-submodules https://github.com/HansKristian-Work/vkd3d-proton
mkdir vkd3d-proton/build && cd vkd3d-proton/build
meson .. -Denable_tests=true
ninja
VKD3D_TEST_FILTER=buffer_feedback_instructions ./tests/d3d12

backtrace:

#0  0x00007ffff598f0b8 in llvm::DataLayout::getAlignment (this=0x555555f6e7f0, Ty=0x0, abi_or_pref=<optimized out>) at /home/mbriar/builds/amdvlk/drivers/llvm-project/llvm/lib/IR/DataLayout.cpp:749
#1  0x00007ffff47a5d51 in llvm::SelectionDAG::getEVTAlign (this=this@entry=0x555555bcd1e0, VT=...) at /home/mbriar/builds/amdvlk/drivers/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1260
#2  0x00007ffff478737a in llvm::SelectionDAG::getMemIntrinsicNode (AAInfo=..., Size=0, Flags=(llvm::MachineMemOperand::MOLoad | llvm::MachineMemOperand::MODereferenceable), Alignment=..., PtrInfo=..., MemVT=..., Ops=..., VTList=..., dl=..., Opcode=<optimized out>, this=0x555555bcd1e0) at /home/mbriar/builds/amdvlk/drivers/llvm-project/llvm/include/llvm/CodeGen/SelectionDAG.h:1199
#3  llvm::SelectionDAGBuilder::visitTargetIntrinsic (this=0x555555e64b60, I=..., Intrinsic=<optimized out>) at /home/mbriar/builds/amdvlk/drivers/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:4871
#4  0x00007ffff476c55d in llvm::SelectionDAGBuilder::visitIntrinsicCall (this=0x555555e64b60, I=..., Intrinsic=2086) at /home/mbriar/builds/amdvlk/drivers/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:5844
#5  0x00007ffff47a16b6 in llvm::SelectionDAGBuilder::visit (this=0x555555e64b60, I=...) at /home/mbriar/builds/amdvlk/drivers/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:1135
#6  0x00007ffff47ff6e3 in llvm::SelectionDAGISel::SelectBasicBlock (this=0x555555eae450, Begin=..., End=..., HadTailCall=@0x7fffffffa690: false) at /home/mbriar/builds/amdvlk/drivers/llvm-project/llvm/include/llvm/ADT/ilist_iterator.h:137
#7  0x00007ffff4800c68 in llvm::SelectionDAGISel::SelectAllBasicBlocks (this=0x555555eae450, Fn=...) at /home/mbriar/builds/amdvlk/drivers/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1595
#8  0x00007ffff4802e75 in llvm::SelectionDAGISel::runOnMachineFunction (mf=..., this=<optimized out>) at /home/mbriar/builds/amdvlk/drivers/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:464
#9  llvm::SelectionDAGISel::runOnMachineFunction (this=0x555555eae450, mf=...) at /home/mbriar/builds/amdvlk/drivers/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:371
#10 0x00007ffff4a511a0 in llvm::MachineFunctionPass::runOnFunction (this=0x555555eae450, F=...) at /home/mbriar/builds/amdvlk/drivers/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:89
#11 0x00007ffff5a24403 in llvm::FPPassManager::runOnFunction (this=this@entry=0x555555e9d9a0, F=...) at /home/mbriar/builds/amdvlk/drivers/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1430
#12 0x00007ffff53b1292 in (anonymous namespace)::CGPassManager::RunPassOnSCC (DevirtualizedCall=@0x7fffffffb796: false, CallGraphUpToDate=@0x7fffffffb7b8: true, CG=..., CurSCC=..., P=0x555555e9d9a0, this=0x555556055750) at /home/mbriar/builds/amdvlk/drivers/llvm-project/llvm/lib/Analysis/CallGraphSCCPass.cpp:179
#13 (anonymous namespace)::CGPassManager::RunAllPassesOnSCC (DevirtualizedCall=@0x7fffffffb796: false, CG=..., CurSCC=..., this=0x555556055750) at /home/mbriar/builds/amdvlk/drivers/llvm-project/llvm/lib/Analysis/CallGraphSCCPass.cpp:477
#14 (anonymous namespace)::CGPassManager::runOnModule (this=0x555556055750, M=...) at /home/mbriar/builds/amdvlk/drivers/llvm-project/llvm/lib/Analysis/CallGraphSCCPass.cpp:542
#15 0x00007ffff5a24efc in (anonymous namespace)::MPPassManager::runOnModule (M=..., this=0x555555f598f0) at /home/mbriar/builds/amdvlk/drivers/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1545
#16 llvm::legacy::PassManagerImpl::run (this=0x555556247e20, M=...) at /home/mbriar/builds/amdvlk/drivers/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:535
#17 0x00007ffff3bd97a9 in lgc::PipelineState::generateWithNewPassManager(std::unique_ptr<llvm::Module, std::default_delete<llvm::Module> >, llvm::raw_pwrite_stream&, std::function<unsigned int (llvm::Module const*, unsigned int, llvm::ArrayRef<llvm::ArrayRef<unsigned char> >)>, llvm::ArrayRef<llvm::Timer*>) (this=0x5555559a3490, pipelineModule=std::unique_ptr<llvm::Module> = {...}, outStream=..., checkShaderCacheFunc=..., timers=...) at /usr/include/c++/12.2.0/bits/unique_ptr.h:191
#18 0x00007ffff3bda1a0 in lgc::PipelineState::generate(std::unique_ptr<llvm::Module, std::default_delete<llvm::Module> >, llvm::raw_pwrite_stream&, std::function<unsigned int (llvm::Module const*, unsigned int, llvm::ArrayRef<llvm::ArrayRef<unsigned char> >)>, llvm::ArrayRef<llvm::Timer*>, bool) (this=0x5555559a3490, pipelineModule=..., outStream=..., checkShaderCacheFunc=..., timers=..., newPassManager=true) at /usr/include/c++/12.2.0/bits/unique_ptr.h:189
#19 0x00007ffff3aace44 in Llpc::Compiler::buildPipelineInternal (this=<optimized out>, context=0x555555baa850, shaderInfo=..., pipelineLink=<optimized out>, otherPartPipeline=<optimized out>, pipelineElf=<optimized out>, stageCacheAccesses=...) at /usr/include/c++/12.2.0/bits/unique_ptr.h:189
#20 0x00007ffff3aaff1d in Llpc::Compiler::buildComputePipelineInternal (this=0x55555579f0b0, computeContext=<optimized out>, pipelineInfo=<optimized out>, buildingRelocatableElf=<optimized out>, pipelineElf=0x7fffffffc700, stageCacheAccess=0x7fffffffcc01) at /usr/include/c++/12.2.0/bits/stl_vector.h:987
#21 0x00007ffff3ab00cb in Llpc::Compiler::BuildComputePipeline (this=0x55555579f0b0, pipelineInfo=0x7fffffffd350, pipelineOut=0x7fffffffcbf0, pipelineDumpFile=<optimized out>) at /home/mbriar/builds/amdvlk/drivers/llpc/llpc/context/llpcCompiler.cpp:1935
#22 0x00007ffff3841e35 in vk::CompilerSolutionLlpc::CreateComputePipelineBinary (this=0x55555604f3b8, pDevice=0x555555bf2518, deviceIdx=<optimized out>, pPipelineCache=<optimized out>, pCreateInfo=<optimized out>, pPipelineBinarySize=0x7fffffffd530, ppPipelineBinary=<optimized out>, pPipelineDumpHandle=<optimized out>, pipelineHash=<optimized out>, pCacheId=<optimized out>, pCompileTime=<optimized out>) at /home/mbriar/builds/amdvlk/drivers/xgl/icd/api/compiler_solution_llpc.cpp:507
#23 0x00007ffff37bb180 in vk::PipelineCompiler::CreateComputePipelineBinary (this=0x55555604ed98, pDevice=<optimized out>, deviceIdx=<optimized out>, pPipelineCache=<optimized out>, pCreateInfo=0x7fffffffd350, pPipelineBinarySize=<optimized out>, ppPipelineBinary=<optimized out>, pCacheId=<optimized out>) at /home/mbriar/builds/amdvlk/drivers/xgl/icd/api/pipeline_compiler.cpp:1406
#24 0x00007ffff37d9bbb in vk::ComputePipeline::Create (pDevice=<optimized out>, pPipelineCache=<optimized out>, pCreateInfo=<optimized out>, pAllocator=<optimized out>, pPipeline=<optimized out>) at /home/mbriar/builds/amdvlk/drivers/xgl/icd/api/vk_compute_pipeline.cpp:251
#25 0x00007ffff37ee196 in vk::Device::CreateComputePipelines (pPipelines=<optimized out>, pAllocator=0x5555560398a8, pCreateInfos=<optimized out>, count=<optimized out>, pipelineCache=0x0, this=0x555555bf2518) at /home/mbriar/builds/amdvlk/drivers/xgl/icd/api/vk_device.cpp:2920
#26 vk::entry::vkCreateComputePipelines (device=0x555555bf2510, pipelineCache=0x0, createInfoCount=<optimized out>, pCreateInfos=<optimized out>, pAllocator=<optimized out>, pPipelines=<optimized out>) at /home/mbriar/builds/amdvlk/drivers/xgl/icd/api/vk_device.cpp:4768
#27 0x00007ffff7caa363 in vkd3d_create_compute_pipeline (state=0x555555bc1be0, device=0x7ffff0ff0010, code=0x7fffffffdaa8) at ../libs/vkd3d/state.c:2634
#28 0x00007ffff7caa74f in d3d12_pipeline_state_init_compute (state=0x555555bc1be0, device=0x7ffff0ff0010, desc=0x7fffffffda50, cached_pso=0x7fffffffd9d0) at ../libs/vkd3d/state.c:2699
#29 0x00007ffff7caecac in d3d12_pipeline_state_create (device=0x7ffff0ff0010, bind_point=VK_PIPELINE_BIND_POINT_COMPUTE, desc=0x7fffffffda50, state=0x7fffffffda40) at ../libs/vkd3d/state.c:4195
#30 0x00007ffff7c74474 in d3d12_device_CreateComputePipelineState (iface=0x7ffff0ff0010, desc=0x7fffffffde90, riid=0x555555716040 <IID_ID3D12PipelineState>, pipeline_state=0x7fffffffde88) at ../libs/vkd3d/device.c:3173
#31 0x000055555566775b in ID3D12Device_CreateComputePipelineState (This=0x7ffff0ff0010, desc=0x7fffffffde90, riid=0x555555716040 <IID_ID3D12PipelineState>, pipeline_state=0x7fffffffde88) at libs/vkd3d-common/libvkd3d_common.a.p/vkd3d_d3d12.h:13670
#32 0x000055555566ba77 in create_compute_pipeline_state_ (line=1921, device=0x7ffff0ff0010, root_signature=0x5555559a7970, cs=...) at ../tests/d3d12_test_utils.c:822
#33 0x0000555555622c75 in test_buffer_feedback_instructions (use_dxil=false) at ../tests/d3d12_sparse.c:1921
#34 0x000055555562337a in test_buffer_feedback_instructions_sm51 () at ../tests/d3d12_sparse.c:2012
#35 0x0000555555663a22 in vkd3d_run_test (name=0x5555557181a0 "test_buffer_feedback_instructions_sm51", test_pfn=0x55555562336c <test_buffer_feedback_instructions_sm51>) at ../include/private/vkd3d_test.h:381
#36 0x0000555555665f1f in vkd3d_test_main (argc=1, argv=0x7fffffffe478) at ../tests/d3d12_tests.h:239
#37 0x00005555556638e6 in main (argc=1, argv=0x7fffffffe478) at ../include/private/vkd3d_test.h:297

The test passes on amdgpu-pro and RADV.

GPU 6700XT/NAVI22 AMDVLK v-2022.Q3.5 vkd3d-proton commit 212ae62b5

jinjianrong commented 2 months ago

Refer to https://github.com/GPUOpen-Drivers/llpc/issues/1749