From 38560efd8b78d09414c13f8bc3f1ad75119e9cfd Mon Sep 17 00:00:00 2001 From: Andrea Mondelli Date: Mon, 11 Feb 2019 14:53:13 -0500 Subject: [PATCH] misc: Segmentation Fault during O3PipeView execution During the O3PipeView execution, a potential invalid iterator is used to Update the instruction storeTick field. If the store_idx iterator is the first() of the StoreQueue, the corresponding instruction is removed from the queue, leaving the iterator invalid and not usable in the TRACING_ON block. This patch uses the store_inst variable to access (and update) the instruction tick, instead of the (potential) invalid one. Change-Id: I671052ef282b9048e5239da8629b89e8afa86bf0 Reviewed-on: https://gem5-review.googlesource.com/c/16322 Maintainer: Jason Lowe-Power Reviewed-by: Jason Lowe-Power --- src/cpu/o3/lsq_unit_impl.hh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cpu/o3/lsq_unit_impl.hh b/src/cpu/o3/lsq_unit_impl.hh index 2c59d5a9e..adb24cbc5 100644 --- a/src/cpu/o3/lsq_unit_impl.hh +++ b/src/cpu/o3/lsq_unit_impl.hh @@ -999,8 +999,8 @@ LSQUnit::completeStore(typename StoreQueue::iterator store_idx) #if TRACING_ON if (DTRACE(O3PipeView)) { - store_idx->instruction()->storeTick = - curTick() - store_idx->instruction()->fetchTick; + store_inst->storeTick = + curTick() - store_inst->fetchTick; } #endif -- 2.30.2