If a user-defined struct-type variable is declared in one Blueprint, and that variable is then indirectly accessed in a second Blueprint through a reference to the first Blueprint, modifying the struct after loading both Blueprints may lead to a crash. See attached image for reference.
This occurs because variable nodes don't currently consider the struct type to be an external dependency. As a result, it won't be included in the Blueprint's cached dependency set (specifically cached UDS dependencies), and we won't clear references to the struct prior to recompiling it. These references then become stale in previously-compiled Blueprint function script, which can lead to a crash during bytecode fixup serialization.
> UE4Editor-CoreUObject-Win64-Debug.dll!CastChecked<UField,UObject>(UObject * Src) Line 259 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FField::GetOwnerUField() Line 417 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FField::GetOwnerClass() Line 379 C++
UE4Editor-Kismet-Win64-Debug.dll!FBlueprintCompilationManagerImpl::FFixupBytecodeReferences::operator<<(FField * & Field) Line 2977 C++
UE4Editor-CoreUObject-Win64-Debug.dll!FPropertyProxyArchive::operator<<(FField * & Value) Line 46 C++
UE4Editor-CoreUObject-Win64-Debug.dll!UStruct::SerializeExpr(int & iCode, FArchive & Ar) Line 202 C++
UE4Editor-CoreUObject-Win64-Debug.dll!UStruct::SerializeExpr(int & iCode, FArchive & Ar) Line 293 C++
UE4Editor-CoreUObject-Win64-Debug.dll!UStruct::SerializeExpr(int & iCode, FArchive & Ar) Line 192 C++
UE4Editor-CoreUObject-Win64-Debug.dll!UStruct::Serialize(FArchive & Ar) Line 1963 C++
UE4Editor-CoreUObject-Win64-Debug.dll!UFunction::Serialize(FArchive & Ar) Line 5617 C++
UE4Editor-Kismet-Win64-Debug.dll!FBlueprintCompilationManagerImpl::FFixupBytecodeReferences::FFixupBytecodeReferences(UObject * InObject) Line 2904 C++
UE4Editor-Kismet-Win64-Debug.dll!FBlueprintCompilationManagerImpl::FlushCompilationQueueImpl(bool bSuppressBroadcastCompiled, TArray<UBlueprint *,TSizedDefaultAllocator<32>> * BlueprintsCompiled, TArray<UBlueprint *,TSizedDefaultAllocator<32>> * BlueprintsCompiledOrSkeletonCompiled, FUObjectSerializeContext * InLoadContext) Line 1524 C++
UE4Editor-Kismet-Win64-Debug.dll!FBlueprintCompilationManagerImpl::CompileSynchronouslyImpl(const FBPCompileRequestInternal & Request) Line 277 C++
UE4Editor-Kismet-Win64-Debug.dll!FBlueprintCompilationManager::CompileSynchronously(const FBPCompileRequest & Request) Line 3090 C++
UE4Editor-UnrealEd-Win64-Debug.dll!FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified(UBlueprint * Blueprint) Line 2074 C++
UE4Editor-KismetCompiler-Win64-Debug.dll!FUserDefinedStructureCompilerUtils::CompileStruct(UUserDefinedStruct * Struct, FCompilerResultsLog & MessageLog, bool bForceRecompile) Line 534 C++
UE4Editor-KismetCompiler-Win64-Debug.dll!FKismet2CompilerModule::CompileStructure(UUserDefinedStruct * Struct, FCompilerResultsLog & Results) Line 86 C++
UE4Editor-UnrealEd-Win64-Debug.dll!FStructureEditorUtils::CompileStructure(UUserDefinedStruct * Struct) Line 544 C++
UE4Editor-UnrealEd-Win64-Debug.dll!FStructureEditorUtils::OnStructureChanged(UUserDefinedStruct * Struct, FStructureEditorUtils::EStructureEditorChangeInfo ChangeReason) Line 556 C++
UE4Editor-UnrealEd-Win64-Debug.dll!FStructureEditorUtils::AddVariable(UUserDefinedStruct * Struct, const FEdGraphPinType & VarType) Line 318 C++
UE4Editor-Kismet-Win64-Debug.dll!FUserDefinedStructureLayout::OnAddNewField() Line 465 C++
UE4Editor-Kismet-Win64-Debug.dll!UE4Tuple_Private::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter<FReply (__cdecl FUserDefinedStructureLayout::const &)(void),FUserDefinedStructureLayout * &>(FReply(FUserDefinedStructureLayout::)() & Func, FUserDefinedStructureLayout * & <Args_0>) Line 299 C++
UE4Editor-Kismet-Win64-Debug.dll!TBaseSPMethodDelegateInstance<0,FUserDefinedStructureLayout,0,FReply __cdecl(void),FDefaultDelegateUserPolicy>::Execute() Line 290 C++
UE4Editor-Slate-Win64-Debug.dll!SButton::ExecuteOnClick() Line 385 C++
UE4Editor-Slate-Win64-Debug.dll!SButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 304 C++
UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::RoutePointerUpEvent::__l8::<lambda>(const FArrangedWidget & TargetWidget, const FPointerEvent & Event) Line 4829 C++
UE4Editor-Slate-Win64-Debug.dll!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,FReply <lambda>(const FArrangedWidget &, const FPointerEvent &)>(FSlateApplication * ThisApplication, FEventRouter::FToLeafmostPolicy RoutingPolicy, FPointerEvent EventCopy, const FSlateApplication::RoutePointerUpEvent::__l8::FReply <lambda>(const FArrangedWidget &, const FPointerEvent &) & Lambda, ESlateDebuggingInputEvent DebuggingInputEvent) Line 378 C++
UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::RoutePointerUpEvent(const FWidgetPath & WidgetsUnderPointer, const FPointerEvent & PointerEvent) Line 4815 C++
UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::ProcessMouseButtonUpEvent(const FPointerEvent & MouseEvent) Line 5356 C++
UE4Editor-Slate-Win64-Debug.dll!FSlateApplication::OnMouseUp(const EMouseButtons::Type Button, const FVector2D CursorPos) Line 5321 C++
UE4Editor-ApplicationCore-Win64-Debug.dll!FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage & DeferredMessage) Line 2178 C++
UE4Editor-ApplicationCore-Win64-Debug.dll!FWindowsApplication::DeferMessage(TSharedPtr<FWindowsWindow,0> & NativeWindow, HWND__ * InHWnd, unsigned int InMessage, unsigned __int64 InWParam, __int64 InLParam, int MouseX, int MouseY, unsigned int RawInputFlags) Line 2642 C++
UE4Editor-ApplicationCore-Win64-Debug.dll!FWindowsApplication::ProcessMessage(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 1048 C++
UE4Editor-ApplicationCore-Win64-Debug.dll!FWindowsApplication::AppWndProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 877 C++
[External Code]
UE4Editor-ApplicationCore-Win64-Debug.dll!WinPumpMessages() Line 109 C++
UE4Editor-ApplicationCore-Win64-Debug.dll!FWindowsPlatformApplicationMisc::PumpMessages(bool bFromMainLoop) Line 133 C++
UE4Editor-Win64-Debug.exe!FEngineLoop::Tick() Line 4748 C++
UE4Editor-Win64-Debug.exe!EngineTick() Line 63 C++
UE4Editor-Win64-Debug.exe!GuardedMain(const wchar_t * CmdLine) Line 172 C++
UE4Editor-Win64-Debug.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow) Line 257 C++
I am not able to find world outliner how to enable it?
How to achieve HLSL Multiple Render Target in Material blueprints?
How can i modify the param name in EQS node
How does TextureRenderTarget2D get TArray<uint8> type data?
Undefined sysmbol: typeinfo for AActor when cross-compile linux dedicated server on windows
Why does the REMOVE method of map container remove elements have memory leaks?
How does UMG set overlapping layouts?
Why does the system plugin 'UnrealBuildTool' error could not be found when the project is compiled?
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-115373 in the post.
0 |
Component | UE - Gameplay - Blueprint Editor |
---|---|
Affects Versions | 4.25, 4.26, 4.26.2 |
Target Fix | 4.27 |
Fix Commit | 16308198 |
---|---|
Release Commit | 16308211 |
Created | May 11, 2021 |
---|---|
Resolved | May 12, 2021 |
Updated | Dec 1, 2022 |