Intel 14代罪大恶极
前两天有台新打包机cook的时候疯狂闪退: 一开始以为是并行跑的job负载太高了,就去掉了并行job的部分; 改完发现负载跑不满了,依然高频闪退、且每次对应的资产还不一致,就重拉了一份SVN确认环境干净; 依然是2min左右闪退…
和鸟哥查到一两点,整的怀疑人生了orz
高频复现下可以比较轻松的抓到dump,看了下都是在压缩部分挂掉了…
看了下具体闪退的地方,也没看出啥错误的地方;考虑到zstd毕竟是使用的比较广的库,这么久没人发现的概率也不高。
继续用winbdg分析下dump堆栈,越发怀疑人生
- 出错的堆栈是执行的
lea
指令压根不需要读取内存 0x7ffc21ef5c5f
这个地址也是完全合法的,PAGE_EXECUTE_READ
也没被人篡改过- 突然发现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出来才更是要人老命了…