SimPro2023
(SimPro2023)
February 3, 2025, 9:49pm
1
I have a runtime Import of .glb files (glTF) that is working on UE 5.4, but not in UE 5.5.
I have several Issues but it seesm to be the same Problem in diffrent facettes.
In BeginPlay i have a loop that imports .gltf files at runtime via interchange import scene:
It works in packaged build as well in 5_4. The Problem starts if i call the exact same node not at begin play, but instead from a TCP Event from a plugin. in 5.4 the whole engines freezes, and has to be killed.
I updated to UE 5.5 to see if it works there. But there works less then in 5_4 but there is the same crashlog for both cirumstances ( begin play or network start). Here ist the crahslog and screenshot of the trace:
Assertion failed: ++Queue(QueueIndex).RecursionGuard == 1 [File:D:\build++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp] [Line: 677]
UnrealEditor_Core!FNamedTaskThread::ProcessTasksUntilIdle() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:677]
UnrealEditor_InterchangeEngine!UInterchangePipelineBase::ExecuteExportPipeline() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:870]
UnrealEditor_InterchangeCore!FScopeCycleCounter::~FScopeCycleCounter'::
2’::<lambda_1>::operator()() [D:\build++UE5\Sync\Engine\Source\Runtime\Interchange\Core\Private\InterchangeTaskSystem.cpp:210]
UnrealEditor_Core!FGenericPlatformProcess::ConditionalSleep() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Private\GenericPlatform\GenericPlatformProcess.cpp:412]
UnrealEditor_InterchangeCore!UE::Interchange::FInterchangeTaskSystem::WaitUntilTasksComplete() [D:\build++UE5\Sync\Engine\Source\Runtime\Interchange\Core\Private\InterchangeTaskSystem.cpp:214]
UnrealEditor_InterchangeEngine!UE::Interchange::FImportAsyncHelper::GetCompletionTaskGraphEvent() [D:\build++UE5\Sync\Engine\Source\Runtime\Interchange\Engine\Private\InterchangeManager.cpp:655]
UnrealEditor_InterchangeEngine!UE::Interchange::FImportResult::WaitUntilDone() [D:\build++UE5\Sync\Engine\Source\Runtime\Interchange\Engine\Private\InterchangeManager.cpp:824]
SimPro2023
(SimPro2023)
February 5, 2025, 12:39am
2
the problem can also be triggered by a simple delay note in front of the loop that starts the interchange Scene Imports.
Any suggestions to prevent this behaviour ? ( even if no delay not is in place)
Hi! Hitting the same issue with C++ code, replacing my FBXImporter with Interchange.
In my instance, I’m calling it from a Menu Item
Assertion failed: ++Queue(QueueIndex).RecursionGuard == 1 [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp] [Line: 677]
UnrealEditor_Core!FNamedTaskThread::ProcessTasksUntilIdle() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:677]
UnrealEditor_InterchangeEngine!UInterchangePipelineBase::ExecuteExportPipeline() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:870]
UnrealEditor_InterchangeCore!`FScopeCycleCounter::~FScopeCycleCounter'::`2'::<lambda_1>::operator()() [D:\build\++UE5\Sync\Engine\Source\Runtime\Interchange\Core\Private\InterchangeTaskSystem.cpp:210]
UnrealEditor_Core!FGenericPlatformProcess::ConditionalSleep() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\GenericPlatform\GenericPlatformProcess.cpp:412]
UnrealEditor_InterchangeCore!UE::Interchange::FInterchangeTaskSystem::WaitUntilTasksComplete() [D:\build\++UE5\Sync\Engine\Source\Runtime\Interchange\Core\Private\InterchangeTaskSystem.cpp:214]
UnrealEditor_InterchangeEngine!UE::Interchange::FImportAsyncHelper::GetCompletionTaskGraphEvent() [D:\build\++UE5\Sync\Engine\Source\Runtime\Interchange\Engine\Private\InterchangeManager.cpp:655]
UnrealEditor_InterchangeEngine!UE::Interchange::FImportResult::WaitUntilDone() [D:\build\++UE5\Sync\Engine\Source\Runtime\Interchange\Engine\Private\InterchangeManager.cpp:824]
UnrealEditor_InterchangeEngine!UInterchangeManager::ImportAsset() [D:\build\++UE5\Sync\Engine\Source\Runtime\Interchange\Engine\Private\InterchangeManager.cpp:1637]
UnrealEditor_DesignLife_Editor!DirectoryImporter::ImportFBXInterchange() [C:\Projects\NewCo\DesignLife_Unreal 5.5\Source\DesignLife_Editor\Private\DirectoryImporter.cpp:59]
UnrealEditor_DesignLife_Editor!DirectoryImporter::ImportFile() [C:\Projects\NewCo\DesignLife_Unreal 5.5\Source\DesignLife_Editor\Private\DirectoryImporter.cpp:307]
UnrealEditor_DesignLife_Editor!UE::Core::Private::Function::TFunctionRefCaller<`ProcessDirectory'::`2'::<lambda_1>,bool,wchar_t const *,bool>::Call() [C:\Program Files\Epic Games\UE_5.5\Engine\Source\Runtime\Core\Public\Templates\Function.h:319]
UnrealEditor_Core!FDirectoryVisitorFuncWrapper::Visit() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\GenericPlatform\GenericPlatformFile.cpp:598]
UnrealEditor_Core!IPlatformFile::FDirectoryVisitor::CallShouldVisitAndVisit() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\GenericPlatform\GenericPlatformFile.cpp:574]
UnrealEditor_Core!`IPlatformFile::IterateDirectoryRecursively'::`2'::FRecurse::Visit() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\GenericPlatform\GenericPlatformFile.cpp:642]
UnrealEditor_Core!IPlatformFile::FDirectoryVisitor::CallShouldVisitAndVisit() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\GenericPlatform\GenericPlatformFile.cpp:574]
UnrealEditor_Core!FWindowsPlatformFile::IterateDirectoryCommon() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Windows\WindowsPlatformFile.cpp:1673]
UnrealEditor_Core!FWindowsPlatformFile::IterateDirectory() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Windows\WindowsPlatformFile.cpp:1617]
UnrealEditor_Core!ParallelForImpl::ParallelForInternal<`IPlatformFile::IterateDirectoryRecursively'::`4'::<lambda_1>,`ParallelForWithTaskContext<TArray<FString,TSizedDefaultAllocator<32> >,TSizedDefaultAllocator<32>,`IPlatformFile::IterateDirectoryRecursivel() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Async\ParallelFor.h:145]
UnrealEditor_Core!IPlatformFile::IterateDirectoryRecursively() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\GenericPlatform\GenericPlatformFile.cpp:674]
UnrealEditor_Core!IPlatformFile::IterateDirectoryRecursively() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\GenericPlatform\GenericPlatformFile.cpp:713]
UnrealEditor_Core!FFileManagerGeneric::IterateDirectoryRecursively() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\HAL\FileManagerGeneric.cpp:518]
UnrealEditor_DesignLife_Editor!ProcessDirectory() [C:\Projects\NewCo\DesignLife_Unreal 5.5\Source\DesignLife_Editor\Private\DownloadAndImportModels.cpp:110]
UnrealEditor_DesignLife_Editor!UDownloadAndImportModels::DownloadModel() [C:\Projects\NewCo\DesignLife_Unreal 5.5\Source\DesignLife_Editor\Private\DownloadAndImportModels.cpp:169]
UnrealEditor_DesignLife_Editor!UDownloadAndImportModels::ExecuteDownloads() [C:\Projects\NewCo\DesignLife_Unreal 5.5\Source\DesignLife_Editor\Private\DownloadAndImportModels.cpp:81]
UnrealEditor_DesignLife_Editor!UAirtableSubsystem::OnCacheLoaded() [C:\Projects\NewCo\DesignLife_Unreal 5.5\Source\DesignLife_Editor\Private\AirtableSubsystem.cpp:68]
UnrealEditor_DesignLife_Editor!AirtableBulkCache::TickUp() [C:\Projects\NewCo\DesignLife_Unreal 5.5\Source\DesignLife_Editor\Private\AirtableBulkCache.cpp:177]
UnrealEditor_DesignLife_Editor!std::_Func_impl_no_alloc<`AirtableBulkCache::CreateSafeTickUp<FSkus>'::`2'::<lambda_1>,void>::_Do_call() [C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.40.33521\INCLUDE\functional:909]
UnrealEditor_DesignLife_Editor!``FetchTable<FSkus>'::`2'::<lambda_1>::operator()'::`36'::<lambda_1>::operator()() [C:\Projects\NewCo\DesignLife_Unreal 5.5\Source\DesignLife_Editor\Private\AirtableBulkCache.cpp:151]
UnrealEditor_Core!TGraphTask<FAsyncGraphTask>::ExecuteTask() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Async\TaskGraphInterfaces.h:634]
UnrealEditor_Core!UE::Tasks::Private::FTaskBase::TryExecuteTask() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Tasks\TaskPrivate.h:504]
UnrealEditor_Core!FNamedTaskThread::ProcessTasksNamedThread() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:779]
UnrealEditor_Core!FNamedTaskThread::ProcessTasksUntilQuit() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:668]
UnrealEditor_Core!UE::Tasks::Private::TryWaitOnNamedThread() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Tasks\TaskPrivate.cpp:338]
UnrealEditor_Core!UE::Tasks::Private::FTaskBase::WaitWithNamedThreadsSupport() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Tasks\TaskPrivate.cpp:238]
UnrealEditor_MassEntityEditor!UMassEntityEditorSubsystem::Tick() [D:\build\++UE5\Sync\Engine\Source\Editor\MassEntityEditor\Private\MassEntityEditorSubsystem.cpp:173]
UnrealEditor_UnrealEd!UE::Core::Private::Function::TFunctionRefCaller<`FTickableEditorObject::TickObjects'::`2'::<lambda_1>,void,FTickableObjectBase * __ptr64>::Call() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Templates\Function.h:315]
UnrealEditor_Engine!FTickableObjectBase::SimpleTickObjects() [D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\Tickable.cpp:112]
UnrealEditor_UnrealEd!UEditorEngine::Tick() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\EditorEngine.cpp:1898]
UnrealEditor_UnrealEd!UUnrealEdEngine::Tick() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\UnrealEdEngine.cpp:550]
UnrealEditor!FEngineLoop::Tick() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:5869]
UnrealEditor!GuardedMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Launch.cpp:188]
UnrealEditor!GuardedMainWrapper() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:123]
UnrealEditor!LaunchWindowsStartup() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:277]
UnrealEditor!WinMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:317]
UnrealEditor!__scrt_common_main_seh() [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
kernel32
ntdll
void DirectoryImporter::ImportFBXInterchange(const FString& FilePath, const FString& PackagePath)
{
FString PackageName = GetUniquePackageName(FilePath, PackagePath, TEXT("S_"));
if (FPackageName::DoesPackageExist(PackageName))
{
UE_LOG(LogTemp, Warning, TEXT("The model '%s' already exists as an asset in Unreal."), *FilePath);
return;
}
UInterchangeManager& InterchangeManager = UInterchangeManager::GetInterchangeManager();
UInterchangeSourceData* SourceData = NewObject<UInterchangeSourceData>();
SourceData->SetFilename(FilePath);
FImportAssetParameters ImportParameters;
ImportParameters.bIsAutomated = true;
ImportParameters.bRunSynchronous = true;
TArray<UObject*> ImportedAssets;
bool bImportStarted = InterchangeManager.ImportAsset(
PackagePath,
SourceData,
ImportParameters,
ImportedAssets
);
if (!bImportStarted)
{
UE_LOG(LogDirectoryImporter, Warning, TEXT("Failed to start import for '%s'"), *FilePath);
return;
}
if (ImportedAssets.Num() > 0)
{
for (UObject* ImportedObject : ImportedAssets)
{
if (UStaticMesh* StaticMesh = Cast<UStaticMesh>(ImportedObject))
{
// Enable Nanite (if supported) and tweak build settings
FStaticMeshSourceModel& SourceModel = StaticMesh->GetSourceModel(0);
FMeshBuildSettings& BuildSettings = SourceModel.BuildSettings;
BuildSettings.bUseMikkTSpace = true;
BuildSettings.bComputeWeightedNormals = true;
BuildSettings.bRecomputeNormals = true;
BuildSettings.bRecomputeTangents = true;
// Apply and save changes
StaticMesh->Build();
StaticMesh->PostEditChange();
}
}
UE_LOG(LogDirectoryImporter, Log, TEXT("Successfully imported FBX: '%s'"), *FilePath);
}
else
{
UE_LOG(LogDirectoryImporter, Warning, TEXT("No assets were imported for '%s'"), *FilePath);
}
}```