在 Audiokinetic 社区问答论坛上,用户可对 Wwise 和 Strata 相关问题进行提问和解答。如需从 Audiokinetic 技术支持团队获取答复,请务必使用技术支持申请单页面。

Crash in packaged unreal game on 2019.2.7, Asserting on AsyncLoadingThread.RecursionNotAllowed

+1 投票

Hi,
We recently migrated our project from version 2018.1.4 to 2019.2.7 and started using the event based packaging.
We got it working in the editor and in stand alone, but we get a crash on startup in packaged builds, both shipping and development.

I could not find any info about the crashes here on the forum but found a bugfix from version 2019.2.2 that could be related to the callstack we're seeing in the development build:
WG-48745 Fixed: Crash in packaged game with "Assertion failed: AsyncLoadingThread.RecursionNotAllowed"

I have appended the callstack from the development build, the assert that triggers is stripped in shipping so there it crashes further along with another assert.

Any info related to this crash or the bugfix mentioned would be appreciated.

Development Build:
Assertion failed: AsyncLoadingThread.RecursionNotAllowed.Increment() == 1 [File:D:/ws/SB-lowprio/UE4/Engine/Source/Runtime/CoreUObject/Private/Serialization/AsyncLoading.cpp] [Line: 3959]

FactoryGame!AssertFailedImplV() [d:\ws\sb-lowprio\ue4\engine\source\runtime\core\private\misc\assertionmacros.cpp:100]
FactoryGame!FDebug::CheckVerifyFailedImpl() [d:\ws\sb-lowprio\ue4\engine\source\runtime\core\private\misc\assertionmacros.cpp:450]
FactoryGame!FAsyncLoadingThread::ProcessAsyncLoading() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp:3984]
FactoryGame!FAsyncLoadingThread::TickAsyncThread() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp:4820]
FactoryGame!FAsyncLoadingThread::TickAsyncLoading() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp:4519]
FactoryGame!FAsyncLoadingThread::FlushLoading() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp:6979]
FactoryGame!LoadPackageInternal() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1111]
FactoryGame!LoadPackage() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1427]
FactoryGame!ResolveName() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:767]
FactoryGame!StaticLoadObjectInternal() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:829]
FactoryGame!StaticLoadObject() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:904]
FactoryGame!FStreamableManager::StreamInternal() [d:\ws\sb-lowprio\ue4\engine\source\runtime\engine\private\streamablemanager.cpp:1105]
FactoryGame!FStreamableManager::StartHandleRequests() [d:\ws\sb-lowprio\ue4\engine\source\runtime\engine\private\streamablemanager.cpp:1297]
FactoryGame!FStreamableManager::RequestAsyncLoad() [d:\ws\sb-lowprio\ue4\engine\source\runtime\engine\private\streamablemanager.cpp:1242]
FactoryGame!FStreamableManager::RequestAsyncLoad() [d:\ws\sb-lowprio\ue4\engine\source\runtime\engine\private\streamablemanager.cpp:1252]
FactoryGame!UAkAssetDataWithMedia::Load() [d:\ws\sb-lowprio\ue4\engine\plugins\wwise\source\akaudio\private\akassetbase.cpp:83]
FactoryGame!UAkAssetDataSwitchContainer::Load() [d:\ws\sb-lowprio\ue4\engine\plugins\wwise\source\akaudio\private\akaudioevent.cpp:76]
FactoryGame!AkEventBasedIntegrationBehavior::AkAudioEvent_Load() [d:\ws\sb-lowprio\ue4\engine\plugins\wwise\source\akaudio\private\integrationbehavior\akeventbasedintegrationbehavior.cpp:292]
FactoryGame!UObject::ConditionalPostLoad() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\uobject\obj.cpp:1071]
FactoryGame!FAsyncPackage::PostLoadObjects() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp:6357]
FactoryGame!FAsyncPackage::TickAsyncPackage() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp:5533]
FactoryGame!FAsyncLoadingThread::ProcessAsyncLoading() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp:4064]
FactoryGame!FAsyncLoadingThread::TickAsyncThread() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp:4820]
FactoryGame!FAsyncLoadingThread::TickAsyncLoading() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp:4519]
FactoryGame!FAsyncLoadingThread::FlushLoading() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\serialization\asyncloading.cpp:6979]
FactoryGame!LoadPackageInternal() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1111]
FactoryGame!LoadPackage() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:1427]
FactoryGame!ResolveName() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:767]
FactoryGame!StaticLoadObjectInternal() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:829]
FactoryGame!StaticLoadObject() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:904]
FactoryGame!StaticLoadClass() [d:\ws\sb-lowprio\ue4\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:937]
FactoryGame!UFGGlobalSettings::Initialize() [d:\ws\sb-lowprio\ue4\games\factorygame\source\factorygame\private\fgglobalsettings.cpp:46]
FactoryGame!FFactoryGameModule::StartupModule() [d:\ws\sb-lowprio\ue4\games\factorygame\source\factorygame\private\factorygamemodule.cpp:22]
FactoryGame!FModuleManager::LoadModuleWithFailureReason() [d:\ws\sb-lowprio\ue4\engine\source\runtime\core\private\modules\modulemanager.cpp:423]
FactoryGame!FModuleDescriptor::LoadModulesForPhase() [d:\ws\sb-lowprio\ue4\engine\source\runtime\projects\private\moduledescriptor.cpp:561]
FactoryGame!FProjectManager::LoadModulesForProject() [d:\ws\sb-lowprio\ue4\engine\source\runtime\projects\private\projectmanager.cpp:63]
FactoryGame!FEngineLoop::LoadStartupModules() [d:\ws\sb-lowprio\ue4\engine\source\runtime\launch\private\launchengineloop.cpp:3910]
FactoryGame!FEngineLoop::PreInitPostStartupScreen() [d:\ws\sb-lowprio\ue4\engine\source\runtime\launch\private\launchengineloop.cpp:3272]
FactoryGame!GuardedMain() [d:\ws\sb-lowprio\ue4\engine\source\runtime\launch\private\launch.cpp:127]
FactoryGame!GuardedMainWrapper() [d:\ws\sb-lowprio\ue4\engine\source\runtime\launch\private\windows\launchwindows.cpp:137]
FactoryGame!WinMain() [d:\ws\sb-lowprio\ue4\engine\source\runtime\launch\private\windows\launchwindows.cpp:268]
FactoryGame!__scrt_common_main_seh() [d:\agent\_work\2\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
kernel32
ntdll

最新提问 12月 8, 2020 分类:General Discussion | 用户: Gustav L. (250 分)

1个回答

+2 投票
Hi again, a followup on the issue, we have found what causes it and found a fix for it in our game.

The issue:
It was caused by a TryLoadClass we called in our game StartupModule, the class was a custom global settings class that contained some references to audio events.

The solution:
We moved this settings class to be loaded when first accessed instead of StartupModule, this postponed the call to TryLoadClass enough for it to not happen during the game module's startup.

Although we found a solution in our case we're still not sure if this is the expected behavior or if it is a bug that events cannot be loaded during the game module's startup call?
But If anyone else runs into this issue I hope this provides enough information for you to find a solution for your case.
最新回答 12月 11, 2020 用户: Gustav L. (250 分)
Thanks for sharing this.

It was something similar for me. I tried to load an audio asset using LoadObject<UAkAudioEvent>, but the .uasset file did not exist.
Apparently this is a issue still, or again. I had no problem building until I updated to 2021.1.6.774. I even went to 2021.7.7796 but it still has the crash.
Is there something I need to do to fix this? Or is it a issue that needs to be taken care of by Wwise in the next update?

Edit:
Apparently I had a race condition causing it. I had a hard coded file path which was not getting loaded in time. Removed it to be a blueprint variable fixed the problem.
...