During async loading from an AsyncLoading thread, DecalComponent attempts to precache PSOs which can trigger a checkf in StrongObjectPtr.h which are only allowed to be created on a game thread.
No confirmed repro steps exist, but most likely this requires loading a level with numerous decals in a game client with PSO Precaching and async loading enabled. It may also require spawning decals at runtime.
[Inline Frame] Game3.exe!UEStrongObjectPtr_Private::TInternalReferenceCollector<UEStrongObjectPtr_Private::FInternalReferenceCollectorReferencerNameProvider>::{ctor}(const UObject *) Line 27 C++ [Inline Frame] Game3.exe!MakeUnique(UMaterialInterface * &) Line 788 C++ [Inline Frame] Game3.exe!TStrongObjectPtr<UMaterialInterface,UEStrongObjectPtr_Private::FInternalReferenceCollectorReferencerNameProvider>::Reset(UMaterialInterface * InNewObject) Line 165 C++ [Inline Frame] Game3.exe!TStrongObjectPtr<UMaterialInterface,UEStrongObjectPtr_Private::FInternalReferenceCollectorReferencerNameProvider>::{ctor}(UMaterialInterface *) Line 89 C++ > Game3.exe!FMaterialPSORequestManager::PrecachePSOs(const FMaterialPSOPrecacheParams & Params, EPSOPrecachePriority Priority, TArray<TRefCountPtr<FGraphEvent>,TSizedInlineAllocator<4,32,TSizedDefaultAllocator<32>>> & OutGraphEvents) Line 246 C++ Game3.exe!FMaterial::CollectPSOs(ERHIFeatureLevel::Type InFeatureLevel, const TArray<FPSOPrecacheVertexFactoryData,TSizedInlineAllocator<2,32,TSizedDefaultAllocator<32>>> & VertexFactoryDataList, const FPSOPrecacheParams & PreCacheParams, EPSOPrecachePriority Priority, TArray<unsigned int,TSizedDefaultAllocator<32>> & OutMaterialPSORequestIDs) Line 3155 C++ Game3.exe!UMaterial::PrecachePSOs(const TArray<FPSOPrecacheVertexFactoryData,TSizedInlineAllocator<2,32,TSizedDefaultAllocator<32>>> & VertexFactoryDataList, const FPSOPrecacheParams & InPreCacheParams, EPSOPrecachePriority Priority, TArray<unsigned int,TSizedDefaultAllocator<32>> & OutMaterialPSORequestIDs) Line 2676 C++ Game3.exe!UMaterialInstance::PrecachePSOs(const TArray<FPSOPrecacheVertexFactoryData,TSizedInlineAllocator<2,32,TSizedDefaultAllocator<32>>> & VertexFactoryDataList, const FPSOPrecacheParams & InPreCacheParams, EPSOPrecachePriority Priority, TArray<unsigned int,TSizedDefaultAllocator<32>> & OutMaterialPSORequestIDs) Line 2534 C++ Game3.exe!UDecalComponent::PrecachePSOs() Line 335 C++ Game3.exe!UObject::ConditionalPostLoad() Line 1309 C++ Game3.exe!FAsyncPackage::PostLoadObjects() Line 6953 C++ [Inline Frame] Game3.exe!FCpuProfilerTrace::FEventScope::{ctor}(unsigned int & InChannel, const char *) Line 139 C++ Game3.exe!FAsyncPackage::TickAsyncPackage(bool InbUseTimeLimit, bool InbUseFullTimeLimit, float & InOutTimeLimit) Line 6071 C++ Game3.exe!FAsyncLoadingThread::ProcessAsyncLoading(int & OutPackagesProcessed, bool bUseTimeLimit, bool bUseFullTimeLimit, float TimeLimit, FFlushRequest & FlushRequest) Line 4422 C++ Game3.exe!FAsyncLoadingThread::TickAsyncThread(bool bUseTimeLimit, bool bUseFullTimeLimit, double TimeLimit, bool & bDidSomething, FFlushRequest & FlushRequest) Line 5300 C++ Game3.exe!FAsyncLoadingThread::Run() Line 5225 C++ Game3.exe!FRunnableThreadWin::Run() Line 149 C++ Game3.exe!FRunnableThreadWin::GuardedRun() Line 71 C++
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-222366 in the post.
0 |
Component | UE - Rendering Architecture - Shaders |
---|---|
Affects Versions | 5.4.3 |
Target Fix | 5.5 |
Created | Aug 21, 2024 |
---|---|
Resolved | Sep 24, 2024 |
Updated | Oct 22, 2024 |