The Vector VM has only every supported a byte's worth of external function calls, when we blew the limit it would index into the incorrect VM call.
The new VM will also overwrite memory when exceeding 255 external function calls due this indexing OOB.
ExecCtx->VVMState->ConstantBuffers[i].i = VectorIntSet1(((uint32 *)ExecCtx->ConstantTableData[ExecCtx->VVMState->ConstMapCacheIdx[i]])[ExecCtx->VVMState->ConstMapCacheSrc[i]]);
The licensee reported that these parts mismatch...
size_t ExtFnTableNumBytes = VVM_PTR_ALIGN(sizeof(FVectorVMExtFunctionData) * (RuntimeContext.MaxExtFnUsed + 1)); lineOptContext->ExtFnTable = (FVectorVMExtFunctionData *)OptContext->Init.ReallocFn(nullptr, sizeof(FVectorVMExtFunctionData) * NumExtFns, __FILE__, __LINE__);
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-313139 in the post.
0 |
Component | UE - Niagara |
---|---|
Target Fix | 5.7 |
Fix Commit | 44864395 |
---|
Created | Aug 12, 2025 |
---|---|
Resolved | Aug 14, 2025 |
Updated | Aug 15, 2025 |