In FStateTreeCompareEnumCondition::GetDescription, the Left.Enum value is mistakingly used when setting the RightValue. This causes crashes when resetting the default value of the Right field in an Enum Compare condition within the State Tree's Enter Conditions.
This issue has been reproduced in Unreal Engine 5.6, 5.7, and 5.8 (UE5-Main at CL 50708264). The crash happens when adding an Enum Compare condition, setting a value in the Left parameter, then selecting the Right operand and attempting to reset it to default.
A repro project has been shared to quickly test this issue.
The proposed fix is to modify FStateTreeCompareEnumCondition::GetDescription to reference InstanceData->Right.Enum instead of InstanceData->Left.Enum as follows:
if (RightValue.IsEmpty())
{
if (InstanceData->Right.Enum)
{ RightValue = InstanceData->Right.Enum->GetDisplayNameTextByValue(InstanceData->Right.Value); }else
{ RightValue = LOCTEXT("None", "None"); }}
1. Open the attached repro project (a basic gameplay State Tree asset has been created).
2. Open the NewStateTree asset.
3. Select the Child state.
4. Inside the Enter Conditions, select the right operand of the first enum compare condition and attempt to reset its default value.
Result: the editor crashes.
(5.6.2 callstack)
> UnrealEditor-CoreUObject-Win64-Debug.dll!UEnum::GetDisplayNameTextByValue(__int64 Value) Line 708 C++
UnrealEditor-StateTreeModule-Win64-Debug.dll!FStateTreeCompareEnumCondition::GetDescription(const FGuid & ID, FStateTreeDataView InstanceDataView, const IStateTreeBindingLookup & BindingLookup, EStateTreeNodeFormatting Formatting) Line 235 C++
UnrealEditor-StateTreeEditorModule-Win64-Debug.dll!UStateTreeEditorData::GetNodeDescription(const FStateTreeEditorNode & Node, const EStateTreeNodeFormatting Formatting) Line 876 C++
UnrealEditor-StateTreeEditorModule-Win64-Debug.dll!SStateTreeViewRow::GetConditionDesc(FGuid ConditionID, EStateTreeNodeFormatting Formatting) Line 1576 C++
[External Code]
UnrealEditor-Slate-Win64-Debug.dll!TAttribute<FText>::Get() Line 251 C++
UnrealEditor-Slate-Win64-Debug.dll!SRichTextBlock::ComputeDesiredSize(float LayoutScaleMultiplier) Line 92 C++
UnrealEditor-SlateCore-Win64-Debug.dll!SWidget::CacheDesiredSize(float InLayoutScaleMultiplier) Line 950 C++
UnrealEditor-SlateCore-Win64-Debug.dll!SWidget::Prepass_Internal(float InLayoutScaleMultiplier) Line 1756 C++
UnrealEditor-SlateCore-Win64-Debug.dll!SWidget::Prepass_ChildLoop::__l2::<lambda_1>::operator()(SWidget & Child) Line 1795 C++
UnrealEditor-SlateCore-Win64-Debug.dll!SWidget::Prepass_ChildLoop(float InLayoutScaleMultiplier, FChildren * MyChildren) Line 1810 C++
UnrealEditor-SlateCore-Win64-Debug.dll!SWidget::Prepass_Internal(float InLayoutScaleMultiplier) Line 1750 C++
UnrealEditor-SlateCore-Win64-Debug.dll!SWidget::Prepass_ChildLoop::__l2::<lambda_1>::operator()(SWidget & Child) Line 1795 C++
UnrealEditor-SlateCore-Win64-Debug.dll!SWidget::Prepass_ChildLoop::__l2::<lambda_1>::operator()(SWidget & Child) Line 1795 C++
...
UnrealEditor-SlateCore-Win64-Debug.dll!SWidget::Prepass_Internal(float InLayoutScaleMultiplier) Line 1750 C++
UnrealEditor-SlateCore-Win64-Debug.dll!SWidget::SlatePrepass(float InLayoutScaleMultiplier) Line 704 C++
UnrealEditor-Slate-Win64-Debug.dll!PrepassWindowAndChildren(TSharedRef<SWindow,1> WindowToPrepass, const TSharedPtr<SWindow,1> & DebuggingWindow, TWeakPtr<SWidget,1> & CurrentContext) Line 1272 C++
UnrealEditor-Slate-Win64-Debug.dll!FSlateApplication::DrawPrepass(TSharedPtr<SWindow,1> DrawOnlyThisWindow) Line 1326 C++
UnrealEditor-Slate-Win64-Debug.dll!FSlateApplication::PrivateDrawWindows(TSharedPtr<SWindow,1> DrawOnlyThisWindow) Line 1375 C++
UnrealEditor-Slate-Win64-Debug.dll!FSlateApplication::DrawWindows() Line 1121 C++
UnrealEditor-Slate-Win64-Debug.dll!FSlateApplication::TickAndDrawWidgets(float DeltaTime) Line 1726 C++
UnrealEditor-Slate-Win64-Debug.dll!FSlateApplication::Tick(ESlateTickType TickType) Line 1576 C++
UnrealEditor-Win64-Debug.exe!FEngineLoop::Tick() Line 5751 C++
UnrealEditor-Win64-Debug.exe!EngineTick() Line 61 C++
UnrealEditor-Win64-Debug.exe!GuardedMain(const wchar_t * CmdLine) Line 190 C++
UnrealEditor-Win64-Debug.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 271 C++
UnrealEditor-Win64-Debug.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 339 C++
[External Code]
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-365187 in the post.
| 0 |
| Component | UE - AI - StateTree |
|---|---|
| Affects Versions | 5.6, 5.7, 5.8 |
| Created | Feb 11, 2026 |
|---|---|
| Updated | Feb 26, 2026 |