diff options
author | Andrea Mondelli <Andrea.Mondelli@ucf.edu> | 2019-02-11 14:53:13 -0500 |
---|---|---|
committer | Andrea Mondelli <Andrea.Mondelli@ucf.edu> | 2019-02-27 18:12:13 +0000 |
commit | 38560efd8b78d09414c13f8bc3f1ad75119e9cfd (patch) | |
tree | 89d76ce9f30e31835d1ccfb7c6dfdd3c61762b0b /src/cpu | |
parent | ae233c7723caf0c441e251883d887c98134e0482 (diff) | |
download | gem5-38560efd8b78d09414c13f8bc3f1ad75119e9cfd.tar.xz |
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>
Diffstat (limited to 'src/cpu')
-rw-r--r-- | src/cpu/o3/lsq_unit_impl.hh | 4 |
1 files 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<Impl>::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 |