If any SlowTask is canceled by the Editor's user, and later on the "Find in Blueprints" dialog is opened and needs to perform its async indexing task, the Editor crashes on thread FAsyncSearchIndexTaskRunnable with a read access violation exception. The same crash also happens if a SlowTask is started and canceled while the "Find in Blueprints" dialog is running its async indexing task.
No crash happens if, after the SlowTask has been canceled, another SlowTask completes successfully before the "Find in Blueprints" dialog needs to run the async indexing task. Also, no crash happens if "[BlueprintSearchSettings] bDisableThreadedIndexing=true" is added to config file DefaultEditor.ini.
As the UDN licensee noted in the linked case, the crash is probably related to the fact that GWarn is shared between SlowTasks and the indexing task performed by the "Find in Blueprints" dialog. In fact, after a SlowTask has been canceled, the check "GWarn->ReceivedUserCancel()" performed by function FCacheAllBlueprintsTickableObject::Tick() on file [Engine\Source\Editor\Kismet\Private\FindInBlueprintManager.cpp:1742] returns true. As a result, the code attempts to cancel the indexing task, which ends up causing the crash.
Exception on thread "FAsyncSearchIndexTaskRunnable": read access violation. this->AssetsPendingAsyncIndexing.Tail was nullptr.
Stack of thread "FAsyncSearchIndexTaskRunnable":
TQueue<FSoftObjectPath,1>::Dequeue() Line 74
FCacheAllBlueprintsTickableObject::GetAssetPathsToIndex() Line 1692
FAsyncSearchIndexTaskRunnable::Run() Line 1405
FRunnableThreadWin::Run() Line 149
FRunnableThreadWin::GuardedRun() Line 71
Stack of thread "GameThread":
FRunnableThreadWin::Kill() Line 100
FRunnableThreadWin::{dtor}() Line 55
FRunnableThreadWin::`scalar deleting destructor'()
TDefaultDelete<FRunnableThread>::operator()() Line 64
TUniquePtr<FRunnableThread,TDefaultDelete<FRunnableThread>>::{dtor}() Line 266
FAsyncSearchIndexTaskRunnable::`scalar deleting destructor'()
TDefaultDelete<FAsyncSearchIndexTaskRunnable>::operator()() Line 64
TUniquePtr<FAsyncSearchIndexTaskRunnable,TDefaultDelete<FAsyncSearchIndexTaskRunnable>>::{dtor}() Line 266
FCacheAllBlueprintsTickableObject::~FCacheAllBlueprintsTickableObject() Line 1558
FCacheAllBlueprintsTickableObject::`scalar deleting destructor'()
TDefaultDelete<FCacheAllBlueprintsTickableObject>::operator()() Line 64
TUniquePtr<FCacheAllBlueprintsTickableObject,TDefaultDelete<FCacheAllBlueprintsTickableObject>>::Reset() Line 343
FFindInBlueprintSearchManager::FinishedCachingBlueprints() Line 3532
FCacheAllBlueprintsTickableObject::Tick() Line 1745
FFindInBlueprintSearchManager::Tick() Line 3846
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-224491 in the post.
0 |
Component | UE - Gameplay - Blueprint |
---|---|
Affects Versions | 5.2, 5.3, 5.4.4 |
Target Fix | 5.6 |
Created | Sep 17, 2024 |
---|---|
Resolved | Sep 28, 2024 |
Updated | Nov 8, 2024 |