我正在尝试从InvisiSpec paper复制数据。 InvisiSpec是硬件中针对Spectre攻击的防御机制。我使用的是本文作者发布的github code。我以前在Gem5上构建InvisiSpec时遇到问题,但现在已解决了该问题。
当前,此存储库中的Gem5的构建在我的系统上没有错误。并成功完成以下方案的运行。
--scheme=UnsafeBaseline
--scheme=FuturisticSafeFence
--scheme=SpectreSafeFence
但是SpectreSafeInvisibleSpec
方案因核心转储而中止。泄漏源显然来自缓存中的satisfyRequest
函数:
build/X86/mem/cache/cache.cc:192: void Cache::satisfyRequest(PacketPtr, CacheBlk*, bool, bool): Assertion `pkt->hasRespData()' failed.
我尝试为较少的指令数以及不同的缓存配置和不同的TSO运行此方案,但是没有成功。
build/X86/gem5.opt -d myout/gcc configs/example/se.py --cmd=../workspace/benchmarks/cpu2006/spec-SE/binaries/x86/linux/gcc -I 100000 --cpu-type=DerivO3CPU --caches --scheme=SpectreSafeInvisibleSpec --needsTSO=1
这是回溯:
build/X86/gem5.opt(_Z15print_backtracev+0x2c)[0x563bddc2e4ec]
build/X86/gem5.opt(_Z12abortHandleri+0x4a)[0x563bddc42c1a]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x12890)[0x7fd71633f890]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0xc7)[0x7fd714b4de97]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x141)[0x7fd714b4f801]
/lib/x86_64-linux-gnu/libc.so.6(+0x3039a)[0x7fd714b3f39a]
/lib/x86_64-linux-gnu/libc.so.6(+0x30412)[0x7fd714b3f412]
build/X86/gem5.opt(_ZN5Cache14satisfyRequestEP6PacketP8CacheBlkbb+0x6d1)[0x563bdda3d0f1]
build/X86/gem5.opt(_ZN5Cache14recvTimingRespEP6Packet+0xa7d)[0x563bdda45ced]
build/X86/gem5.opt(_ZN5Cache11MemSidePort14recvTimingRespEP6Packet+0x10)[0x563bdda46c40]
build/X86/gem5.opt(+0x9c809e)[0x563bdd3e609e]
build/X86/gem5.opt(_ZN10EventQueue10serviceOneEv+0xd9)[0x563bddc35c59]
build/X86/gem5.opt(_Z9doSimLoopP10EventQueue+0x87)[0x563bddc50a67]
build/X86/gem5.opt(_Z8simulatem+0xcba)[0x563bddc51aba]
build/X86/gem5.opt(+0xfc6d2e)[0x563bdd9e4d2e]
build/X86/gem5.opt(+0xcf1e9b)[0x563bdd70fe9b]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x64d7)[0x7fd7165f9697]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7d8)[0x7fd71672b278]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5bf6)[0x7fd7165f8db6]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x8b5b)[0x7fd7165fbd1b]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x8b5b)[0x7fd7165fbd1b]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7d8)[0x7fd71672b278]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCode+0x19)[0x7fd7165f3029]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x6ac0)[0x7fd7165f9c80]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7d8)[0x7fd71672b278]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5bf6)[0x7fd7165f8db6]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x7d8)[0x7fd71672b278]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCode+0x19)[0x7fd7165f3029]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyRun_StringFlags+0x76)[0x7fd716696546]
build/X86/gem5.opt(_Z6m5MainiPPc+0x83)[0x563bddc417e3]
build/X86/gem5.opt(main+0x33)[0x563bdcde0843]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0x7fd714b30b97]
相应的github存储库中也报告了此问题。