| Bug | Cause | Fix |
|---|---|---|
| 新增加的memory imitator会重复进入simulate | 在switch cpu时,memory imitator有残留的event没有deschedule 。即在switch之前,有event被schedule了,但在switch时,还没来得及调用,也没被清空,就会进入死循环。持续报告:“Entering event queue @ %d. Starting simulation…” | 没有解决,通过atomic时,不发送请求,也就不需要清空残留的event规避掉了 |
| packet指针错乱 | 对于不需要response的packet,负责处理该packet的节点在处理完毕时,会直接delete该packet,如果此时中间的节点仍然hold该packet,后续该空间再被allocate时,就会指针错乱 | 重新copy一份,或者换个方式使用packet |
| libgomp: Thread creation failed: Resource temporarily unavailable | gem5 se mode 不支持多线程,而spec2017 FP speed mode基本都使用了多线程 | 1)可以尝试编译时,引入m5_thread(放弃) 2)编译spec2017时,EXTRA_OPTIMIZE = - DSPEC_SUPPRESS_OPENMP,编译时不使用openmp,可解。 |
| non temporal instruction try to access unmapped memory | x86 MOVNTDQ 在x86指令中认为是uncacheable,在se模式下不会分配页表,不在stack或者heap中,会报错。 | src/sim/mem_state.cc MemState::fixupFault中直接 给该地址分配memory解决 _ownerProcess->allocateMem(page_aligned, _pageBytes); |
| full system spec2017 仿真时,num-cpu和copies的数量如果不匹配,其他的cpu会一直发送对0x2c00200c的读请求 | 忽略即可,也可以将numcpu和copies的数量匹配一致 | |
| restore checkpoint fatal condition can’t unserialize ‘system.cpu:_pid’ | replace switch_cpus with cpu | |
| spec2017 omentpp Error: Network `largeNet’ not found, check .ini and .ned files. | largeNet 网络加载时遇到问题 | 修改源代码,如下1) |
| Gem5环境问题 | ||
| gem5-art环境bug | pip install -U virtualenv | |
| gem5 报错 collect2: fatal error: ld terminated with signal 9 | 最新版本已经没有–force-lto的optition了 | scons ./build/X86/gem5.opt --gold-linker 可解 |
| perf kvm counter error. A value greater than 1 prevents gem5 from making the syscall to perf_event_open. | sudo sysctl -w kernel.perf_event_paranoid=1 | |
| sniper环境问题 | ||
| 编译失败 | 使用docker编译模式,结果发现Error: ‘PIN_REGISTER’ has not been declared,切换pin_kit的版本到 Pin 3.22 ,软连接后,编译成功。 | |
| ubuntu环境问题 | ||
| 网络不通 | 检查了windows防火墙设置,vmware的网络设置等一系列之后发现是ubuntu自身问题 | sudo service network-manager stop; sudo rm /var/lib/NetworkManager/NetworkManager.state; sudo service network-manager start; sudo vim /etc/NetworkManager/NetworkManager.conf; sudo service network-manager restart |
| 超算环境问题 | ||
| gui卡死 | ps -ef / grep session 找到 xfce-session的pid之后,kill该进程,即重启了gui,当然所有的进程也都杀死了 | |
int NEDResourceCache::doLoadNedSourceFolder(const char *foldername, const char *expectedPackage)
{
PushDir pushDir(foldername);
int count = 0;
int numFiles = 13;
std::string filelist[13]{"EtherAppCli.ned", "EtherBus.ned", "EtherHost.ned", "EtherLLC.ned", "EtherSwitch.ned", "MACRelayUnit.ned",
"MACRelayUnitPP.ned", "EtherAppSrv.ned", "EtherEncap.ned", "EtherHub.ned", "EtherMAC.ned", "LargeNet.ned", "MACRelayUnitNP.ned"};
const char *filename;
for (int i = 0; i < numFiles; i++)
{
filename = filelist[i].c_str();
if (filename[0] == '.')
{
continue; // ignore ".", "..", and dotfiles
}
else if (opp_stringendswith(filename, ".ned"))
{
doLoadNedFileOrText(filename, NULL, expectedPackage, false);
count++;
}
}
return count;
}
推荐
This bug list is the root cause of all my bitterness,wishing you guys do not suffer any more.
