背景

故事是这样的,有一个交互游戏项目原本已经在某个地方上线过了。后来改到另外一个地方,(有一定变化),但是崩溃的部分是没有什么更改的。每天频繁崩溃、卡死,写程序的人员都找不出原因。然后,我又被迫被叫去查找这种问题。

他们一开始发给我的日志看到了 oodle 解压错误,我一开始叫他们检查资产完整性,考虑可能是拷贝出现问题,甚至可能是硬盘问题。

硬件问题

造成崩溃的原因是由硬件硬件引起的,主要功率和倍频共同导致的。

  • 主要受到影响的硬件:Intel 13900K 和 14900K
    • 不太可能(less like)是 13700、14700 和其它 CPU 引起

Oodle Data 解压缩的时候,问题就非常明显,因为与大多数游戏、模拟、音频或渲染代码不一样,解压缩需要执行额外的完整性检查来处理意外或恶意损坏的数据,因此很可能在不一致后检查发现问题。解码失败通常会导致错误消息。

(可能)的原因:

  • 时序失配:频率太高可能导致信号传输时序不匹配。这可能使指令或数据无法在正确的时间到达正确的位置,从而引发错误。
  • 电压不稳定:超频通常需要提高 CPU 电压,但如果电压不稳定或不足,可能导致晶体管无法正确切换,进而引发指令错误。
  • 热量问题:更高的频率会产生更多热量。过高的温度可能导致晶体管性能下降,影响指令的正确执行。
  • 高频率下,数据在缓存和寄存器之间传输可能出现错误,影响指令的正确执行。

错误日志

(和这个问题明确相关的现场日志)

1
2
3
4
5
6
7
8
9
10
11
[2024.07.11-10.46.34:666][325]OodleDataCompression: Display: Oodle: OODLE ERROR : LZ corruption : DecodeOneQuantum fail!

[2024.07.11-10.46.34:666][325]OodleDataCompression: Display: Oodle: OODLE ERROR : LZ corruption : OodleLZ_Decompress failed (0 != 65536)

[2024.07.11-10.46.34:666][325]LogCompression: Error: FCompression::UncompressMemory - Failed to uncompress memory (39086/65536) from address 0000012DF8BD1EF0 using format Oodle, this may indicate the asset is corrupt!
[2024.07.11-10.46.34:666][325]LogIoDispatcher: Warning: Failed decompressing block
[2024.07.11-10.46.34:666][325]LogStreaming: Warning: StartBundleIoRequests: FailedRead: None (0xFA858880C4C1A011) None (0xFA858880C4C1A011) - Failed reading chunk for package: (Read Error)
[2024.07.11-10.46.34:773][325]LogWindows: Error: appError called: Assertion failed: (Index >= 0) & (Index < ArrayNum) [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Containers\ArrayView.h] [Line: 293]
Array index out of bounds: 587206400 from an array of size 4

[2024.07.11-10.46.34:773][325]LogWindows: Windows GetLastError: 操作成功完成。 (0)

还有 Shader 错误

1
Missing global shader FDiaphragmDOFReduceCS's permutation 1,

CPU 问题显示出的虚假显存不足:

实际上是由 CPU 导致的

解决方法

  • 最直接的方法是使用 Intel XTU,将倍率从 55x 降低到 54x 或者 53x。
  • BIOS 上降频
  • 换个 CPU

后续

时间线

2023 年中期

  • 用户反馈:初期用户在论坛反映,高端 CPU 在游戏时需降频才可避免崩溃。

2024 年

  • 2 月 21 日:虚幻 5 引擎游戏上市引发更多崩溃报告,Oodle 确认与 13900K 和 14900K 有关,科技媒体开始关注。

  • 2 月 27 日:Intel 员工 Thomas Hannaford 确认问题存在,呼吁用户寻求帮助。

  • 3 月 25 日:CSGO2 比赛谣言澄清,问题非由 Intel CPU 直接引起。

  • 4 月 3 日:NVIDIA 发布驱动更新,明确问题源于 Intel CPU 不稳定。

  • 4 月 6 日:韩国与国际媒体持续报道,问题仍未解决。

  • 4 月 20 日:华硕更新 BIOS 加入 Intel Baseline Profile,限制 CPU 功耗。

  • 4 月 22 日:性能损失 8-10%的报道。

  • 4 月 27 日:Intel 要求主板厂商更新 BIOS 至基准设定。

  • 5 月 6 日:Intel 默认设定进一步限缩功耗,性能损失加剧。

  • 5 月 21 日:地狱之刃 2 发布,Steam 社区再次出现大量崩溃报告。

  • 6 月 14 日:Intel 归咎微码问题,推荐用户更新至 0x125 微码。

  • 6 月 18 日:Intel 发布默认设定的功耗墙详情。

  • 6 月 19 日:Intel 否认微码是根本解决方案。

  • 7 月 9 日:Warframe 官方统计 Intel 带 K CPU 占驱动错误的 90%以上。

  • 7 月 11 日:Level1Techs 报道数据中心及游戏企业中 Intel CPU 的崩溃现象。

  • 7 月 14 日:Alderion Games 指控 Intel 销售有缺陷的 CPU。

  • 7 月 15 日:Fortnite 官方声明 Intel 带 K 900 系列处理器游戏崩溃。

  • 7 月 16 日:nga 论坛开发人员反映 13900K 大规模故障。

  • 7 月 20 日:Gamers Nexus 跟进,某大客户报告 11 款 CPU 中高达 25% 的故障率。

Intel 确认问题

Based on extensive analysis of Intel Core 13th/14th Gen desktop processors returned to us due to instability issues, we have determined that elevated operating voltage is causing instability issues in some 13th/14th Gen desktop processors. Our analysis of returned processors confirms that the elevated operating voltage is stemming from a microcode algorithm resulting in incorrect voltage requests to the processor.
Intel is delivering a microcode patch which addresses the root cause of exposure to elevated voltages. We are continuing validation to ensure that scenarios of instability reported to Intel regarding its Core 13th/14th Gen desktop processors are addressed. Intel is currently targeting mid-August for patch release to partners following full validation.
Intel is committed to making this right with our customers, and we continue asking any customers currently experiencing instability issues on their Intel Core 13th/14th Gen desktop processors reach out to Intel Customer Support for further assistance.

根据我们对因不稳定问题而退回的英特尔第 13/14 代台式机处理器进行的广泛分析,我们确定了部分 13 代/14 代台式机处理器出现不稳定问题是由于运行电压升高造成的。我们对退回处理器的分析证实,运行电压升高是源于一个微码算法,该算法导致向处理器发出不正确的电压请求。

英特尔正在提供一个微码补丁,以解决导致电压升高的根本原因。我们正在继续进行验证,以确保解决了报告给英特尔的关于其第 13/14 代台式机处理器不稳定的各种情况。英特尔目前计划在完成全面验证后,于 8 月中旬向合作伙伴发布补丁。

英特尔致力于为我们的客户纠正这一问题,我们继续呼吁目前在使用英特尔第 13/14 代台式机处理器时遇到不稳定问题的任何客户,请联系英特尔客户支持以获得进一步的帮助。

参考

  1. [PC] How to Resolve Data Corruption Errors
  2. Intel Processor Instability Causing Oodle Decompression Failures
  3. 英特尔 13/14 代 CPU 崩溃事件时间线
  4. July 2024 Update on Instability Reports on Intel Core 13th and 14th Gen Desktop Processors