gem5-users@gem5.org

The gem5 Users mailing list

View all threads

Why does a decoder-related segmentation fault accur when restoring checkpoints make of simpoints?

봉하승
Tue, Jun 14, 2022 6:48 AM

나는 workload 에서 simpoints를 만들었고 simpoints를 이용하여서 checkpoint를 만들었다.
checkpoint 만드는 방법은
http://cluelessram.blogspot.com/2017/10/using-simpoint-in-gem5-to-speed-up_11.html
이 사이트를 참조하였다.
위 방법으로 만들어진 checkpoint를 restore할 때 segmentation fault가 발생하였다.
gdb로 확인해본 결과 params.decoder[i]의 객체가 생성이 누락되었다.

실행 명령어는 다음과 같다.
build/ARM/gem5.opt ./configs/example/se.py
-r 1
--restore-simpoint-checkpoint
--cmd=/home/hasueng/builded_spec/502.gcc_r/exe/cpugcc_r_base.mytest-64 -o
"-O3 -finline-limit=50000 -I/usr/aarch64-linux-gnu/include
-I/home/hasueng/SimPoint.3.2/exe/include
/home/hasueng/makeBBV/502.gcc_r.bbv/hello_loop_arm.c -o hello_loop_arm.s"
--checkpoint-dir /home/hasueng/DATA_hybrid/m5out_gcc_r_CP_interval_06_08
--cpu-type=O3CPU
--restore-with-cpu=DerivO3CPU
--mem-size=8GB
--l1d_size=16kB --l1d_assoc=4
--l1i_size=8kB --l1i_assoc=1
--l2_size=1MB --l2_assoc=8
--cacheline_size=64 --caches --l2cache
--bp-type=LocalBP

