Description

When a branch of a selector is deactivated, all auxiliary nodes and observer delegates are removed. If the branch is reactivated soon and the CurrentActiveNode remains unchanged, the behavior tree logs: “Search is not valid, reverted all changes.”

As a result, the auxiliary nodes and observer delegates are not re-added, causing the blackboard decorator node to not work as expected.

A reasonable workaround is to first check whether NextTask is the same as ExecutionRequest.SearchEnd in UBehaviorTreeComponent::ProcessExecutionRequest.

Like this:

if (ActiveInstanceIdx == ExecutionRequest.SearchEnd.InstanceIndex

&& NextTask->GetExecutionIndex() == ExecutionRequest.SearchEnd.ExecutionIndex)

{ bIsSearchValid = true; }

else

{ bIsSearchValid = NextTaskIdx.TakesPriorityOver(ExecutionRequest.SearchEnd); }
Steps to Reproduce

1. Create a Blackboard asset:

Add a key AAA (Bool), default = true

Add a key BBB (Bool), default = false

2. Create a Behavior Tree.

3. Add a Selector (0) from the root node.

4. Add another Selector (2) as the left child of Selector (0).

5. Add a Decorator (1) to Selector (2):

Condition: AAA is set

Observer aborts: Lower Priority

6. Add a Wait(4) node under Selector (2).

7. Add a Decorator (3) to the Wait (4) node:

Condition: BBB is set

Observer aborts: Lower Priority

8. Create BTTask_Test, implement the following:

Delay (5 seconds)

Set AAA = false

Delay (5 seconds)

Set AAA = true

9. Add BTTask_Test(5) as the right child of Selector (0).

10. Open the Visual Logger to track the behavior tree execution.

"Search is not valid, reverted all changes" would be found after AAA set back to true. If set BBB to true, the Decorator (3) does not work as expected.

Callstack

> UnrealEditor-AIModule.dll!UBehaviorTreeComponent::ProcessExecutionRequest() Line 2205 C++

UnrealEditor-AIModule.dll!UBehaviorTreeComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction * ThisTickFunction) Line 1814 C++

[Inline Frame] UnrealEditor-Engine.dll!FActorComponentTickFunction::ExecuteTick::__l2::<lambda_1>::operator()(float) Line 1591 C++

UnrealEditor-Engine.dll!FActorComponentTickFunction::ExecuteTickHelper<`FActorComponentTickFunction::ExecuteTick'::`2'::<lambda_1>>(UActorComponent * Target, bool bTickInEditor, float DeltaTime, ELevelTick TickType, const FActorComponentTickFunction::ExecuteTick::__l2::<lambda_1> & ExecuteTickFunc) Line 4835 C++

UnrealEditor-Engine.dll!FActorComponentTickFunction::ExecuteTick(float DeltaTime, ELevelTick TickType, ENamedThreads::Type CurrentThread, const TRefCountPtr<FBaseGraphTask> & MyCompletionGraphEvent) Line 1589 C++

[Inline Frame] UnrealEditor-Engine.dll!FTickFunctionTask::DoTask(ENamedThreads::Type CurrentThread, const TRefCountPtr<FBaseGraphTask> &) Line 329 C++

UnrealEditor-Engine.dll!TGraphTask<FTickFunctionTask>::ExecuteTask() Line 706 C++

UnrealEditor-Core.dll!UE::Tasks::Private::FTaskBase::TryExecuteTask() Line 527 C++

[Inline Frame] UnrealEditor-Core.dll!FBaseGraphTask::Execute(TArray<FBaseGraphTask *,TSizedDefaultAllocator<32>> &) Line 505 C++

UnrealEditor-Core.dll!FNamedTaskThread::ProcessTasksNamedThread(int QueueIndex, bool bAllowStall) Line 779 C++

UnrealEditor-Core.dll!FNamedTaskThread::ProcessTasksUntilIdle(int QueueIndex) Line 679 C++

UnrealEditor-Engine.dll!FTickTaskSequencer::ReleaseTickGroup(ETickingGroup WorldTickGroup, bool bBlockTillComplete, TArray<FTickFunction *,TSizedDefaultAllocator<32>> & TicksToManualDispatch) Line 1011 C++

UnrealEditor-Engine.dll!FTickTaskManager::RunTickGroup(ETickingGroup Group, bool bBlockTillComplete) Line 2079 C++

UnrealEditor-Engine.dll!UWorld::RunTickGroup(ETickingGroup Group, bool bBlockTillComplete) Line 786 C++

UnrealEditor-Engine.dll!UWorld::Tick(ELevelTick TickType, float DeltaSeconds) Line 1526 C++

UnrealEditor-UnrealEd.dll!UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 2151 C++

UnrealEditor-UnrealEd.dll!UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 533 C++

UnrealEditor.exe!FEngineLoop::Tick() Line 5625 C++

[Inline Frame] UnrealEditor.exe!EngineTick() Line 60 C++

UnrealEditor.exe!GuardedMain(const wchar_t * CmdLine) Line 187 C++

UnrealEditor.exe!GuardedMainWrapper(const wchar_t * CmdLine) Line 128 C++

UnrealEditor.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 282 C++

UnrealEditor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 339 C++

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-365889 in the post.

0
Login to Vote

Unresolved
ComponentUE - AI
Affects Versions5.65.7
CreatedFeb 16, 2026
UpdatedFeb 16, 2026
View Jira Issue