This issue may be badly implemented, but the reference to the VTable may be incorrect during a hot reload. Crash always in sample project.
Summary:
Log:
The last output log causes a crash.
UE_CLOG (GIsRetrievingVTablePtr, LogCore, Fatal, TEXT ("We are currently retrieving VTable ptr. Please use FVTableHelper constructor instead."));
Workaround:
Crash when hot reloading with LiveCoding enabled. Using the previous hotreload only crashes.
Result:
Crash in editor.
Expect:
Not occur crash.
Fatal error: [File:G:/UnrealEngine-4.24/Engine/Source/Runtime/CoreUObject/Private/UObject/Obj.cpp] [Line: 101] We are currently retrieving VTable ptr. Please use FVTableHelper constructor instead. UObject::EnsureNotRetrievingVTablePtr::__l14::<lambda_18c0f8e221f431bccbcb63e93c98cc1d>::operator()() Line 101 C++ UObject::EnsureNotRetrievingVTablePtr() Line 101 C++ UObject::UObject(const FObjectInitializer & ObjectInitializer) Line 2528 C++ UField::{ctor}(const FObjectInitializer &) Line 63 C++ UStruct::{ctor}(const FObjectInitializer &) Line 593 C++ UFunction::UFunction(const FObjectInitializer & ObjectInitializer, UFunction * InSuperFunction, EFunctionFlags InFunctionFlags, unsigned __int64 ParamsSize) Line 4814 C++ UDelegateFunction::UDelegateFunction(const FObjectInitializer & ObjectInitializer, UFunction * InSuperFunction, EFunctionFlags InFunctionFlags, unsigned __int64 ParamsSize) Line 5303 C++ UE4CodeGen_Private::ConstructUFunction(UFunction * & OutFunction, const UE4CodeGen_Private::FFunctionParams & Params) Line 4384 C++ Z_Construct_UDelegateFunction_ConstructorTest_TestDelegate__DelegateSignature() Line 53 C++ UE4CodeGen_Private::ConstructUPackage(UPackage * & OutPackage, const UE4CodeGen_Private::FPackageParams & Params) Line 4508 C++ Z_Construct_UPackage__Script_ConstructorTest() Line 34 C++ FTestRow::StaticStruct() Line 96 C++ UDataTable::ForeachRow<FTestRow>(const wchar_t * ContextString, TFunctionRef<void __cdecl(FName const &,FTestRow const &)> Predicate) Line 245 C++ UDataTable::ForeachRow(const FString &) Line 262 C++ FTestStruct::LoadTable() Line 19 C++ FTestStruct::FTestStruct() Line 8 C++ ATestActor::ATestActor(FVTableHelper & Helper) Line 80 C++ UClass::HotReloadPrivateStaticClass(unsigned int InSize, EClassFlags InClassFlags, EClassCastFlags InClassCastFlags, const wchar_t * InConfigName, void(*)(const FObjectInitializer &) InClassConstructor, UObject *(*)(FVTableHelper &) InClassVTableHelperCtorCaller, void(*)(UObject *, FReferenceCollector &) InClassAddReferencedObjects, UClass * TClass_Super_StaticClass, UClass * TClass_WithinClass_StaticClass) Line 4335 C++ GetPrivateStaticClassBody(const wchar_t * PackageName, const wchar_t * Name, UClass * & ReturnClass, void(*)() RegisterNativeFunc, unsigned int InSize, unsigned int InAlignment, EClassFlags InClassFlags, EClassCastFlags InClassCastFlags, const wchar_t * InConfigName, void(*)(const FObjectInitializer &) InClassConstructor, UObject *(*)(FVTableHelper &) InClassVTableHelperCtorCaller, void(*)(UObject *, FReferenceCollector &) InClassAddReferencedObjects, UClass *(*)() InSuperClassFn, UClass *(*)() InWithinClassFn, bool bIsDynamic, void(*)(UDynamicClass *) InDynamicClassInitializerFn) Line 4727 C++ ATestActor::GetPrivateStaticClass() Line 74 C++ ATestActor::StaticClass() Line 14 C++ TClassCompiledInDefer<ATestActor>::Register() Line 336 C++ UClassRegisterAllCompiledInClasses() Line 827 C++ ProcessNewlyLoadedUObjects(FName Package, bool bCanProcessNewlyLoadedObjects) Line 1011 C++ UE4Tuple_Private::TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter(void(*)(FName, bool) &) Line 285 C++ TBaseStaticDelegateInstance<TTypeWrapper<void> __cdecl(FName,bool)>::Execute(FName) Line 801 C++ TBaseStaticDelegateInstance<void __cdecl(FName,bool)>::ExecuteIfSafe(FName <Params_0>, bool <Params_1>) Line 854 C++ TBaseMulticastDelegate<void,FName,bool>::Broadcast(FName <Params_0>, bool <Params_1>) Line 1013 C++ FModuleManager::LoadModuleWithFailureReason(const FName InModuleName, EModuleLoadResult & OutFailureReason) Line 493 C++ FModuleManager::LoadModule(const FName InModuleName) Line 326 C++ FHotReloadModule::DoHotReloadInternal(const TMap<FName,FString,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FString,0> > & ChangedModules, const TArray<UPackage *,TSizedDefaultAllocator<32> > & Packages, const TArray<FName,TSizedDefaultAllocator<32> > & InDependentModules, FOutputDevice & HotReloadAr) Line 799 C++ FHotReloadModule::RebindPackagesInternal::__l2::<lambda_f06df2a1cf09763b899653811cdb8315>::operator()(const TMap<FName,FString,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FString,0> > &) Line 1161 C++ Invoke(FHotReloadModule::RebindPackagesInternal::__l2::<lambda_f06df2a1cf09763b899653811cdb8315> &) Line 45 C++ UE4Function_Private::TFunctionRefCaller<<lambda_f06df2a1cf09763b899653811cdb8315>,void __cdecl(TMap<FName,FString,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FString,0> > const &,bool,enum ECompilationResult::Type)>::Call(void * Obj, const TMap<FName,FString,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FString,0> > & <Params_0>, bool & <Params_1>, ECompilationResult::Type & <Params_2>) Line 549 C++ UE4Function_Private::TFunctionRefBase<UE4Function_Private::TFunctionStorage<0>,void __cdecl(TMap<FName,FString,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FString,0> > const &,bool,enum ECompilationResult::Type)>::operator()(const TMap<FName,FString,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FString,0> > & <Params_1>, bool <Params_2>, ECompilationResult::Type) Line 676 C++ FHotReloadModule::CheckForFinishedModuleDLLCompile(EHotReloadFlags Flags, bool & bCompileStillInProgress, bool & bCompileSucceeded, FOutputDevice & Ar, bool bFireEvents) Line 1868 C++ FHotReloadModule::Tick(float DeltaTime) Line 1427 C++ TBaseDelegate<bool,float>::Execute(float) Line 586 C++ FTicker::FElement::Fire(float) Line 127 C++ FTicker::Tick(float DeltaTime) Line 95 C++ FEngineLoop::Tick() Line 4686 C++ EngineTick() Line 62 C++ GuardedMain(const wchar_t * CmdLine, HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, int nCmdShow) Line 173 C++ WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow) Line 252 C++ [External Code]
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-91026 in the post.
0 |
Component | UE - Foundation - Core |
---|---|
Affects Versions | 4.24, 4.25 |
Created | Mar 23, 2020 |
---|---|
Resolved | Mar 25, 2020 |
Updated | Jun 24, 2020 |