How to get deterministic packages for map assets?

Our game is live, and we are shipping updates that are big because packaging two times in a row with the same data, produces lots of files with differences. We have solved most asset cases, including the one in UE-45856 . The only files that now have differences are level files, both umap and uexp files.

The breakpoints in the serialisation of the different bytes always point at FName serialisation. Those get a “Linker-relative” index and they seem to change in a non-deterministic way. We are using 4.16 with some backports from newer versions. Is this an known issue? Has it been fixed in newer versions?

The call stack when writing the problematic bytes often looks like this:

>	UE4Editor-Core.dll!FLargeMemoryWriter::Serialize(void * InData, __int64 Num) Line 41	C++
 	[Inline Frame] UE4Editor-CoreUObject.dll!FArchive::ByteOrderSerialize(void *) Line 761	C++
 	[Inline Frame] UE4Editor-CoreUObject.dll!operator<<(FArchive &) Line 473	C++
 	UE4Editor-CoreUObject.dll!FLinkerSave::operator<<(FName & InName) Line 252	C++
 	UE4Editor-CoreUObject.dll!operator<<(FArchive & Ar, FPropertyTag & Tag) Line 96	C++
 	UE4Editor-CoreUObject.dll!UStruct::SerializeTaggedProperties(FArchive & Ar, unsigned char * Data, UStruct * DefaultsStruct, unsigned char * Defaults, const UObject * BreakRecursionIfFullyLoad) Line 1142	C++
 	UE4Editor-CoreUObject.dll!UObject::SerializeScriptProperties(FArchive & Ar) Line 1245	C++
 	UE4Editor-CoreUObject.dll!UObject::Serialize(FArchive & Ar) Line 1179	C++
 	UE4Editor-Engine.dll!UActorComponent::Serialize(FArchive & Ar) Line 1768	C++
 	UE4Editor-Engine.dll!USceneComponent::Serialize(FArchive & Ar) Line 2253	C++
 	UE4Editor-Engine.dll!UPrimitiveComponent::Serialize(FArchive & Ar) Line 826	C++

Any help will be appreciated.

j.