[图一乐] 我竟然遇到了连 Rust 都无法解决的内存错误

2022-03-17 11:17:54 +08:00
 CatCode

其实和 Rust 的关系不太大,大家就看个乐呵。


昨天花了一天,测试自己写的一个小工具,语言是 Rust
由于输入的数据是没变的,也没有引入随机数,所以每次运行的结果都应该是一样的。

但是,我反复运行,将输出的结果保存,再进行比较:结果总是随机出现不一致的情况,而且出现的位置也不一样。 而且只有在数据量足够巨大的情况下才出现,我难以调试。

刚开始以为是依赖的某个第三方库实现得有问题,换了 C 绑定版本的库,“随机出现不一致”依旧。( C 绑定的那个库对应的 C 代码在许多别的软件中也有用到,这个实现应该不会有问题)

然后我又怀疑到是不是自己多线程部分写得有问题,结果用单线程龟速跑了好几次还是有同样的问题。而且查来查去,这么简单的一个多线程操作,怎么会写错呢?

最后的最后,想起了一个新闻“AMD AGESA 1.2.0.5 BIOS 或会造成性能损失,系统稳定性也会变得更差” (传送门),又想到刚升这个 BIOS 的时候,AIDA64 的压力测试直接 Error 了。

赶紧进 BIOS ,关掉了内存 XMP ,内存降频到了 2166MHz 。重启,进系统,重新跑,问题解决,所有结果完全一致!

于是,下载了 AGESA 1.2.0.3 ,降级重刷了 BIOS ,开启 XMP ,内存拉到 3200MHz 。进系统,重新跑,结果依然一致,没有问题。


结论: 要想测试软件是否有内存问题,首先要保证硬件没有内存问题

各位用 AMD 的群友,可以检查一下自己的 BIOS 版本

1708 次点击
所在节点    AMD
6 条回复
chniccs
2022-03-17 11:25:01 +08:00
我碰到这问题估计不会想到什么新闻,只能 WC 然后关 ide->关机
xiaowei0823
2022-03-17 11:36:19 +08:00
正在用 5600X ,内存超频使用 + 机器低负载的时候会随机重启,累了
EPr2hh6LADQWqRVH
2022-03-17 11:46:10 +08:00
要不然? 为啥 ECC 内存要加钱?
Symo
2022-03-17 11:46:28 +08:00
@xiaowei0823 应该是开了 PBO2 吧, 防掉压开高点. 低负载的时候 cpu 电压太低会死机
xiaowei0823
2022-03-17 11:49:12 +08:00
@Symo 全默认只开了 XMP
CatCode
2022-03-17 13:56:01 +08:00
@avastms AMD 消费级板 U 可以插 ECC 内存但是不支持 ECC 特性吧 我记得主板说明书里面是这么写的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/840967

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX