V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
CatCode
V2EX  ›  AMD

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

  •  
  •   CatCode · 2022-03-17 11:17:54 +08:00 · 1412 次点击
    这是一个创建于 770 天前的主题,其中的信息可能已经有所发展或是发生改变。

    其实和 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 版本

    6 条回复    2022-03-17 13:56:01 +08:00
    chniccs
        1
    chniccs  
       2022-03-17 11:25:01 +08:00
    我碰到这问题估计不会想到什么新闻,只能 WC 然后关 ide->关机
    xiaowei0823
        2
    xiaowei0823  
       2022-03-17 11:36:19 +08:00 via iPhone
    正在用 5600X ,内存超频使用 + 机器低负载的时候会随机重启,累了
    EPr2hh6LADQWqRVH
        3
    EPr2hh6LADQWqRVH  
       2022-03-17 11:46:10 +08:00
    要不然? 为啥 ECC 内存要加钱?
    Symo
        4
    Symo  
       2022-03-17 11:46:28 +08:00   ❤️ 1
    @xiaowei0823 应该是开了 PBO2 吧, 防掉压开高点. 低负载的时候 cpu 电压太低会死机
    xiaowei0823
        5
    xiaowei0823  
       2022-03-17 11:49:12 +08:00 via iPhone
    @Symo 全默认只开了 XMP
    CatCode
        6
    CatCode  
    OP
       2022-03-17 13:56:01 +08:00
    @avastms AMD 消费级板 U 可以插 ECC 内存但是不支持 ECC 特性吧 我记得主板说明书里面是这么写的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5159 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 05:41 · PVG 13:41 · LAX 22:41 · JFK 01:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.