Description

1. Download the Licensee repro, compile, and open:
https://udn.unrealengine.com/s/contentdocument/069QP00000CdN7WYAV
2. Press the first hatched button on the top bar, next to the Platforms dropdown. Its tooltip is "Execute First Plugin Action"
3. Select any static mesh, for example /Engine/Content/BasicShapes/Cube
4. Observe that the first CRC checksum printed in the log is different from the rest.

 

Steps to Reproduce

CRC Checksums of UStaticMesh Objects are non-deterministic. An uninitialized variable is written into them, resulting in successive checksum calls potentially resulting in different values.

This behavior comes from the function "UStaticMesh::Serialize(...)", and the code:
```
// TODO: These should be gated with a version check, but not able to be done in this stream.
FString Deprecated_HighResSourceMeshName;
uint32 Deprecated_HighResSourceMeshCRC;

Ar << Deprecated_HighResSourceMeshName;
Ar << Deprecated_HighResSourceMeshCRC;
```
The variable "Deprecated_HighResSourceMeshCRC" should be initialized, because it can write garbage, non-deterministic data into the archive.

Also found in UE5-Main, CL: 34719970

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-219367 in the post.

0
Login to Vote

Fixed
ComponentUE - Foundation
Affects Versions5.45.4.2
Target Fix5.5
Fix Commit34903378
CreatedJul 15, 2024
ResolvedJul 18, 2024
UpdatedOct 28, 2024
View Jira Issue