From 0f7dcbc8ca255880451ff309e6aef87b387d7e65 Mon Sep 17 00:00:00 2001 From: foreman Date: Fri, 15 Dec 2017 15:37:57 -0500 Subject: [PATCH] P4 to Git Change 1495208 by gandryey@gera-w8 on 2017/12/15 15:33:48 SWDEV-135647 - Runtime should not assert on invalid printf - Replace the asserts for invalid printf index with an error. Affected files ... ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprintf.cpp#45 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprintf.cpp#6 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocprintf.cpp#9 edit [ROCm/clr commit: 1a3de160ecd18ad5710236788ab5f0cd25d46c48] --- projects/clr/rocclr/runtime/device/gpu/gpuprintf.cpp | 5 ++++- projects/clr/rocclr/runtime/device/pal/palprintf.cpp | 5 ++++- projects/clr/rocclr/runtime/device/rocm/rocprintf.cpp | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/projects/clr/rocclr/runtime/device/gpu/gpuprintf.cpp b/projects/clr/rocclr/runtime/device/gpu/gpuprintf.cpp index 58120a4002..3ae7b7c479 100644 --- a/projects/clr/rocclr/runtime/device/gpu/gpuprintf.cpp +++ b/projects/clr/rocclr/runtime/device/gpu/gpuprintf.cpp @@ -608,7 +608,10 @@ bool PrintfDbgHSA::output(VirtualGPU& gpu, bool printfEnabled, // parse the debug buffer while (sbt < copySize) { - assert(((*dbgBufferPtr) < printfInfo.size()) && "Cound't find the reported PrintfID!"); + if (*dbgBufferPtr >= printfInfo.size()) { + LogError("Couldn't find the reported PrintfID!"); + return false; + } const PrintfInfo& info = printfInfo[(*dbgBufferPtr)]; sb += sizeof(uint32_t); for (ita = info.arguments_.begin(); ita != info.arguments_.end(); ++ita) { diff --git a/projects/clr/rocclr/runtime/device/pal/palprintf.cpp b/projects/clr/rocclr/runtime/device/pal/palprintf.cpp index b8933e769f..8f027ae847 100644 --- a/projects/clr/rocclr/runtime/device/pal/palprintf.cpp +++ b/projects/clr/rocclr/runtime/device/pal/palprintf.cpp @@ -604,7 +604,10 @@ bool PrintfDbgHSA::output(VirtualGPU& gpu, bool printfEnabled, // parse the debug buffer while (sbt < copySize) { - assert(((*dbgBufferPtr) < printfInfo.size()) && "Cound't find the reported PrintfID!"); + if (*dbgBufferPtr >= printfInfo.size()) { + LogError("Couldn't find the reported PrintfID!"); + return false; + } const PrintfInfo& info = printfInfo[(*dbgBufferPtr)]; sb += sizeof(uint32_t); for (ita = info.arguments_.begin(); ita != info.arguments_.end(); ++ita) { diff --git a/projects/clr/rocclr/runtime/device/rocm/rocprintf.cpp b/projects/clr/rocclr/runtime/device/rocm/rocprintf.cpp index fcf7dfb2e8..82a86d8059 100644 --- a/projects/clr/rocclr/runtime/device/rocm/rocprintf.cpp +++ b/projects/clr/rocclr/runtime/device/rocm/rocprintf.cpp @@ -421,7 +421,10 @@ bool PrintfDbg::output(VirtualGPU& gpu, bool printfEnabled, // parse the debug buffer while (sbt < offsetSize) { - assert(((*dbgBufferPtr) < printfInfo.size()) && "Cound't find the reported PrintfID!"); + if (*dbgBufferPtr >= printfInfo.size()) { + LogError("Couldn't find the reported PrintfID!"); + return false; + } const PrintfInfo& info = printfInfo[(*dbgBufferPtr)]; sb += sizeof(uint32_t); for (ita = info.arguments_.begin(); ita != info.arguments_.end(); ++ita) {