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 <jason@lowepower.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
diff --git a/src/cpu/o3/lsq_unit_impl.hh b/src/cpu/o3/lsq_unit_impl.hh
index 2c59d5a..adb24cb 100644
--- a/src/cpu/o3/lsq_unit_impl.hh
+++ b/src/cpu/o3/lsq_unit_impl.hh
@@ -999,8 +999,8 @@
#if TRACING_ON
if (DTRACE(O3PipeView)) {
- store_idx->instruction()->storeTick =
- curTick() - store_idx->instruction()->fetchTick;
+ store_inst->storeTick =
+ curTick() - store_inst->fetchTick;
}
#endif