Description

This is a regression that was introduced by the fix for [Link Removed]. As a result, we can potentially hit an assert in a cooked, nativized build during async load of a non-nativized Blueprint CDO that overrides one or more components inherited from a nativized parent class, but only if the async load threading option is enabled.

 

Steps to Reproduce
  1. Open the attached sample project in the editor.
  2. Choose File->Package Project->Windows->Win64 and wait for packaging to finish.
  3. Attempt to launch the packaged EXE. The following assertion will occur:
    [2018.10.25-08.20.15:146][318]LogThreadingWindows: Error: Runnable thread FAsyncLoadingThread crashed.
    [2018.10.25-08.20.15:146][318]LogWindows: Error: === Critical error: ===
    [2018.10.25-08.20.15:146][318]LogWindows: Error: 
    [2018.10.25-08.20.15:146][318]LogWindows: Error: Assertion failed: IsInGameThread() || HasAnyFlags(RF_ClassDefaultObject|RF_ArchetypeObject) || IsPostLoadThreadSafe() || IsA(UClass::StaticClass()) [File:D:\dev\UE4\Dev-Framework\Engine\Source\Runtime\CoreUObject\Private\UObject\Obj.cpp] [Line: 1001] 
    
Callstack

NativizedBP.exe!UObject::ConditionalPostLoad() Line 981 C++
NativizedBP.exe!UBlueprintGeneratedClass::CheckAndApplyComponentTemplateOverrides(UObject * InClassDefaultObject) Line 1183 C++
NativizedBP.exe!UBlueprintGeneratedClass::SerializeDefaultObject(UObject * Object, FArchive & Ar) Line 351 C++
NativizedBP.exe!FAsyncPackage::EventDrivenSerializeExport(int LocalExportIndex) Line 3522 C++
NativizedBP.exe!FAsyncPackage::ProcessImportsAndExports_Event() Line 3850 C++
NativizedBP.exe!FAsyncPackage::Event_ProcessImportsAndExports() Line 2862 C++
NativizedBP.exe!FAsyncLoadingThread::QueueEvent_ProcessImportsAndExports::__l2::<lambda>(FAsyncLoadEventArgs & Args) Line 2644 C++
NativizedBP.exe!FAsyncLoadEventQueue::PopAndExecute(FAsyncLoadEventArgs & Args) Line 103 C++
NativizedBP.exe!FAsyncLoadingThread::ProcessAsyncLoading(int & OutPackagesProcessed, bool bUseTimeLimit, bool bUseFullTimeLimit, float TimeLimit, FFlushTree * FlushTree) Line 4401 C++
NativizedBP.exe!FAsyncLoadingThread::TickAsyncThread(bool bUseTimeLimit, bool bUseFullTimeLimit, float TimeLimit, bool & bDidSomething, FFlushTree * FlushTree) Line 5073 C++
NativizedBP.exe!FAsyncLoadingThread::Run() Line 5005 C++
NativizedBP.exe!FRunnableThreadWin::Run() Line 76 C++
NativizedBP.exe!FRunnableThreadWin::GuardedRun() Line 33 C++
kernel32.dll!00007ff9633f3034() Unknown
ntdll.dll!00007ff965fc1431() Unknown

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-65759 in the post.

1
Login to Vote

Fixed
ComponentUE - Gameplay - Blueprint
Affects Versions4.21
Target Fix4.21
Fix Commit4513722
Main Commit4551290
Release Commit4513722
CreatedOct 25, 2018
ResolvedOct 26, 2018
UpdatedNov 8, 2018