From 2fc1746ef5cd6bf7925de64b8d9e3245062239f5 Mon Sep 17 00:00:00 2001 From: Geza Lore Date: Mon, 3 Oct 2022 10:50:47 +0100 Subject: [PATCH] Tracing: Clear offload buffer pointers when no longer needed These are also used as a marker (when non-nullptr) when creating a buffer. Reset them when they are not valid to avoid invalid write if a buffer is created after a close (due to a subsequent re-open). Fixes #3651. --- include/verilated_trace_imp.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/verilated_trace_imp.h b/include/verilated_trace_imp.h index 90dcc2e70..21756dc77 100644 --- a/include/verilated_trace_imp.h +++ b/include/verilated_trace_imp.h @@ -644,6 +644,10 @@ void VerilatedTrace::dump(uint64_t timeui) VL_MT_SAFE_EXCLUD // Assert no buffer overflow assert(m_offloadBufferWritep - bufferp <= m_offloadBufferSize); + // Reset our pointers as we are giving up the buffer + m_offloadBufferWritep = nullptr; + m_offloadBufferEndp = nullptr; + // Pass it to the worker thread m_offloadBuffersToWorker.put(bufferp); }