Description

REGRESSION: Can be certain as this testing was blocked by UE-50703

Through a specific chain of events (see repro), it's possible to have a non-actor as the value for an Actor Class Reference, and there is no error indicating that this isn't valid, nor is the field cleared.

Once it's in this state, performing some actions can cause a crash (see callstack).

Steps to Reproduce
  1. Open QAGame in editor.
  2. Open the level blueprint.
  3. Add a variable.
  4. Set the type to Object > Object Reference.
  5. Compile.
  6. Set the Default Value to 256Cube.
  7. Compile again.
  8. Change the variable type to Actor > Soft Object Reference.
  9. Compile. Note there's an error with the Default Value.
  10. Change the Variable Type to Actor > Class Reference.
  11. Compile.

RESULT
Note that 256Cube is accepted as the Default Value with no error. A few actions can result in a crash, such as:

  1. Changing/Clearing Default Value
  2. Changing Variable Type
Callstack
Assertion failed: ObjectA == nullptr || ObjectA->IsA<UClass>() [File:D:\Build\++UE4+Release-4.18+Compile\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\PropertyClass.cpp] [Line: 156]

UE4Editor_CoreUObject!UClassProperty::Identical() propertyclass.cpp:157 
UE4Editor_CoreUObject!UStruct::SerializeTaggedProperties() class.cpp:1122 
UE4Editor_CoreUObject!UObject::SerializeScriptProperties() obj.cpp:1276 
UE4Editor_CoreUObject!UObject::Serialize() obj.cpp:1210 
UE4Editor_Engine!AActor::Serialize() actor.cpp:559 
UE4Editor_Engine!FCPFUOWriter::FCPFUOWriter() unrealengine.cpp:11900 
UE4Editor_Engine!UEngine::CopyPropertiesForUnrelatedObjects() unrealengine.cpp:12009 
UE4Editor_UnrealEd!ReplaceActorHelper() kismetreinstanceutilities.cpp:1776 
UE4Editor_UnrealEd!FBlueprintCompileReinstancer::ReplaceInstancesOfClass_Inner() kismetreinstanceutilities.cpp:1969 
UE4Editor_UnrealEd!FBlueprintCompileReinstancer::BatchReplaceInstancesOfClass() kismetreinstanceutilities.cpp:1474 
UE4Editor_Kismet!FBlueprintCompilationManagerImpl::FlushReinstancingQueueImpl() blueprintcompilationmanager.cpp:1041 
UE4Editor_Kismet!FBlueprintCompilationManagerImpl::CompileSynchronouslyImpl() blueprintcompilationmanager.cpp:200 
UE4Editor_UnrealEd!FKismetEditorUtilities::CompileBlueprint() kismet2.cpp:745 
UE4Editor_Kismet!FBlueprintEditor::Compile() blueprinteditor.cpp:3181 
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,TTypeWrapper<void> __cdecl() delegateinstancesimpl.h:327 
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FBlueprintEditor,0,void __cdecl() delegateinstancesimpl.h:434 
UE4Editor_Slate!FUICommandList::ExecuteAction() uicommandlist.cpp:97 
UE4Editor_Slate!SToolBarButtonBlock::OnClicked() stoolbarbuttonblock.cpp:300 
UE4Editor_Slate!TMemberFunctionCaller<SToolBarButtonBlock,FReply() delegateinstanceinterface.h:165 
UE4Editor_Slate!UE4Tuple_Private::TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter<TMemberFunctionCaller<SToolBarButtonBlock,FReply() tuple.h:497 
UE4Editor_Slate!TBaseSPMethodDelegateInstance<0,SToolBarButtonBlock,0,FReply __cdecl() delegateinstancesimpl.h:327 
UE4Editor_Slate!TBaseDelegate<FReply>::Execute() delegatesignatureimpl.inl:537 
UE4Editor_Slate!SButton::OnMouseButtonUp() sbutton.cpp:282 
UE4Editor_Slate!<lambda_1002768c627006711ef2f351a87ec0e7>::operator() slateapplication.cpp:5263 
UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,<lambda_1002768c627006711ef2f351a87ec0e7> >() slateapplication.cpp:234 
UE4Editor_Slate!FSlateApplication::RoutePointerUpEvent() slateapplication.cpp:5252 
UE4Editor_Slate!FSlateApplication::ProcessMouseButtonUpEvent() slateapplication.cpp:5750 
UE4Editor_Slate!FSlateApplication::OnMouseUp() slateapplication.cpp:5730 
UE4Editor_ApplicationCore!FWindowsApplication::ProcessDeferredMessage() windowsapplication.cpp:1725 
UE4Editor_ApplicationCore!FWindowsApplication::DeferMessage() windowsapplication.cpp:2171 
UE4Editor_ApplicationCore!FWindowsApplication::ProcessMessage() windowsapplication.cpp:888 
UE4Editor_ApplicationCore!FWindowsApplication::AppWndProc() windowsapplication.cpp:725 
user32!<Unknown> 
user32!<Unknown> 
UE4Editor_ApplicationCore!FWindowsPlatformApplicationMisc::PumpMessages() windowsplatformapplicationmisc.cpp:129 
UE4Editor!FEngineLoop::Tick() launchengineloop.cpp:3220 
UE4Editor!GuardedMain() launch.cpp:166 
UE4Editor!GuardedMainWrapper() launchwindows.cpp:134 
UE4Editor!WinMain() launchwindows.cpp:210 
UE4Editor!__scrt_common_main_seh() exe_common.inl:253 
kernel32!<Unknown> 
ntdll!<Unknown> 

Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-50764 in the post.

0
Login to Vote

Fixed
ComponentGameplay - Blueprint
Affects Versions4.18
Target Fix4.18
Fix Commit3680243
Release Commit3680243
CreatedOct 4, 2017
ResolvedOct 4, 2017
UpdatedApr 27, 2018