Intel 14代罪大恶极

Author Avatar
Kanglai Qian 12月 01, 2024

前两天有台新打包机cook的时候疯狂闪退: 一开始以为是并行跑的job负载太高了,就去掉了并行job的部分; 改完发现负载跑不满了,依然高频闪退、且每次对应的资产还不一致,就重拉了一份SVN确认环境干净; 依然是2min左右闪退…
和鸟哥查到一两点,整的怀疑人生了orz

高频复现下可以比较轻松的抓到dump,看了下都是在压缩部分挂掉了…
看了下具体闪退的地方,也没看出啥错误的地方;考虑到zstd毕竟是使用的比较广的库,这么久没人发现的概率也不高。

继续用winbdg分析下dump堆栈,越发怀疑人生

  1. 出错的堆栈是执行的lea指令压根不需要读取内存
  2. 0x7ffc21ef5c5f这个地址也是完全合法的,PAGE_EXECUTE_READ也没被人篡改过
  3. 突然发现exception信息里的0x7ffc77ef5c5f确实是个非法地址

但是为毛CPU突然去访问0x7ffc77ef5c5f呢???而且说实话我一开始还没发现这是两个地址,因为看头7ffc看尾5c5f都是一样的来着,要不是楚东提醒了一句我压根没注意到这个…

突然灵光一闪,想起鸟哥前面发了任务管理器截图——14900KF!万恶的Intel 14代!
这时想到之前看的Intel Processor Instability Causing Oodle Decompression Failures,只不过他们遇到的是解压、我遇到的是压缩来着…

顺藤摸瓜看了下Intel确认公告Intel论坛吐槽,有种心累不爱的感觉…

最后第二天让QA同学在出问题的机器上跑烤机软件,果然CPU压力一上来就挂了emmm
问了下IT,其实他们已经升级了最新BIOS、把Intel的microcode更新都打进去了,但是官方自己也说本质只是缓解出问题概率——行吧,最后含泪全部换成12代…

毕竟打包时候概率闪退都还好,万一程序运行出奇怪的逻辑、把脏数据cook出来才更是要人老命了…