"Corrupt pak PrimaryIndex detected!" on some user hardware

Hi there,

one of our games see specific users crashing 100% when opening .pak files (error is “Corrupt pak index detected” on pakchunk8 or pakchunk9).

At first we suspected the Oodle SDK issue with specific intel CPU but even after patching our game with the latest SDK 2.9.14 those players are still unable to launch the game.

Our game is built with several .pak compressed and encrypted using native Crypto plugin. We’re using a classic EncryptionKey + 16 SecondaryEncryptionKeys (1 per .pak) and the following encryption settings :

bEncryptPakIniFiles=True

bEncryptPakIndex=True

bEncryptUAssetFiles=True

bEncryptAllAssetFiles=False

SigningPublicExponent=

SigningModulus=

SigningPrivateExponent=

bEnablePakSigning=False

One of the users sent me his log with LogPakFile to VeryVerbose:

Initializing PakPlatformFile
Reading toc: ../../../[REDACTED]/Content/Paks/global.utoc
Toc loaded : ../../../[REDACTED]/Content/Paks/global.utoc, Id=ffffffffffffffff, Order=0, EntryCount=1, SignatureHash=0000000000000000000000000000000000000000
Mounting container '../../../[REDACTED]/Content/Paks/global.utoc' in location slot 0
Initialized I/O dispatcher file backend. Mounted the global container: ../../../[REDACTED]/Content/Paks/global.utoc
Found Pak file ../../../[REDACTED]/Content/Paks/pakchunk9-Windows.pak attempting to mount.
Mounting pak file ../../../[REDACTED]/Content/Paks/pakchunk9-Windows.pak.
Corrupt pak PrimaryIndex detected!
 Filename: ../../../[REDACTED]/Content/Paks/pakchunk9-Windows.pak
 Encrypted: 1
 Total Size: 3426
 Index Offset: 2949
 Index Size: 144
 Stored Index Hash: DAB033405A0966FE52FECF7C80C80DFE49B05F89
 Computed Index Hash: 85103F26F7B264BEA29CCA5FF7A3B544D75F8621

I’m not sure what could be done on my side to allow those users to play; any hint may be a great help.

Should i just set “bEncryptPakIndex=False” and pray it doesn’t crash later on ? :stuck_out_tongue:

Regards

I went ahead and delivered a build with bEncryptPakIndex=False to one of our user, he’s now able to read 15 .pak but the last one now errors on decompression.

> LogCompression: Error: FCompression::UncompressMemory - Failed to uncompress memory (1520/5845) from address 00000218CD618010 using format Oodle, this may indicate the asset is corrupt!

So this may still be some issue related to Oodle compression.

Hello!

The issue you are referring to is with the CPUs which are broken. The decompression failure is just one of the symptoms for the problem. The SDK 2.9.14 update is detecting the CPUs that are known to potentially be problematic and uses different code paths that do not use the known part of the CPU that break.

Based on recent findings, it appears that the following steps can be used by consumers to validate if their CPU must be replaced:

1. Check BIOS/microcode version — ensure the August 2024 microcode is applied

2. Run CPU stress tests OCCT to detect instability

3. In BIOS, switch to Intel Default Settings / disable any MCE overrides

4. If the CPU is already degraded, the only fix is replacement

Regards,

Martin

Hi Martin,

Thanks a lot for the quick answer; hardware issue was the conclusion i ended to after trying ZLib compression and it ended up with a similar error on the same pak file.

> LogCompression: Warning: appUncompressMemoryZLIB failed: Error: Z_DATA_ERROR, input data was corrupted or incomplete! (incorrect header check)

I’ll give a last try building without compression for users having this issue to see if they can play by trading disk space for stability.

Regards

PS: i’ll be out of office next week

Hello!

You should also make sure that the users are aware they need to replace their CPU. They will keep running into issues otherwise.

Martin

Hi Martin,

a last follow-up on this as i came back to office and tried building with a single uncompressed .pak

It does not fix anything as the game runs out of memory (certainly due to the original CPU issue asking for weird malloc values)

We informed the users, you can now close this support ticket.

Regards