gdb 결과는 다음과 같다.
Program received signal SIGSEGV, Segmentation fault.
gem5::o3::Fetch::Fetch (this=0x55555c2ba4e0, _cpu=0x55555c2ba000,
params=...) at build/ARM/cpu/o3/fetch.cc:139
139            decoder[tid] = params.decoder[tid];
(gdb) bt
#0  gem5::o3::Fetch::Fetch (this=0x55555c2ba4e0, _cpu=0x55555c2ba000,
params=...) at build/ARM/cpu/o3/fetch.cc:139
#1  0x0000555557c090e1 in gem5::o3::CPU::CPU (this=0x55555c2ba000,
params=...) at build/ARM/cpu/o3/cpu.cc:118
#2  0x000055555818e2bf in gem5::(anonymous
namespace)::DummyO3CPUShunt<gem5::o3::CPU, void>::create (p=...) at
build/ARM/python/_m5/param_O3CPU.cc:185
#3  0x000055555818e292 in gem5::O3CPUParams::create (this=0x55555b5a9080)
at build/ARM/python/_m5/param_O3CPU.cc:209
#4  0x00005555581909db in
pybind11::cpp_function::cpp_function<gem5::o3::CPU*, gem5::O3CPUParams, ,
pybind11::name, pybind11::is_method, pybind11::sibling>(gem5::o3::CPU*
(gem5::O3CPUParams::)() const, pybind11::name const&, pybind11::is_method
const&, pybind11::sibling const&)::{lambda(gem5::O3CPUParams
const
)#1}::operator()(gem5::O3CPUParams const*) const
(this=0x55555abf8158, c=0x55555b5a9080) at
ext/pybind11/include/pybind11/pybind11.h:126
#5  0x00005555581969c9 in
pybind11::detail::argument_loader<gem5::O3CPUParams
const*>::call_impl<gem5::o3::CPU*,
pybind11::cpp_function::cpp_function<gem5::o3::CPU*, gem5::O3CPUParams, ,
pybind11::name, pybind11::is_method, pybind11::sibling>(gem5::o3::CPU*
(gem5::O3CPUParams::)() const, pybind11::name const&, pybind11::is_method
const&, pybind11::sibling const&)::{lambda(gem5::O3CPUParams const
)#1}&,
0ul,
pybind11::detail::void_type>(pybind11::cpp_function::cpp_function<gem5::o3::CPU*,
gem5::O3CPUParams, , pybind11::name, pybind11::is_method,
pybind11::sibling>(gem5::o3::CPU* (gem5::O3CPUParams::)() const,
pybind11::name const&, pybind11::is_method const&, pybind11::sibling
const&)::{lambda(gem5::O3CPUParams const
)#1}&,
std::integer_sequence<unsigned long, 0ul>, pybind11::detail::void_type&&)
&& (this=0x7fffffffc620, f=...) at ext/pybind11/include/pybind11/cast.h:1217
#6  0x0000555558195650 in
pybind11::detail::argument_loader<gem5::O3CPUParams
const*>::call<gem5::o3::CPU*, pybind11::detail::void_type,
pybind11::cpp_function::cpp_function<gem5::o3::CPU*, gem5::O3CPUParams, ,
pybind11::name, pybind11::is_method, pybind11::sibling>(gem5::o3::CPU*
(gem5::O3CPUParams::)() const, pybind11::name const&, pybind11::is_method
const&, pybind11::sibling const&)::{lambda(gem5::O3CPUParams
const
)#1}&>(pybind11::cpp_function::cpp_function<gem5::o3::CPU*,
gem5::O3CPUParams, , pybind11::name, pybind11::is_method,
pybind11::sibling>(gem5::o3::CPU* (gem5::O3CPUParams::)() const,
pybind11::name const&, pybind11::is_method const&, pybind11::sibling
const&)::{lambda(gem5::O3CPUParams const
)#1}&) && (this=0x7fffffffc620,
f=...) at ext/pybind11/include/pybind11/cast.h:1189
#7  0x0000555558191b21 in
pybind11::cpp_function::initialize<pybind11::cpp_function::initialize<gem5::o3::CPU*,
gem5::O3CPUParams, , pybind11::name, pybind11::is_method,
pybind11::sibling>(gem5::o3::CPU* (gem5::O3CPUParams::)() const,
pybind11::name const&, pybind11::is_method const&, pybind11::sibling
const&)::{lambda(gem5::O3CPUParams const
)#1}, gem5::o3::CPU*,
gem5::O3CPUParams const*, pybind11::name, pybind11::is_method,
pybind11::sibling>(pybind11::cpp_function::initialize<gem5::o3::CPU*,
gem5::O3CPUParams, , pybind11::name, pybind11::is_method,
pybind11::sibling>(gem5::o3::CPU* (gem5::O3CPUParams::)() const,
pybind11::name const&, pybind11::is_method const&, pybind11::sibling
const&)::{lambda(gem5::O3CPUParams const
)#1}&&, gem5::o3::CPU*
()(gem5::O3CPUParams const), pybind11::name const&, pybind11::is_method
const&, pybind11::sibling
const&)::{lambda(pybind11::detail::function_call&)#3}::operator()(pybind11::detail::function_call)
const (this=0x0, call=...) at ext/pybind11/include/pybind11/pybind11.h:232
#8  0x0000555558191c4f in
pybind11::cpp_function::initialize<pybind11::cpp_function::initialize<gem5::o3::CPU*,
gem5::O3CPUParams, , pybind11::name, pybind11::is_method,
pybind11::sibling>(gem5::o3::CPU* (gem5::O3CPUParams::)() const,
pybind11::name const&, pybind11::is_method const&, pybind11::sibling
const&)::{lambda(gem5::O3CPUParams const
)#1}, gem5::o3::CPU*,
gem5::O3CPUParams const*, pybind11::name, pybind11::is_method,
pybind11::sibling>(pybind11::cpp_function::initialize<gem5::o3::CPU*,
gem5::O3CPUParams, , pybind11::name, pybind11::is_method,
pybind11::sibling>(gem5::o3::CPU* (gem5::O3CPUParams::)() const,
pybind11::name const&, pybind11::is_method const&, pybind11::sibling
const&)::{lambda(gem5::O3CPUParams const
)#1}&&, gem5::o3::CPU*
()(gem5::O3CPUParams const), pybind11::name const&, pybind11::is_method
const&, pybind11::sibling
const&)::{lambda(pybind11::detail::function_call&)#3}::_FUN(pybind11::detail::function_call)
() at ext/pybind11/include/pybind11/pybind11.h:210
#9  0x0000555555c81a30 in pybind11::cpp_function::dispatcher
(self=0x7ffff5f44b40, args_in=0x7ffff506d820, kwargs_in=0x0) at
ext/pybind11/include/pybind11/pybind11.h:814
#10 0x00007ffff7cfa738 in ?? () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#11 0x00007ffff7cfab1b in _PyObject_MakeTpCall () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#12 0x00007ffff7cfade0 in ?? () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#13 0x00007ffff7ac6d6d in ?? () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#14 0x00007ffff7aceef6 in _PyEval_EvalFrameDefault () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#15 0x00007ffff7ad206b in ?? () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#16 0x00007ffff7cfadaa in ?? () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#17 0x00007ffff7ac6d6d in ?? () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#18 0x00007ffff7aceef6 in _PyEval_EvalFrameDefault () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#19 0x00007ffff7ad206b in ?? () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#20 0x00007ffff7cfadaa in ?? () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#21 0x00007ffff7ac6d6d in ?? () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#22 0x00007ffff7aceef6 in _PyEval_EvalFrameDefault () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#23 0x00007ffff7c1ce3b in _PyEval_EvalCodeWithName () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#24 0x00007ffff7cfa114 in _PyFunction_Vectorcall () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#25 0x00007ffff7ac6d6d in ?? () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#26 0x00007ffff7aceef6 in _PyEval_EvalFrameDefault () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#27 0x00007ffff7c1ce3b in _PyEval_EvalCodeWithName () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#28 0x00007ffff7cfa114 in _PyFunction_Vectorcall () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#29 0x00007ffff7ac6d6d in ?? () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#30 0x00007ffff7aceef6 in _PyEval_EvalFrameDefault () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#31 0x00007ffff7c1ce3b in _PyEval_EvalCodeWithName () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#32 0x00007ffff7c1d1c2 in PyEval_EvalCodeEx () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#33 0x00007ffff7c1d5af in PyEval_EvalCode () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#34 0x00007ffff7c21bf1 in ?? () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#35 0x00007ffff7cb1537 in ?? () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#36 0x00007ffff7ac6d6d in ?? () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#37 0x00007ffff7ac846d in _PyEval_EvalFrameDefault () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#38 0x00007ffff7ad206b in ?? () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#39 0x00007ffff7cfa830 in PyVectorcall_Call () from
/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#40 0x0000555555c8a8b2 in
pybind11::detail::simple_collector<(pybind11::return_value_policy)1>::call
(this=0x7fffffffdb00, ptr=0x7ffff560b670) at
ext/pybind11/include/pybind11/cast.h:1239
#41 0x0000555555c9dc32 in
pybind11::detail::object_api<pybind11::detail::accessorpybind11::detail::accessor_policies::str_attr

::operator()<(pybind11::return_value_policy)1> (this=0x7fffffffdb80) at

ext/pybind11/include/pybind11/cast.h:1400
#42 0x0000555555c9bedd in main (argc=23, argv=0x7fffffffdcb8) at
build/ARM/sim/main.cc:69

이 오류는 --cpu-type=AtomicSimpleCPU, --cpu-type=TimingSimpleCPU일 때 decoder접근하는
부분에서 모두 발생한다.

나는 이 오류가 switch_cpus와 관련있다고 생각한다. 위 workload에 simpoint를 사용하지 않고 숫자를 명시해서
checkpoint를 만들면
switch_cpus과정이 필요없다. switch_cpus를 사용하지 않았을 때는 오류가 발생하지 않았다.

나는 workload 에서 simpoints를 만들었고 simpoints를 이용하여서 checkpoint를 만들었다. checkpoint 만드는 방법은 http://cluelessram.blogspot.com/2017/10/using-simpoint-in-gem5-to-speed-up_11.html 이 사이트를 참조하였다. 위 방법으로 만들어진 checkpoint를 restore할 때 segmentation fault가 발생하였다. gdb로 확인해본 결과 params.decoder[i]의 객체가 생성이 누락되었다. 실행 명령어는 다음과 같다. build/ARM/gem5.opt ./configs/example/se.py \ -r 1 \ --restore-simpoint-checkpoint \ --cmd=/home/hasueng/builded_spec/502.gcc_r/exe/cpugcc_r_base.mytest-64 -o \ "-O3 -finline-limit=50000 -I/usr/aarch64-linux-gnu/include -I/home/hasueng/SimPoint.3.2/exe/include \ /home/hasueng/makeBBV/502.gcc_r.bbv/hello_loop_arm.c -o hello_loop_arm.s" \ --checkpoint-dir /home/hasueng/DATA_hybrid/m5out_gcc_r_CP_interval_06_08 \ --cpu-type=O3CPU \ --restore-with-cpu=DerivO3CPU \ --mem-size=8GB \ --l1d_size=16kB --l1d_assoc=4 \ --l1i_size=8kB --l1i_assoc=1 \ --l2_size=1MB --l2_assoc=8 \ --cacheline_size=64 --caches --l2cache \ --bp-type=LocalBP gdb 결과는 다음과 같다. Program received signal SIGSEGV, Segmentation fault. gem5::o3::Fetch::Fetch (this=0x55555c2ba4e0, _cpu=0x55555c2ba000, params=...) at build/ARM/cpu/o3/fetch.cc:139 139 decoder[tid] = params.decoder[tid]; (gdb) bt #0 gem5::o3::Fetch::Fetch (this=0x55555c2ba4e0, _cpu=0x55555c2ba000, params=...) at build/ARM/cpu/o3/fetch.cc:139 #1 0x0000555557c090e1 in gem5::o3::CPU::CPU (this=0x55555c2ba000, params=...) at build/ARM/cpu/o3/cpu.cc:118 #2 0x000055555818e2bf in gem5::(anonymous namespace)::DummyO3CPUShunt<gem5::o3::CPU, void>::create (p=...) at build/ARM/python/_m5/param_O3CPU.cc:185 #3 0x000055555818e292 in gem5::O3CPUParams::create (this=0x55555b5a9080) at build/ARM/python/_m5/param_O3CPU.cc:209 #4 0x00005555581909db in pybind11::cpp_function::cpp_function<gem5::o3::CPU*, gem5::O3CPUParams, , pybind11::name, pybind11::is_method, pybind11::sibling>(gem5::o3::CPU* (gem5::O3CPUParams::*)() const, pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(gem5::O3CPUParams const*)#1}::operator()(gem5::O3CPUParams const*) const (this=0x55555abf8158, c=0x55555b5a9080) at ext/pybind11/include/pybind11/pybind11.h:126 #5 0x00005555581969c9 in pybind11::detail::argument_loader<gem5::O3CPUParams const*>::call_impl<gem5::o3::CPU*, pybind11::cpp_function::cpp_function<gem5::o3::CPU*, gem5::O3CPUParams, , pybind11::name, pybind11::is_method, pybind11::sibling>(gem5::o3::CPU* (gem5::O3CPUParams::*)() const, pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(gem5::O3CPUParams const*)#1}&, 0ul, pybind11::detail::void_type>(pybind11::cpp_function::cpp_function<gem5::o3::CPU*, gem5::O3CPUParams, , pybind11::name, pybind11::is_method, pybind11::sibling>(gem5::o3::CPU* (gem5::O3CPUParams::*)() const, pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(gem5::O3CPUParams const*)#1}&, std::integer_sequence<unsigned long, 0ul>, pybind11::detail::void_type&&) && (this=0x7fffffffc620, f=...) at ext/pybind11/include/pybind11/cast.h:1217 #6 0x0000555558195650 in pybind11::detail::argument_loader<gem5::O3CPUParams const*>::call<gem5::o3::CPU*, pybind11::detail::void_type, pybind11::cpp_function::cpp_function<gem5::o3::CPU*, gem5::O3CPUParams, , pybind11::name, pybind11::is_method, pybind11::sibling>(gem5::o3::CPU* (gem5::O3CPUParams::*)() const, pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(gem5::O3CPUParams const*)#1}&>(pybind11::cpp_function::cpp_function<gem5::o3::CPU*, gem5::O3CPUParams, , pybind11::name, pybind11::is_method, pybind11::sibling>(gem5::o3::CPU* (gem5::O3CPUParams::*)() const, pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(gem5::O3CPUParams const*)#1}&) && (this=0x7fffffffc620, f=...) at ext/pybind11/include/pybind11/cast.h:1189 #7 0x0000555558191b21 in pybind11::cpp_function::initialize<pybind11::cpp_function::initialize<gem5::o3::CPU*, gem5::O3CPUParams, , pybind11::name, pybind11::is_method, pybind11::sibling>(gem5::o3::CPU* (gem5::O3CPUParams::*)() const, pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(gem5::O3CPUParams const*)#1}, gem5::o3::CPU*, gem5::O3CPUParams const*, pybind11::name, pybind11::is_method, pybind11::sibling>(pybind11::cpp_function::initialize<gem5::o3::CPU*, gem5::O3CPUParams, , pybind11::name, pybind11::is_method, pybind11::sibling>(gem5::o3::CPU* (gem5::O3CPUParams::*)() const, pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(gem5::O3CPUParams const*)#1}&&, gem5::o3::CPU* (*)(gem5::O3CPUParams const*), pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(pybind11::detail::function_call&)#3}::operator()(pybind11::detail::function_call) const (this=0x0, call=...) at ext/pybind11/include/pybind11/pybind11.h:232 #8 0x0000555558191c4f in pybind11::cpp_function::initialize<pybind11::cpp_function::initialize<gem5::o3::CPU*, gem5::O3CPUParams, , pybind11::name, pybind11::is_method, pybind11::sibling>(gem5::o3::CPU* (gem5::O3CPUParams::*)() const, pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(gem5::O3CPUParams const*)#1}, gem5::o3::CPU*, gem5::O3CPUParams const*, pybind11::name, pybind11::is_method, pybind11::sibling>(pybind11::cpp_function::initialize<gem5::o3::CPU*, gem5::O3CPUParams, , pybind11::name, pybind11::is_method, pybind11::sibling>(gem5::o3::CPU* (gem5::O3CPUParams::*)() const, pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(gem5::O3CPUParams const*)#1}&&, gem5::o3::CPU* (*)(gem5::O3CPUParams const*), pybind11::name const&, pybind11::is_method const&, pybind11::sibling const&)::{lambda(pybind11::detail::function_call&)#3}::_FUN(pybind11::detail::function_call) () at ext/pybind11/include/pybind11/pybind11.h:210 #9 0x0000555555c81a30 in pybind11::cpp_function::dispatcher (self=0x7ffff5f44b40, args_in=0x7ffff506d820, kwargs_in=0x0) at ext/pybind11/include/pybind11/pybind11.h:814 #10 0x00007ffff7cfa738 in ?? () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #11 0x00007ffff7cfab1b in _PyObject_MakeTpCall () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #12 0x00007ffff7cfade0 in ?? () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #13 0x00007ffff7ac6d6d in ?? () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #14 0x00007ffff7aceef6 in _PyEval_EvalFrameDefault () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #15 0x00007ffff7ad206b in ?? () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #16 0x00007ffff7cfadaa in ?? () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #17 0x00007ffff7ac6d6d in ?? () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #18 0x00007ffff7aceef6 in _PyEval_EvalFrameDefault () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #19 0x00007ffff7ad206b in ?? () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #20 0x00007ffff7cfadaa in ?? () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #21 0x00007ffff7ac6d6d in ?? () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #22 0x00007ffff7aceef6 in _PyEval_EvalFrameDefault () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #23 0x00007ffff7c1ce3b in _PyEval_EvalCodeWithName () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #24 0x00007ffff7cfa114 in _PyFunction_Vectorcall () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #25 0x00007ffff7ac6d6d in ?? () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #26 0x00007ffff7aceef6 in _PyEval_EvalFrameDefault () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #27 0x00007ffff7c1ce3b in _PyEval_EvalCodeWithName () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #28 0x00007ffff7cfa114 in _PyFunction_Vectorcall () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #29 0x00007ffff7ac6d6d in ?? () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #30 0x00007ffff7aceef6 in _PyEval_EvalFrameDefault () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #31 0x00007ffff7c1ce3b in _PyEval_EvalCodeWithName () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #32 0x00007ffff7c1d1c2 in PyEval_EvalCodeEx () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #33 0x00007ffff7c1d5af in PyEval_EvalCode () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #34 0x00007ffff7c21bf1 in ?? () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #35 0x00007ffff7cb1537 in ?? () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #36 0x00007ffff7ac6d6d in ?? () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #37 0x00007ffff7ac846d in _PyEval_EvalFrameDefault () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #38 0x00007ffff7ad206b in ?? () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #39 0x00007ffff7cfa830 in PyVectorcall_Call () from /lib/x86_64-linux-gnu/libpython3.8.so.1.0 #40 0x0000555555c8a8b2 in pybind11::detail::simple_collector<(pybind11::return_value_policy)1>::call (this=0x7fffffffdb00, ptr=0x7ffff560b670) at ext/pybind11/include/pybind11/cast.h:1239 #41 0x0000555555c9dc32 in pybind11::detail::object_api<pybind11::detail::accessor<pybind11::detail::accessor_policies::str_attr> >::operator()<(pybind11::return_value_policy)1> (this=0x7fffffffdb80) at ext/pybind11/include/pybind11/cast.h:1400 #42 0x0000555555c9bedd in main (argc=23, argv=0x7fffffffdcb8) at build/ARM/sim/main.cc:69 이 오류는 --cpu-type=AtomicSimpleCPU, --cpu-type=TimingSimpleCPU일 때 decoder접근하는 부분에서 모두 발생한다. 나는 이 오류가 switch_cpus와 관련있다고 생각한다. 위 workload에 simpoint를 사용하지 않고 숫자를 명시해서 checkpoint를 만들면 switch_cpus과정이 필요없다. switch_cpus를 사용하지 않았을 때는 오류가 발생하지 않았다.