Replication:
-
Create a regular Animation BP, ParentAnimTest, deriving from AnimInstance with an arbitrary skeleton - I chose SK_Mannequin.
-
Create a child AnimationBP deriving from the above. Add some variable to the child AnimationBP, and set it using a PropertyAccess node in the BlueprintThreadSafeUpdateAnimation function.
-
I created a Float, MyVar, and set it using a PropertyAccess of TryGetPawnOwner.GetActorLocation.X.
The engine will crash with a stack trace similar to:
Fatal error: [File:D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\Templates\Casts.cpp] [Line: 10] Cast of nullptr to AnimBlueprintExtension_PropertyAccess failed
UnrealEditor_CoreUObject!CastLogError() [D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\Templates\Casts.cpp:11]
UnrealEditor_PropertyAccessNode!UK2Node_PropertyAccess::ExpandNode() [D:\build\++UE5\Sync\Engine\Plugins\Developer\PropertyAccessNode\Source\PropertyAccessNode\Private\K2Node_PropertyAccess.cpp:56]
UnrealEditor_KismetCompiler!FKismetCompilerContext::ExpansionStep() [D:\build\++UE5\Sync\Engine\Source\Editor\KismetCompiler\Private\KismetCompiler.cpp:3738]
UnrealEditor_KismetCompiler!FKismetCompilerContext::ProcessOneFunctionGraph() [D:\build\++UE5\Sync\Engine\Source\Editor\KismetCompiler\Private\KismetCompiler.cpp:4398]
UnrealEditor_AnimGraph!FAnimBlueprintCompilerContext::ProcessOneFunctionGraph() [D:\build\++UE5\Sync\Engine\Source\Editor\AnimGraph\Private\AnimBlueprintCompiler.cpp:1251]
UnrealEditor_KismetCompiler!FKismetCompilerContext::CreateFunctionList() [D:\build\++UE5\Sync\Engine\Source\Editor\KismetCompiler\Private\KismetCompiler.cpp:4542]
UnrealEditor_KismetCompiler!FKismetCompilerContext::CompileClassLayout() [D:\build\++UE5\Sync\Engine\Source\Editor\KismetCompiler\Private\KismetCompiler.cpp:4752]
UnrealEditor_Kismet!FBlueprintCompilationManagerImpl::FlushCompilationQueueImpl() [D:\build\++UE5\Sync\Engine\Source\Editor\Kismet\Private\BlueprintCompilationManager.cpp:1363]
UnrealEditor_Kismet!FBlueprintCompilationManagerImpl::CompileSynchronouslyImpl() [D:\build\++UE5\Sync\Engine\Source\Editor\Kismet\Private\BlueprintCompilationManager.cpp:269]
UnrealEditor_Kismet!FBlueprintCompilationManager::CompileSynchronously() [D:\build\++UE5\Sync\Engine\Source\Editor\Kismet\Private\BlueprintCompilationManager.cpp:3294]
UnrealEditor_UnrealEd!FKismetEditorUtilities::CompileBlueprint() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\Kismet2\Kismet2.cpp:763]
UnrealEditor_Kismet!FBlueprintEditor::Compile() [D:\build\++UE5\Sync\Engine\Source\Editor\Kismet\Private\BlueprintEditor.cpp:4060]
Additionally
The same process of setting a variable using the PropertyAccess node works fine when done in an Animation BP that derives directly from AnimInstance.
If a user saves an anim blueprint with this issue (before compiling/crashing it), it will seemingly permanently corrupt it, since it becomes impossible to open or edit it through the editor.