From 0b0a8431dc227ddd3ff8d5627b2eecbb749dedb8 Mon Sep 17 00:00:00 2001 From: studyztp Date: Sun, 18 Aug 2024 10:46:05 -0700 Subject: [PATCH] cpu: delete listener ptrs after removal The listener pointer does not get deleted with the removeListener() function call, so we need to make sure it is deleted in the ProbeListenerObject. Change-Id: I370f34651b889c8c00a378743e9c1c09fa1d775e --- src/cpu/probes/inst_tracker.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/cpu/probes/inst_tracker.cc b/src/cpu/probes/inst_tracker.cc index 8d696e159e..5541c6aada 100644 --- a/src/cpu/probes/inst_tracker.cc +++ b/src/cpu/probes/inst_tracker.cc @@ -63,13 +63,18 @@ LocalInstTracker::stopListening() { ifListening = false; bool _ifRemoved; - for (auto &listener : listeners) { + for (auto &_listener : listeners) { _ifRemoved = getProbeManager()->removeListener( "RetiredInsts", - *listener + *_listener ); - DPRINTF(InstTracker, "If removed: %s\n", _ifRemoved ? "Yes" : "No"); + panic_if(!_ifRemoved, "Failed to remove listener"); + if (_listener != nullptr) { + delete(_listener); + DPRINTF(InstTracker, "Deleted Listener pointer\n"); + } } + DPRINTF(InstTracker, "Stop listening to RetiredInsts\n"); }