Steps to Reproduce
It looks like the property bag (or property bags) can contain duplicate IDs with different names, value types, etc. because no copy constructor is defined that prevents copying of the ID. Inserting the following code near the bottom of UPropertyBag::GetOrCreateFromDescs (I put it just above the [Content removed] it seems like IDs are intended to be unique.
We’ve are trying to add a copy constructor and copy assignment operator that set the ID to 0, but that will not fix up existing incorrectly serialized bags. I’m also not confident it is the right attempted fix.
for (int32 DescIndex = NewBag->PropertyDescs.Num() - 1; DescIndex >= 0; DescIndex--) { for (int32 iDesc = NewBag->PropertyDescs.Num() - 1; iDesc > DescIndex; iDesc--) { if (NewBag->PropertyDescs[DescIndex].ID == NewBag->PropertyDescs[iDesc].ID) { UE_LOG(LogCore, Error, TEXT("Duplicate id for %s and %s!"), *NewBag->PropertyDescs[DescIndex].Name.ToString(), *NewBag->PropertyDescs[iDesc].Name.ToString()); } } }