Had this error occur, just trying to open one of our CustomizableObjects. It also happened in game when it was trying to use the same CustomizableObject.
I did some debugging around mu::FModelReader::FOperationID FUnrealMutableModelBulkReader::BeginReadBlock
Block->FileId is 3, but PinnedModelStreamableBulkData->DDCValues is an empty array.
There seems to be invalid data stored in the DDC, which shouldn’t happen. Please add a breakpoint here and check if the DDCValues array is empty after loading it from the DDC.
// CustomizableObjectCompiler.cpp line 1429
PlatformData->ModelStreamableBulkData = LoadModelStreamableBulk_Internal(ModelStreamablesReader);
PlatformData->ModelStreamableBulkData->bIsStoredInDDC = true;
If it’s empty on load, please try check if the data uploaded to the DDC is valid. To do so, you’ll need to follow these steps.
Turn off Mutable via CVar with ‘Mutable.enabled false’ and then open the conflictive CO.
Move a node to mark the CO dirty and save it.
Add a breakpoint where the DDCValues is populated (CustomizableObjectCompileRunnable.cpp line 489 and 495), and re-enable Mutable with ‘Mutable.enabled true’.
The DDCValues array is empty after loading it from the DDC.
When I reenable “Mutable.enabled true”, I do hit those breakpoints, but it immediately is followed by the same error I got before with DDCValues being empty and Block->FileId being 3.
Why might recompiling the CO result in DDCValues being empty?
That might happen if the CO doesn’t have resources to stream because they’re small and can be kept in memory, but in that case the code that crashes would not be executed.
Can you retry those steps again, and at the second breakpoint, check the values of these variables?
PlatformData->ModelStreamableData->Data. It must have entries.
BulkDataFilesDDC. It must have more than three entries.
If that is correct, this code should be called BulkDataFilesDDC.Num() times.