Не удается запустить схему SpectreSafeInvisibleSpec для проблемы с дампом ядра Gem5 - PullRequest
1 голос
/ 17 мая 2019

Я пытаюсь воспроизвести данные с бумаги InvisiSpec . InvisiSpec - это аппаратный механизм защиты от атаки Spectre. Я использую github код , выпущенный автором статьи. Раньше у меня была проблема сборки InvisiSpec на Gem5, но теперь эта проблема решена.

В настоящее время 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 .

...