From 8a4f0a111d6465b9654627000c443e078d96fb11 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 5 May 2020 20:06:10 +0100 Subject: [PATCH] Fix out of bounds access if some threads have exited --- renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp b/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp index dcbcbf9b3..7b427ad9a 100644 --- a/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp @@ -1794,7 +1794,8 @@ void Debugger::CalcActiveMask(rdcarray &activeMask) rdcarray inConverge; inConverge.resize(activeMask.size()); for(size_t i = 0; i < workgroup.size(); i++) - inConverge[i] = (workgroup[i].callstack.back()->curBlock == convergeBlock); + inConverge[i] = (!workgroup[i].callstack.empty() && + workgroup[i].callstack.back()->curBlock == convergeBlock); // is any thread active, but not converged? bool anyActiveNotConverged = false;