Cooked games will hang on startup when using the Oscilloscope data interface due to an indefinite wait in FNiagaraSubmixListener::UnregisterFromSubmix
When setting GCVarEnableAudioCommandLogging to 1 the message changed to:
LogAudio: Display: Waited 25142.10 ms for audio thread. (Current Task: , Longest task: 0.00 ms)
RESULT
The game will launch with a black screen and indefinitely print: LogAudio: Display: Waited 22330.441406 ms for audio thread.
> R426-Win64-Debug.exe!FAudioCommandFence::Wait(bool bProcessGameThreadTasks) Line 565 C+> R426-Win64-Debug.exe!FAudioCommandFence::Wait(bool bProcessGameThreadTasks) Line 565 C R426-Win64-Debug.exe!FNiagaraSubmixListener::UnregisterFromSubmix() Line 86 C R426-Win64-Debug.exe!FNiagaraSubmixListener::~FNiagaraSubmixListener() Line 51 C [External Code] R426-Win64-Debug.exe!TSparseArray<TSetElement<TTuple<unsigned int,TUniquePtr<FNiagaraSubmixListener,TDefaultDelete<FNiagaraSubmixListener>>>>,TSparseArrayAllocator<TSizedDefaultAllocator<32>,FDefaultBitArrayAllocator>>::RemoveAt(int Index, int Count) Line 299 C R426-Win64-Debug.exe!TSet<TTuple<unsigned int,TUniquePtr<FNiagaraSubmixListener,TDefaultDelete<FNiagaraSubmixListener>>>,TDefaultMapHashableKeyFuncs<unsigned int,TUniquePtr<FNiagaraSubmixListener,TDefaultDelete<FNiagaraSubmixListener>>,0>,FDefaultSetAllocator>::Remove(FSetElementId ElementId) Line 770 C R426-Win64-Debug.exe!TSet<TTuple<unsigned int,TUniquePtr<FNiagaraSubmixListener,TDefaultDelete<FNiagaraSubmixListener>>>,TDefaultMapHashableKeyFuncs<unsigned int,TUniquePtr<FNiagaraSubmixListener,TDefaultDelete<FNiagaraSubmixListener>>,0>,FDefaultSetAllocator>::Remove(const unsigned int Key) Line 916 C R426-Win64-Debug.exe!FNiagaraDataInterfaceProxyOscilloscope::UnregisterFromAllAudioDevices::_l5::<lambda>(unsigned int DeviceId, FAudioDevice * InDevice) Line 76 C R426-Win64-Debug.exe!UE4Function_Private::TFunctionRefCaller<void <lambda>(unsigned int, FAudioDevice *),void __cdecl(unsigned int,FAudioDevice *)>::Call(void * Obj, unsigned int & <Params_0>, FAudioDevice * & <Params_1>) Line 549 C R426-Win64-Debug.exe!UE4Function_Private::TFunctionRefBase<UE4Function_Private::TFunctionStorage<1>,void __cdecl(unsigned int,FAudioDevice *)>::operator()(unsigned int <Params_0>, FAudioDevice * <Params_1>) Line 677 C R426-Win64-Debug.exe!FAudioDeviceManager::IterateOverAllDevices(TUniqueFunction<void __cdecl(unsigned int,FAudioDevice *)> ForEachDevice) Line 915 C R426-Win64-Debug.exe!FNiagaraDataInterfaceProxyOscilloscope::UnregisterFromAllAudioDevices(USoundSubmix * Submix) Line 80 C R426-Win64-Debug.exe!FNiagaraDataInterfaceProxyOscilloscope::OnUpdateSubmix(USoundSubmix * Submix) Line 91 C R426-Win64-Debug.exe!UNiagaraDataInterfaceAudioOscilloscope::PostLoad() Line 435 C R426-Win64-Debug.exe!UObject::ConditionalPostLoad() Line 1086 C R426-Win64-Debug.exe!FAsyncPackage::PostLoadObjects() Line 6410 C R426-Win64-Debug.exe!FAsyncPackage::TickAsyncPackage(bool InbUseTimeLimit, bool InbUseFullTimeLimit, float & InOutTimeLimit, FFlushTree * FlushTree) Line 5579 C R426-Win64-Debug.exe!FAsyncLoadingThread::ProcessAsyncLoading(int & OutPackagesProcessed, bool bUseTimeLimit, bool bUseFullTimeLimit, float TimeLimit, FFlushTree * FlushTree) Line 4099 C R426-Win64-Debug.exe!FAsyncLoadingThread::TickAsyncThread(bool bUseTimeLimit, bool bUseFullTimeLimit, float TimeLimit, bool & bDidSomething, FFlushTree * FlushTree) Line 4855 C R426-Win64-Debug.exe!FAsyncLoadingThread::TickAsyncLoading(bool bUseTimeLimit, bool bUseFullTimeLimit, float TimeLimit, FFlushTree * FlushTree) Line 4555 C R426-Win64-Debug.exe!FAsyncLoadingThread::FlushLoading(int PackageID) Line 7008 C R426-Win64-Debug.exe!FlushAsyncLoading(int PackageID) Line 603 C R426-Win64-Debug.exe!LoadPackageInternal(UPackage * InOuter, const wchar_t * InLongPackageNameOrFilename, unsigned int LoadFlags, FLinkerLoad * ImportLinker, FArchive * InReaderOverride, const FLinkerInstancingContext * InstancingContext) Line 1137 C R426-Win64-Debug.exe!LoadPackage(UPackage * InOuter, const wchar_t * InLongPackageName, unsigned int LoadFlags, FArchive * InReaderOverride, const FLinkerInstancingContext * InstancingContext) Line 1458 C R426-Win64-Debug.exe!UEngine::LoadMap(FWorldContext & WorldContext, FURL URL, UPendingNetGame * Pending, FString & Error) Line 12864 C R426-Win64-Debug.exe!UEngine::Browse(FWorldContext & WorldContext, FURL URL, FString & Error) Line 12302 C R426-Win64-Debug.exe!UGameInstance::StartGameInstance() Line 580 C R426-Win64-Debug.exe!UGameEngine::Start() Line 1167 C R426-Win64-Debug.exe!FEngineLoop::Init() Line 3990 C R426-Win64-Debug.exe!EngineInit() Line 52 C R426-Win64-Debug.exe!GuardedMain(const wchar_t * CmdLine) Line 153 C R426-Win64-Debug.exe!WinMain(HINSTANCE_ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow) Line 257 C+ [External Code]
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-104341 in the post.
6 |
Component | UE - Audio |
---|---|
Target Fix | 5.0 |
Created | Dec 9, 2020 |
---|---|
Resolved | Jun 23, 2021 |
Updated | Dec 1, 2022 |