Discussion:
[gem5-users] gem5-RISCV Assertion error while simulating 471.omnetpp
Zaman, Monir
2018-09-12 21:01:22 UTC
Permalink
Hello,
I am simulating 471.omnetpp with RISCV architecture for a given simulation point. The simulation stops throwing an assertion error:

Command:
gem/build/RISCV/gem5.opt -d /gem5/RESULT/1M_maxK_6/471.omnetpp_out/simpoint1 gem/configs/example/se.py -I 1000000 -W 100000000 --fast-forward=323000000 --standard-switch=1 --mem-size=2048MB --caches --cacheline_size=64 --l1d_size=8kB --l1i_size=2kB --l1d_assoc=1 --l1i_assoc=1 -c /Speckle/build/471.omnetpp_test/omnetpp_base.riscv -o '-f /Speckle/build/471.omnetpp_test/omnetpp.ini'


Error :
**** REAL SIMULATION ****
gem5.opt: build/RISCV/arch/riscv/generated/exec-ns.cc.inc:1341: virtual Fault RiscvISAInst::C_slli::execute(ExecContext*, Trace::InstRecord*) const: Assertion `bits(machInst, 11, 7) != 0' failed.
Program aborted at tick 1237033347500
--- BEGIN LIBC BACKTRACE ---
gem/build/RISCV/gem5.opt(_Z15print_backtracev+0x15)[0x978125]
gem/build/RISCV/gem5.opt(_Z12abortHandleri+0x36)[0x982046]
/lib64/libpthread.so.0(+0xf6d0)[0x7ff28cc916d0]
/lib64/libc.so.6(gsignal+0x37)[0x7ff28ada4277]
/lib64/libc.so.6(abort+0x148)[0x7ff28ada5968]
/lib64/libc.so.6(+0x2f096)[0x7ff28ad9d096]
/lib64/libc.so.6(+0x2f142)[0x7ff28ad9d142]
gem/build/RISCV/gem5.opt(_ZNK12RiscvISAInst6C_slli7executeEP11ExecContextPN5Trace10InstRecordE+0x93)[0xa35ae3]
gem/build/RISCV/gem5.opt(_ZN13BaseO3DynInstI9O3CPUImplE7executeEv+0x35)[0x8c57f5]
gem/build/RISCV/gem5.opt(_ZN10DefaultIEWI9O3CPUImplE12executeInstsEv+0xac5)[0x8daeb5]
gem/build/RISCV/gem5.opt(_ZN10DefaultIEWI9O3CPUImplE4tickEv+0x109)[0x8dd1f9]
gem/build/RISCV/gem5.opt(_ZN9FullO3CPUI9O3CPUImplE4tickEv+0x87)[0x8b64d7]
gem/build/RISCV/gem5.opt(_ZN10EventQueue10serviceOneEv+0xa1)[0x97d811]
gem/build/RISCV/gem5.opt(_Z9doSimLoopP10EventQueue+0x38)[0x98b5d8]
gem/build/RISCV/gem5.opt(_Z8simulatem+0xaae)[0x98c40e]
gem/build/RISCV/gem5.opt[0x8819c0]
gem/build/RISCV/gem5.opt[0x864226]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x730a)[0x7ff28c59420a]
/lib64/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7ed)[0x7ff28c59603d]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x663c)[0x7ff28c59353c]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x67bd)[0x7ff28c5936bd]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x67bd)[0x7ff28c5936bd]
/lib64/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7ed)[0x7ff28c59603d]
/lib64/libpython2.7.so.1.0(PyEval_EvalCode+0x32)[0x7ff28c596142]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5513)[0x7ff28c592413]
/lib64/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7ed)[0x7ff28c59603d]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x663c)[0x7ff28c59353c]
/lib64/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7ed)[0x7ff28c59603d]
/lib64/libpython2.7.so.1.0(PyEval_EvalCode+0x32)[0x7ff28c596142]
/lib64/libpython2.7.so.1.0(+0x10057f)[0x7ff28c5af57f]
/lib64/libpython2.7.so.1.0(PyRun_StringFlags+0x65)[0x7ff28c5b03e5]
gem/build/RISCV/gem5.opt(_Z6m5MainiPPc+0x7f)[0x980e0f]
--- END LIBC BACKTRACE ---
Gabe Black
2018-09-13 04:33:21 UTC
Permalink
This is a bug in the RISCV ISA. Either that instruction should have decoded
to something else if that group of bits was 0 (a different instruction, a
dummy instruction which generates an undefined opcode exception, etc.), or
the instruction itself should generate a fault. No matter what pattern of
bits you pass to the decoder, you should get an instruction you can execute
out of it that will not assert, panic, etc. This is important at least in
part because the O3 CPU might speculatively execute memory which isn't an
instruction, and there's really no way to know what that memory will hold.
If the instruction returns a Fault when it finds a problem the CPU can
throw away the fault if it determines it shouldn't have executed the
instruction.

Gabe
Post by Zaman, Monir
Hello,
I am simulating 471.omnetpp with RISCV architecture for a given simulation
*Command:*
gem/build/RISCV/gem5.opt -d
/gem5/RESULT/1M_maxK_6/471.omnetpp_out/simpoint1 gem/configs/example/se.py
-I 1000000 -W 100000000 --fast-forward=323000000 --standard-switch=1
--mem-size=2048MB --caches --cacheline_size=64 --l1d_size=8kB
--l1i_size=2kB --l1d_assoc=1 --l1i_assoc=1 -c
/Speckle/build/471.omnetpp_test/omnetpp_base.riscv -o '-f
/Speckle/build/471.omnetpp_test/omnetpp.ini'
*Error :*
**** REAL SIMULATION ****
gem5.opt: build/RISCV/arch/riscv/generated/exec-ns.cc.inc:1341: virtual
Fault RiscvISAInst::C_slli::execute(ExecContext*, Trace::InstRecord*)
const: Assertion `bits(machInst, 11, 7) != 0' failed.
Program aborted at tick
1237033347500
--- BEGIN LIBC BACKTRACE
---
gem/build/RISCV/gem5.opt(_Z15print_backtracev+0x15)[0x978125]
gem/build/RISCV/gem5.opt(_Z12abortHandleri+0x36)[0x982046]
/lib64/libpthread.so.0(+0xf6d0)[0x7ff28cc916d0]
/lib64/libc.so.6(gsignal+0x37)[0x7ff28ada4277]
/lib64/libc.so.6(abort+0x148)[0x7ff28ada5968]
/lib64/libc.so.6(+0x2f096)[0x7ff28ad9d096]
/lib64/libc.so.6(+0x2f142)[0x7ff28ad9d142]
gem/build/RISCV/gem5.opt(_ZNK12RiscvISAInst6C_slli7executeEP11ExecContextPN5Trace10InstRecordE+0x93)[0xa35ae3]
gem/build/RISCV/gem5.opt(_ZN13BaseO3DynInstI9O3CPUImplE7executeEv+0x35)[0x8c57f5]
gem/build/RISCV/gem5.opt(_ZN10DefaultIEWI9O3CPUImplE12executeInstsEv+0xac5)[0x8daeb5]
gem/build/RISCV/gem5.opt(_ZN10DefaultIEWI9O3CPUImplE4tickEv+0x109)[0x8dd1f9]
gem/build/RISCV/gem5.opt(_ZN9FullO3CPUI9O3CPUImplE4tickEv+0x87)[0x8b64d7]
gem/build/RISCV/gem5.opt(_ZN10EventQueue10serviceOneEv+0xa1)[0x97d811]
gem/build/RISCV/gem5.opt(_Z9doSimLoopP10EventQueue+0x38)[0x98b5d8]
gem/build/RISCV/gem5.opt(_Z8simulatem+0xaae)[0x98c40e]
gem/build/RISCV/gem5.opt[0x8819c0]
gem/build/RISCV/gem5.opt[0x864226]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x730a)[0x7ff28c59420a]
/lib64/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7ed)[0x7ff28c59603d]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x663c)[0x7ff28c59353c]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x67bd)[0x7ff28c5936bd]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x67bd)[0x7ff28c5936bd]
/lib64/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7ed)[0x7ff28c59603d]
/lib64/libpython2.7.so.1.0(PyEval_EvalCode+0x32)[0x7ff28c596142]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5513)[0x7ff28c592413]
/lib64/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7ed)[0x7ff28c59603d]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x663c)[0x7ff28c59353c]
/lib64/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7ed)[0x7ff28c59603d]
/lib64/libpython2.7.so.1.0(PyEval_EvalCode+0x32)[0x7ff28c596142]
/lib64/libpython2.7.so.1.0(+0x10057f)[0x7ff28c5af57f]
/lib64/libpython2.7.so.1.0(PyRun_StringFlags+0x65)[0x7ff28c5b03e5]
gem/build/RISCV/gem5.opt(_Z6m5MainiPPc+0x7f)[0x980e0f]
--- END LIBC BACKTRACE ---
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
Alec Roelke
2018-09-15 16:36:16 UTC
Permalink
Are you using the latest version of gem5? That assert was replaced with a
fault a while ago.
Post by Gabe Black
This is a bug in the RISCV ISA. Either that instruction should have
decoded to something else if that group of bits was 0 (a different
instruction, a dummy instruction which generates an undefined opcode
exception, etc.), or the instruction itself should generate a fault. No
matter what pattern of bits you pass to the decoder, you should get an
instruction you can execute out of it that will not assert, panic, etc.
This is important at least in part because the O3 CPU might speculatively
execute memory which isn't an instruction, and there's really no way to
know what that memory will hold. If the instruction returns a Fault when it
finds a problem the CPU can throw away the fault if it determines it
shouldn't have executed the instruction.
Gabe
Post by Zaman, Monir
Hello,
I am simulating 471.omnetpp with RISCV architecture for a given
*Command:*
gem/build/RISCV/gem5.opt -d
/gem5/RESULT/1M_maxK_6/471.omnetpp_out/simpoint1 gem/configs/example/se.py
-I 1000000 -W 100000000 --fast-forward=323000000 --standard-switch=1
--mem-size=2048MB --caches --cacheline_size=64 --l1d_size=8kB
--l1i_size=2kB --l1d_assoc=1 --l1i_assoc=1 -c
/Speckle/build/471.omnetpp_test/omnetpp_base.riscv -o '-f
/Speckle/build/471.omnetpp_test/omnetpp.ini'
*Error :*
**** REAL SIMULATION ****
gem5.opt: build/RISCV/arch/riscv/generated/exec-ns.cc.inc:1341: virtual
Fault RiscvISAInst::C_slli::execute(ExecContext*, Trace::InstRecord*)
const: Assertion `bits(machInst, 11, 7) != 0' failed.
Program aborted at tick
1237033347500
--- BEGIN LIBC BACKTRACE
---
gem/build/RISCV/gem5.opt(_Z15print_backtracev+0x15)[0x978125]
gem/build/RISCV/gem5.opt(_Z12abortHandleri+0x36)[0x982046]
/lib64/libpthread.so.0(+0xf6d0)[0x7ff28cc916d0]
/lib64/libc.so.6(gsignal+0x37)[0x7ff28ada4277]
/lib64/libc.so.6(abort+0x148)[0x7ff28ada5968]
/lib64/libc.so.6(+0x2f096)[0x7ff28ad9d096]
/lib64/libc.so.6(+0x2f142)[0x7ff28ad9d142]
gem/build/RISCV/gem5.opt(_ZNK12RiscvISAInst6C_slli7executeEP11ExecContextPN5Trace10InstRecordE+0x93)[0xa35ae3]
gem/build/RISCV/gem5.opt(_ZN13BaseO3DynInstI9O3CPUImplE7executeEv+0x35)[0x8c57f5]
gem/build/RISCV/gem5.opt(_ZN10DefaultIEWI9O3CPUImplE12executeInstsEv+0xac5)[0x8daeb5]
gem/build/RISCV/gem5.opt(_ZN10DefaultIEWI9O3CPUImplE4tickEv+0x109)[0x8dd1f9]
gem/build/RISCV/gem5.opt(_ZN9FullO3CPUI9O3CPUImplE4tickEv+0x87)[0x8b64d7]
gem/build/RISCV/gem5.opt(_ZN10EventQueue10serviceOneEv+0xa1)[0x97d811]
gem/build/RISCV/gem5.opt(_Z9doSimLoopP10EventQueue+0x38)[0x98b5d8]
gem/build/RISCV/gem5.opt(_Z8simulatem+0xaae)[0x98c40e]
gem/build/RISCV/gem5.opt[0x8819c0]
gem/build/RISCV/gem5.opt[0x864226]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x730a)[0x7ff28c59420a]
/lib64/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7ed)[0x7ff28c59603d]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x663c)[0x7ff28c59353c]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x67bd)[0x7ff28c5936bd]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x67bd)[0x7ff28c5936bd]
/lib64/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7ed)[0x7ff28c59603d]
/lib64/libpython2.7.so.1.0(PyEval_EvalCode+0x32)[0x7ff28c596142]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5513)[0x7ff28c592413]
/lib64/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7ed)[0x7ff28c59603d]
/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x663c)[0x7ff28c59353c]
/lib64/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7ed)[0x7ff28c59603d]
/lib64/libpython2.7.so.1.0(PyEval_EvalCode+0x32)[0x7ff28c596142]
/lib64/libpython2.7.so.1.0(+0x10057f)[0x7ff28c5af57f]
/lib64/libpython2.7.so.1.0(PyRun_StringFlags+0x65)[0x7ff28c5b03e5]
gem/build/RISCV/gem5.opt(_Z6m5MainiPPc+0x7f)[0x980e0f]
--- END LIBC BACKTRACE ---
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
Zaman, Monir
2018-09-16 21:19:55 UTC
Permalink
Hello,
After updating “gem5” to the latest version, this problem is resolved.

Thank you.

Loading...