Crash occurs in FGPUBaseSkinVertexFactory::FShaderDataType::UpdateBoneData() on RenderThread2 at the following line:
check(NumBones <= MaxGPUSkinBones);
The problem seems to be a race condition on the return value from BoneMap.Num() which is assigned to NumBones.
If is replaced with a wait loop such as
while(NumBones > MaxGPUSkinBones)
{ FPlatformProcess::Sleep(0.5f); NumBones = BoneMap.Num(); }The value will eventually become correct and proceed as expected, demonstrating that BoneMap.Num() is may not be valid at the start of the function, but will become valid at some point.
The repro steps are unclear, but addressing the thread safety of the BoneMap should be sufficient to resolve the issue.
This event repros for the original reporter "50% of the time on PSVR" [but not on PC].
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-34421 in the post.
0 |
Component | UE - Graphics Features |
---|---|
Affects Versions | 4.11.2 |
Target Fix | 4.14 |
Created | Aug 9, 2016 |
---|---|
Resolved | Aug 11, 2016 |
Updated | May 11, 2018 |