The game crashes because of a nullptr SkinnedMeshComponent in FSkeletalMeshObjectGPUSkin::GetUsedVertexFactoryData when r.PSOPrecache.Resources is enabled and a skeletal mesh is loaded due to a new check() added to FSkeletalMeshObjectGPUSkin::GetUsedVertexFactoryData in CL 36036396. USkinnedAsset::PostLoad() calls GetVertexFactoryTypesPerMaterialIndex() with a nullptr SkinnedMeshComponent . This crash didn't occur in 5.4.
Expected
Game doesn't crash
Actual
Game crashes at newly added check() in FSkeletalMeshObjectGPUSkin::GetUsedVertexFactoryData added in CL 36036396
Game.exe!FSkeletalMeshObjectGPUSkin::GetUsedVertexFactoryData(FSkeletalMeshRenderData * SkelMeshRenderData, int LODIndex, USkinnedMeshComponent * SkinnedMeshComponent, FSkelMeshRenderSection & RenderSection, ERHIFeatureLevel::Type InFeatureLevel, bool bHasMorphTargets, TArray<FPSOPrecacheVertexFactoryData,TSizedInlineAllocator<2,32,TSizedDefaultAllocator<32>>> & VertexFactoryDataList) Line 2017 C++
Game.exe!USkinnedAsset::GetVertexFactoryTypesPerMaterialIndex(USkinnedMeshComponent * SkinnedMeshComponent, int MinLODIndex, bool bCPUSkin, ERHIFeatureLevel::Type FeatureLevel) Line 191 C++
Game.exe!USkinnedAsset::PostLoad() Line 156 C++
Game.exe!USkeletalMesh::PostLoad() Line 3725 C++
Game.exe!UObject::ConditionalPostLoad() Line 1315 C++
Game.exe!FAsyncPackage2::Event_DeferredPostLoadExportBundle(FAsyncLoadingThreadState2 & ThreadState, FAsyncPackage2 * Package, int InExportBundleIndex) Line 7893 C++
Game.exe!FEventLoadNode2::Execute(FAsyncLoadingThreadState2 & ThreadState) Line 4960 C++
Game.exe!FAsyncLoadEventQueue2::PopAndExecute(FAsyncLoadingThreadState2 & ThreadState) Line 5114 C++
Game.exe!FAsyncLoadingThread2::ProcessLoadedPackagesFromGameThread(FAsyncLoadingThreadState2 & ThreadState, bool & bDidSomething, TArrayView<int const ,int> FlushRequestIDs) Line 8175 C++
Game.exe!FAsyncLoadingThread2::TickAsyncLoadingFromGameThread(FAsyncLoadingThreadState2 & ThreadState, bool bUseTimeLimit, bool bUseFullTimeLimit, double TimeLimit, TArrayView<int const ,int> FlushRequestIDs, bool & bDidSomething) Line 8434 C++
Game.exe!FAsyncLoadingThread2::FlushLoading(TArrayView<int const ,int> RequestIDs) Line 9917 C++
Game.exe!FlushAsyncLoading(TArrayView<int const ,int> RequestIds) Line 329 C++
Game.exe!FlushAsyncLoading(int RequestId) Line 296 C++
Game.exe!UEngine::LoadMap(FWorldContext & WorldContext, FURL URL, UPendingNetGame * Pending, FString & Error) Line 15528 C++
Game.exe!UEngine::Browse(FWorldContext & WorldContext, FURL URL, FString & Error) Line 15154 C++
Game.exe!UGameInstance::StartGameInstance() Line 684 C++
Game.exe!UHopperGameInstance::StartGameInstance() Line 1420 C++
Game.exe!UGameEngine::Start() Line 1224 C++
Game.exe!FEngineLoop::Init() Line 4907 C++
[Inline Frame] Game.exe!EngineInit() Line 59 C++
Game.exe!GuardedMain(const wchar_t * CmdLine) Line 172 C++
Game.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 266 C++
Game.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 318 C++
[Inline Frame] Game.exe!invoke_main() Line 102 C++
Game.exe!__scrt_common_main_seh() Line 288 C++
kernel32.dll!BaseThreadInitThunk() Unknown
ntdll.dll!RtlUserThreadStart() Unknown
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-232013 in the post.
0 |
Component | UE - Rendering Architecture |
---|---|
Affects Versions | 5.5.1, 5.5 |
Target Fix | 5.6 |
Created | Dec 3, 2024 |
---|---|
Updated | Dec 4, 2024 |