Community Q&A

Welcome to Audiokinetic’s community-driven Q&A forum. This is the place where Wwise and Strata users help each other out. For direct help from our team, please use the Support Tickets page. To report a bug, use the Bug Report option in the Audiokinetic Launcher. (Note that Bug Reports submitted to the Q&A forum will be rejected. Using our dedicated Bug Report system ensures your report is seen by the right people and has the best chance of being fixed.)

To get the best answers quickly, follow these tips when posting a question:

  • Be Specific: What are you trying to achieve, or what specific issue are you running into?
  • Include Key Details: Include details like your Wwise and game engine versions, operating system, etc.
  • Explain What You've Tried: Let others know what troubleshooting steps you've already taken.
  • Focus on the Facts: Describe the technical facts of your issue. Focusing on the problem helps others find a solution quickly.

+1 vote

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

in General Discussion by Gustav L. (250 points)

1 Answer

+2 votes
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.
by Gustav L. (250 points)
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.
...