RISC-V Rocket-Chip周期精确的C ++仿真器因“std :: bad_alloc”错误而失败

时间:2015-02-13 13:21:26

标签: riscv

我已经尝试通过遵守github上的说明来测试RISC-V Rocket-Chip周期精确的C ++仿真器,并且我得到了如下所示的错误。

g++ -O1 -std=c++11 -I/home/iorivur/src/scala/riscv/toolchain/include -I/home/iorivur/src/test/rocket-chip/csrc -I/home/iorivur/src/test/rocket-chip/dramsim2 -o emulator-D
efaultCPPConfig emulator.o mm.o mm_dramsim2.o Top.DefaultCPPConfig.o  -L/home/iorivur/src/scala/riscv/toolchain/lib -Wl,-rpath,/home/iorivur/src/scala/riscv/toolchain/lib
 -L. -ldramsim -lfesvr -lpthread
./emulator-DefaultCPPConfig +dramsim +max-cycles=100000000 +verbose +loadmem=output/rv64ui-p-add.hex none 2> output/rv64ui-p-add.out && [ $PIPESTATUS -eq 0 ]
./emulator-DefaultCPPConfig +dramsim +max-cycles=100000000 +verbose +loadmem=output/rv64ui-p-addi.hex none 2> output/rv64ui-p-addi.out && [ $PIPESTATUS -eq 0 ]
./emulator-DefaultCPPConfig +dramsim +max-cycles=100000000 +verbose +loadmem=output/rv64ui-p-amoadd_d.hex none 2> output/rv64ui-p-amoadd_d.out && [ $PIPESTATUS -eq 0 ]
./emulator-DefaultCPPConfig +dramsim +max-cycles=100000000 +verbose +loadmem=output/rv64ui-p-amoadd_w.hex none 2> output/rv64ui-p-amoadd_w.out && [ $PIPESTATUS -eq 0 ]
./emulator-DefaultCPPConfig +dramsim +max-cycles=100000000 +verbose +loadmem=output/rv64ui-p-amoand_d.hex none 2> output/rv64ui-p-amoand_d.out && [ $PIPESTATUS -eq 0 ]
/bin/sh: line 1: 11307 Aborted                 (core dumped) ./emulator-DefaultCPPConfig +dramsim +max-cycles=100000000 +verbose +loadmem=output/rv64ui-p-amoadd_w.hex non
e 2> output/rv64ui-p-amoadd_w.out
/bin/sh: line 1: 11304 Aborted                 (core dumped) ./emulator-DefaultCPPConfig +dramsim +max-cycles=100000000 +verbose +loadmem=output/rv64ui-p-addi.hex none 2>
 output/rv64ui-p-addi.out
/bin/sh: line 1: 11305 Aborted                 (core dumped) ./emulator-DefaultCPPConfig +dramsim +max-cycles=100000000 +verbose +loadmem=output/rv64ui-p-add.hex none 2> 
output/rv64ui-p-add.out
Makefile:71: recipe for target 'output/rv64ui-p-addi.out' failed
make: *** [output/rv64ui-p-addi.out] Error 134
make: *** Waiting for unfinished jobs....
Makefile:71: recipe for target 'output/rv64ui-p-add.out' failed
make: *** [output/rv64ui-p-add.out] Error 134
Makefile:71: recipe for target 'output/rv64ui-p-amoadd_w.out' failed
make: *** [output/rv64ui-p-amoadd_w.out] Error 134
/bin/sh: line 1: 11311 Aborted                 (core dumped) ./emulator-DefaultCPPConfig +dramsim +max-cycles=100000000 +verbose +loadmem=output/rv64ui-p-amoand_d.hex non
e 2> output/rv64ui-p-amoand_d.out
Makefile:71: recipe for target 'output/rv64ui-p-amoand_d.out' failed
make: *** [output/rv64ui-p-amoand_d.out] Error 134
/bin/sh: line 1: 11306 Aborted                 (core dumped) ./emulator-DefaultCPPConfig +dramsim +max-cycles=100000000 +verbose +loadmem=output/rv64ui-p-amoadd_d.hex non
e 2> output/rv64ui-p-amoadd_d.out
Makefile:71: recipe for target 'output/rv64ui-p-amoadd_d.out' failed
make: *** [output/rv64ui-p-amoadd_d.out] Error 134

"输出/ rv64ui-p-amoadd_w.out"的内容是:

terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

我发现程序在mm_t初始化时已经疯了。

此代码将获取4GB内存,如果失败,程序将突然死亡。

1 个答案:

答案 0 :(得分:3)

正如我上面编辑的那样,我发现程序在mm_t初始化时已经疯了。 这段代码将打算4GB内存,如果它比代码期望的那么糟糕,那么程序会突然死掉。

我认为这种行为并没有提及文件是不好的。

我会编写一个补丁来捕获此异常并尽快通知用户。

感谢。