From: Andrea Mondelli Date: Mon, 11 Feb 2019 19:53:13 +0000 (-0500) Subject: misc: Segmentation Fault during O3PipeView execution X-Git-Tag: v19.0.0.0~1085 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=38560efd8b78d09414c13f8bc3f1ad75119e9cfd;p=gem5.git 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 --- 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