I’m using a glTFRuntime plugin that loads some glTFs from URLs. I posted this question on their discord but thought that post it here too in case there can be any insights from Unreal side.
I’m getting random deadlock/freeze/infinite wait when the downloaded object is being loaded by glTFRuntime through the LoadPackage
call. It happens when a material instance is loaded and occurs randomly.
The last log message I see is LogStreaming: Display: FlushAsyncLoading: 1 QueuedPackages, 0 AsyncPackages
. Any insights/suggestions would be appreciated!
Here’s the callstack:
# Call Site
00 ntdll!NtWaitForSingleObject+0x14
01 KERNELBASE!WaitForSingleObjectEx+0x8e
02 Project_Unreal_Win64_Shipping!FEventWin::Wait+0x4b [e:\unrealengine\ue_main\engine\source\runtime\core\private\windows\windowsplatformprocess.cpp @ 1366]
03 Project_Unreal_Win64_Shipping!FPrecacheCallbackHandler::WaitForIO+0xb6 [e:\unrealengine\ue_main\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp @ 1172]
04 Project_Unreal_Win64_Shipping!FAsyncLoadingThread::ProcessAsyncLoading+0x900 [e:\unrealengine\ue_main\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp @ 4166]
05 Project_Unreal_Win64_Shipping!FAsyncLoadingThread::TickAsyncThread+0x169 [e:\unrealengine\ue_main\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp @ 4857]
06 Project_Unreal_Win64_Shipping!FAsyncLoadingThread::TickAsyncLoading+0x1cc [e:\unrealengine\ue_main\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp @ 4556]
07 Project_Unreal_Win64_Shipping!FAsyncLoadingThread::FlushLoading+0x16f [e:\unrealengine\ue_main\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp @ 7023]
08 Project_Unreal_Win64_Shipping!LoadPackageInternal+0x368 [e:\unrealengine\ue_main\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp @ 1147]
09 Project_Unreal_Win64_Shipping!LoadPackage+0x10a [e:\unrealengine\ue_main\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp @ 1469]
0a Project_Unreal_Win64_Shipping!ResolveName+0x3ec [e:\unrealengine\ue_main\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp @ 791]
0b Project_Unreal_Win64_Shipping!StaticLoadObjectInternal+0xdb [e:\unrealengine\ue_main\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp @ 853]
0c Project_Unreal_Win64_Shipping!StaticLoadObjectInternal+0x479 [e:\unrealengine\ue_main\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp @ 904]
0d Project_Unreal_Win64_Shipping!StaticLoadObject+0xc6 [e:\unrealengine\ue_main\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp @ 928]
0e Project_Unreal_Win64_Shipping!LoadObject+0x2d [C:\wkspaces\My_Unreal_Build\Engine\Windows\Engine\Source\Runtime\CoreUObject\Public\UObject\UObjectGlobals.h @ 1322]
0f Project_Unreal_Win64_Shipping!FglTFRuntimeParser::FglTFRuntimeParser+0x775 [D:\wkspaces\ProjectDevelopment\Plugins\Project\Social\glTFRuntime\Source\glTFRuntime\Private\glTFRuntimeParser.cpp @ 346]
10 Project_Unreal_Win64_Shipping!SharedPointerInternals::TIntrusiveReferenceController<FglTFRuntimeParser>::{ctor}+0x42 [C:\wkspaces\My_Unreal_Build\Engine\Windows\Engine\Source\Runtime\Core\Public\Templates\SharedPointerInternals.h @ 135]
11 Project_Unreal_Win64_Shipping!SharedPointerInternals::NewIntrusiveReferenceController+0x57 [C:\wkspaces\My_Unreal_Build\Engine\Windows\Engine\Source\Runtime\Core\Public\Templates\SharedPointerInternals.h @ 186]
12 Project_Unreal_Win64_Shipping!MakeShared+0x14a [C:\wkspaces\My_Unreal_Build\Engine\Windows\Engine\Source\Runtime\Core\Public\Templates\SharedPointer.h @ 1844]
13 Project_Unreal_Win64_Shipping!FglTFRuntimeParser::FromString+0x206 [D:\wkspaces\ProjectDevelopment\Plugins\Project\Social\glTFRuntime\Source\glTFRuntime\Private\glTFRuntimeParser.cpp @ 241]
14 Project_Unreal_Win64_Shipping!FglTFRuntimeParser::FromBinary+0x162 [D:\wkspaces\ProjectDevelopment\Plugins\Project\Social\glTFRuntime\Source\glTFRuntime\Private\glTFRuntimeParser.cpp @ 313]
15 Project_Unreal_Win64_Shipping!FglTFRuntimeParser::FromData+0x470 [D:\wkspaces\ProjectDevelopment\Plugins\Project\Social\glTFRuntime\Source\glTFRuntime\Private\glTFRuntimeParser.cpp @ 219]
16 Project_Unreal_Win64_Shipping!UglTFRuntimeAsset::LoadFromData+0x3b [D:\wkspaces\ProjectDevelopment\Plugins\Project\Social\glTFRuntime\Source\glTFRuntime\Private\glTFRuntimeAsset.cpp @ 73]
17 Project_Unreal_Win64_Shipping!UglTFRuntimeFunctionLibrary::glTFLoadAssetFromData+0x67 [D:\wkspaces\ProjectDevelopment\Plugins\Project\Social\glTFRuntime\Source\glTFRuntime\Private\glTFRuntimeFunctionLibrary.cpp @ 78]
18 Project_Unreal_Win64_Shipping!UglTFRuntimeFunctionLibrary::glTFLoadAssetFromUrl::__l2::<lambda_c9fac779ed2c2d45cd9123498f8d7b5a>::operator()+0x23 [D:\wkspaces\ProjectDevelopment\Plugins\Project\Social\glTFRuntime\Source\glTFRuntime\Private\glTFRuntimeFunctionLibrary.cpp @ 62]
19 Project_Unreal_Win64_Shipping!Invoke+0x48 [C:\wkspaces\My_Unreal_Build\Engine\Windows\Engine\Source\Runtime\Core\Public\Templates\Invoke.h @ 51]
1a Project_Unreal_Win64_Shipping!UE4Tuple_Private::TTupleBase<TIntegerSequence<unsigned int,0,1>,FglTFRuntimeHttpResponse,FglTFRuntimeConfig>::ApplyAfter<<lambda_c9fac779ed2c2d45cd9123498f8d7b5a> &,TSharedPtr<IHttpRequest,1> &,TSharedPtr<IHttpResponse,1> &,bool &>+0x57 [C:\wkspaces\My_Unreal_Build\Engine\Windows\Engine\Source\Runtime\Core\Public\Templates\Tuple.h @ 306]
1b Project_Unreal_Win64_Shipping!TBaseFunctorDelegateInstance<void __cdecl(TSharedPtr<IHttpRequest,1>,TSharedPtr<IHttpResponse,1>,bool),FDefaultDelegateUserPolicy,<lambda_c9fac779ed2c2d45cd9123498f8d7b5a>,FglTFRuntimeHttpResponse,FglTFRuntimeConfig>::ExecuteIfSafe+0x3a [C:\wkspaces\My_Unreal_Build\Engine\Windows\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h @ 838]
1c Project_Unreal_Win64_Shipping!TDelegate<void __cdecl(TSharedPtr<IHttpRequest,1>,TSharedPtr<IHttpResponse,1>,bool),FDefaultDelegateUserPolicy>::ExecuteIfBound<void,0>+0x74 [e:\unrealengine\ue_main\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl @ 599]
1d Project_Unreal_Win64_Shipping!FCurlHttpRequest::FinishedRequest+0x304 [e:\unrealengine\ue_main\engine\source\runtime\online\http\private\curl\curlhttp.cpp @ 1274]
1e Project_Unreal_Win64_Shipping!FHttpManager::Tick+0x2df [e:\unrealengine\ue_main\engine\source\runtime\online\http\private\httpmanager.cpp @ 255]
1f Project_Unreal_Win64_Shipping!TDelegate<bool __cdecl(float),FDefaultDelegateUserPolicy>::Execute+0x1b [e:\unrealengine\ue_main\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl @ 580]
20 Project_Unreal_Win64_Shipping!FTicker::FElement::Fire+0x43 [e:\unrealengine\ue_main\engine\source\runtime\core\private\containers\ticker.cpp @ 127]
21 Project_Unreal_Win64_Shipping!FTicker::Tick+0x26a [e:\unrealengine\ue_main\engine\source\runtime\core\private\containers\ticker.cpp @ 92]
22 Project_Unreal_Win64_Shipping!FBackgroundableTicker::{ctor}::__l2::<lambda_3a2926b92a0c8365ab42dd44f5f6565e>::operator()+0x45 [e:\unrealengine\ue_main\engine\source\runtime\core\private\containers\backgroundableticker.cpp @ 24]
23 Project_Unreal_Win64_Shipping!Invoke+0x4c [e:\unrealengine\ue_main\engine\source\runtime\core\public\templates\invoke.h @ 51]
24 Project_Unreal_Win64_Shipping!UE4Function_Private::TFunctionRefCaller<<lambda_3a2926b92a0c8365ab42dd44f5f6565e>,bool __cdecl(float)>::Call+0x50 [e:\unrealengine\ue_main\engine\source\runtime\core\public\templates\function.h @ 539]
25 Project_Unreal_Win64_Shipping!UE4Function_Private::TFunctionRefBase<UE4Function_Private::TFunctionStorage<0>,bool __cdecl(float)>::operator()+0x29 [e:\unrealengine\ue_main\engine\source\runtime\core\public\templates\function.h @ 676]
26 Project_Unreal_Win64_Shipping!Invoke+0x29 [e:\unrealengine\ue_main\engine\source\runtime\core\public\templates\invoke.h @ 51]
27 Project_Unreal_Win64_Shipping!UE4Tuple_Private::TTupleBase<TIntegerSequence<unsigned int> >::ApplyAfter+0x29 [e:\unrealengine\ue_main\engine\source\runtime\core\public\templates\tuple.h @ 306]
28 Project_Unreal_Win64_Shipping!TBaseFunctorDelegateInstance<bool __cdecl(float),FDefaultDelegateUserPolicy,TFunction<bool __cdecl(float)> >::Execute+0x2f [e:\unrealengine\ue_main\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h @ 831]
29 Project_Unreal_Win64_Shipping!TDelegate<bool __cdecl(float),FDefaultDelegateUserPolicy>::Execute+0x1b [e:\unrealengine\ue_main\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl @ 580]
2a Project_Unreal_Win64_Shipping!FTicker::FElement::Fire+0x43 [e:\unrealengine\ue_main\engine\source\runtime\core\private\containers\ticker.cpp @ 127]
2b Project_Unreal_Win64_Shipping!FTicker::Tick+0x26a [e:\unrealengine\ue_main\engine\source\runtime\core\private\containers\ticker.cpp @ 92]
2c Project_Unreal_Win64_Shipping!FEngineLoop::Tick+0xdd1 [e:\unrealengine\ue_main\engine\source\runtime\launch\private\launchengineloop.cpp @ 5133]
2d Project_Unreal_Win64_Shipping!EngineTick+0xc [e:\unrealengine\ue_main\engine\source\runtime\launch\private\launch.cpp @ 62]
2e Project_Unreal_Win64_Shipping!GuardedMain+0x35f [e:\unrealengine\ue_main\engine\source\runtime\launch\private\launch.cpp @ 178]
2f Project_Unreal_Win64_Shipping!GuardedMainWrapper+0x1a [e:\unrealengine\ue_main\engine\source\runtime\launch\private\windows\launchwindows.cpp @ 137]
30 Project_Unreal_Win64_Shipping!LaunchWindowsStartup+0x1a4 [e:\unrealengine\ue_main\engine\source\runtime\launch\private\windows\launchwindows.cpp @ 273]
31 Project_Unreal_Win64_Shipping!WinMain+0x14 [e:\unrealengine\ue_main\engine\source\runtime\launch\private\windows\launchwindows.cpp @ 320]
32 Project_Unreal_Win64_Shipping!invoke_main+0x21 [d:\a01\_work\12\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl @ 102]
33 Project_Unreal_Win64_Shipping!__scrt_common_main_seh+0x106 [d:\a01\_work\12\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl @ 288]
34 kernel32!BaseThreadInitThunk+0x10
35 ntdll!RtlUserThreadStart+0x2b