gem5遇到分段故障,如何修复



所以我正在学习上的教程https://www.gem5.org/documentation/learning_gem5/part1/extending_configs但当我构建它时,会出现分段错误。这是我试图编译的代码:

import m5
from m5.objects import *
system = System()
system.clk_domain = SrcClockDomain()
system.clk_domain.clock = '1GHz'
system.clk_domain.voltage_domain = VoltageDomain()
system.mem_mode = 'timing'
system.mem_ranges = [AddrRange('512MB')]
system.cpu = TimingSimpleCPU()
system.membus = SystemXBar()
system.cpu.icache_port = system.membus.cpu_side_ports
system.cpu.dcache_port = system.membus.cpu_side_ports
system.cpu.createInterruptController()
#system.cpu.interrupts[0].pio = system.membus.master
#system.cpu.interrupts[0].int_master = system.membus.slave
#system.cpu.interrupts[0].int_slave = system.membus.master
system.system_port = system.membus.slave
system.mem_ctrl = MemCtrl()
system.mem_ctrl.dram = DDR3_1600_8x8()
system.mem_ctrl.dram.range = system.mem_ranges[0]
system.mem_ctrl.port = system.membus.mem_side_ports
process = Process()
process.cmd = ['cpu_tests/benchmarks/bin/arm/Bubblesort']
system.cpu.workload = process
system.cpu.createThreads()
root = Root(full_system = False, system = system)
m5.instantiate()
print("Begginning simulation")
exit_event = m5.simulate()
print("Done simulating at tick %d because %s " % (m5.curTick(),exit_event.getCause()))

这就是我得到的错误:

build/ARM/base/statistics.hh:277: warn: One of the stats is a legacy stat. Legacy stat is a stat that does not belong to any 
statistics::Group. Legacy stat is deprecated.
gem5 Simulator System.  http://gem5.org
gem5 is copyrighted software; use the --copyright option for details.
gem5 version 21.1.0.2
gem5 compiled Dec 19 2021 17:27:33
gem5 started Dec 19 2021 17:47:09
gem5 executing on denis-VirtualBox, pid 12622
command line: build/ARM/gem5.opt
configs/tutorial/simple.py
warn: membus.slave is deprecated. `slave` is now called `cpu_side_ports`
Global frequency set at 1000000000000 ticks per second
warn: No dot file generated. Please install pydot to generate the dot file and pdf.
build/ARM/mem/mem_interface.cc:791: warn: DRAM device capacity (8192 Mbytes) does not match the address range assigned (512 Mbytes)
Begginning simulation
build/ARM/sim/simulate.cc:107: info: Entering event queue @ 0.  Starting simulation...
gem5 has encountered a segmentation fault!
--- BEGIN LIBC BACKTRACE ---
build/ARM/gem5.opt(+0x1e6c480)[0x560ccbebd480]
build/ARM/gem5.opt(+0x1e8ac45)[0x560ccbedbc45]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x153c0)[0x7effdd1173c0]
build/ARM/gem5.opt(+0xd3c29b)[0x560ccad8d29b]
build/ARM/gem5.opt(+0x791543)[0x560cca7e2543]
build/ARM/gem5.opt(+0x7896bd)[0x560cca7da6bd]
build/ARM/gem5.opt(+0x78a064)[0x560cca7db064]
build/ARM/gem5.opt(+0x1e78b3d)[0x560ccbec9b3d]
build/ARM/gem5.opt(+0x1ea4de4)[0x560ccbef5de4]
build/ARM/gem5.opt(+0x1ea5632)[0x560ccbef6632]
build/ARM/gem5.opt(+0xd21252)[0x560ccad72252]
build/ARM/gem5.opt(+0x6cde11)[0x560cca71ee11]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(+0x2a8718)[0x7effdd3cd718]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyEval_EvalFrameDefault+0x8dd8)[0x7effdd1a2f48]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyEval_EvalCodeWithName+0x8fb)[0x7effdd2efecb]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyFunction_Vectorcall+0x94)[0x7effdd3cd0f4]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(+0x74d6d)[0x7effdd199d6d]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyEval_EvalFrameDefault+0x7d86)[0x7effdd1a1ef6]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyEval_EvalCodeWithName+0x8fb)[0x7effdd2efecb]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(PyEval_EvalCodeEx+0x42)[0x7effdd2f0252]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(PyEval_EvalCode+0x1f)[0x7effdd2f063f]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(+0x1cfc81)[0x7effdd2f4c81]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(+0x25f527)[0x7effdd384527]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(+0x74d6d)[0x7effdd199d6d]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyEval_EvalFrameDefault+0x12fd)[0x7effdd19b46d]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyEval_EvalCodeWithName+0x8fb)[0x7effdd2efecb]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyFunction_Vectorcall+0x94)[0x7effdd3cd0f4]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(+0x74d6d)[0x7effdd199d6d]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyEval_EvalFrameDefault+0x7d86)[0x7effdd1a1ef6]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(_PyEval_EvalCodeWithName+0x8fb)[0x7effdd2efecb]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(PyEval_EvalCodeEx+0x42)[0x7effdd2f0252]
/lib/x86_64-linux-gnu/libpython3.8.so.1.0(PyEval_EvalCode+0x1f)[0x7effdd2f063f]
--- END LIBC BACKTRACE ---
Segmentation fault (core dumped)

并且我正在使用终端命令:build/ARM/gem5.opt configs/tutorial/simple.py我严格遵循他们网站上的教程,我遇到了分段错误。有人知道是什么创建了它吗?我该如何修复它?我尝试过更新和清除缓存,然后再次构建它,但仍然存在相同的错误。我在oracleVirtualBox上使用Ubuntu 20.04。

这也是代码的一个问题。如原文章所述http://www.gem5.org/documentation/learning_gem5/part1/simple_config/

# for gem5 V21 and beyond
system.workload = SEWorkload.init_compatible(binary)

我建议你修改你的代码如下

binary = 'tests/test-progs/hello/bin/riscv/linux/hello'
system.workload = SEWorkload.init_compatible(binary)    
process = Process()

(增加了两行新代码(

最新更新