Audiokinetic's Community Q&A is the forum where users can ask and answer questions within the Wwise and Strata communities. If you would like to get an answer from Audiokinetic's Technical support team, make sure you use the Support Tickets page.

0 votes

Unreal Integration Crash

after switching to auto defined banks we started seeing this intermittent crash.

we saw in the 2024.1.7 there was a potential fix, so we took it.

  • WG-77946 Fixed: Possible crash caused by using TQueue for ExecutionQueue and DeferredQueue.

there were changes to FWwiseExecutionQueue, which is in the callstack below.

we are still seeing the crash.
any official response would be appreciated.
and/or any known workarounds would be appreciated.
please let us know if this is still a known issue.crying



[ 00 ] FIoBatch::{ctor}(FIoDispatcherImpl &) ( IoDispatcher.cpp:1005 ) [ 01 ] FIoDispatcher::NewBatch() ( IoDispatcher.cpp:920 ) [ 02 ] UE::BulkData::Private::FChunkRequest::Issue(FIoChunkId,FIoReadOptions,int) ( BulkDataStreaming.cpp:95 ) [ 03 ] UE::BulkData::Private::CreateStreamingRequest(UE::BulkData::Private::FBulkMetaData const &,FIoChunkId const &,__int64,__int64,EAsyncIOPriorityAndFlags,TFunction<void __cdecl(bool,IBulkDataIORequest *)> *,unsigned char *) ( BulkDataStreaming.cpp:444 ) [ 04 ] FBulkData::CreateStreamingRequest(__int64,__int64,EAsyncIOPriorityAndFlags,TFunction<void __cdecl(bool,IBulkDataIORequest *)> *,unsigned char *) ( BulkData.cpp:1608 ) [ 05 ] FWwiseBulkDataCacheHandle::ReadData(unsigned char *,__int64,__int64,EAsyncIOPriorityAndFlags,TUniqueFunction<void __cdecl(bool)> &&) ( WwiseBulkDataCacheHandle.cpp:193 ) [ 06 ] IWwiseFileCacheHandle::ReadAkData(AkIoHeuristics const &,AkAsyncIOTransferInfo &,TUniqueFunction<void __cdecl(AkAsyncIOTransferInfo *,enum AKRESULT)> &&) ( WwiseFileCache.cpp:59 ) [ 07 ] FWwiseStreamedMediaFileState::ProcessRead(AkFileDesc &,AkIoHeuristics const &,AkAsyncIOTransferInfo &,TUniqueFunction<void __cdecl(AkAsyncIOTransferInfo *,enum AKRESULT)> &&) ( WwiseMediaFileState.cpp:364 ) [ 08 ] FWwiseIOHookImpl::Read(AkFileDesc &,AkIoHeuristics const &,AkAsyncIOTransferInfo &) ( WwiseIOHookImpl.cpp:187 ) [ 09 ] `FWwiseIOHookImpl::BatchRead'::`2'::<lambda_1>::operator()() ( WwiseIOHookImpl.cpp:234 ) [ 10 ] UE::Core::Private::Function::TFunctionRefBase<UE::Core::Private::Function::TFunctionStorage<1>,void __cdecl(void)>::operator()() ( Function.h:470 ) [ 11 ] FWwiseExecutionQueue::ProcessWork() ( WwiseExecutionQueue.cpp:411 ) [ 12 ] FWwiseExecutionQueue::Work() ( WwiseExecutionQueue.cpp:335 ) [ 13 ] UE::Core::Private::Function::TFunctionRefBase<UE::Core::Private::Function::TFunctionStorage<1>,void __cdecl(void)>::operator()() ( Function.h:470 ) [ 14 ] Invoke(TUniqueFunction<void __cdecl(void)> &) ( Invoke.h:47 ) [ 15 ] UE::Tasks::Private::TExecutableTaskBase<TUniqueFunction<void (void)>,void,void>::ExecuteTask() ( TaskPrivate.h:876 ) [ 16 ] UE::Trace::FChannel::operator|(UE::Trace::FChannel const &) ( Channel.inl:29 ) [ 17 ] TaskTrace::FTaskTimingEventScope::{ctor}(unsigned __int64) ( TaskTrace.cpp:301 ) [ 18 ] UE::Tasks::Private::FTaskBase::TryExecuteTask() ( TaskPrivate.h:505 ) [ 19 ] UE::Tasks::Private::FTaskBase::Init::__l2::<lambda_1>::operator()() ( TaskPrivate.h:185 ) [ 20 ] LowLevelTasks::FTask::Init::__l5::<lambda_1>::operator()(bool const) ( Task.h:499 ) [ 21 ] Invoke(LowLevelTasks::FTask::Init::__l5::<lambda_1> &,bool &) ( Invoke.h:47 ) [ 22 ] LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::TTaskDelegateImpl<`LowLevelTasks::FTask::Init<`UE::Tasks::Private::FTaskBase::Init'::`2'::<lambda_1> >'::`5'::<lambda_1>,0>::Call(void *,bool) ( TaskDelegate.h:162 ) [ 23 ] LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * (bool),48>::TTaskDelegateImpl<`LowLevelTasks::FTask::Init<`UE::Tasks::Private::FTaskBase::Init'::`2'::<lambda_1> >'::`5'::<lambda_1>,0>::CallAndMove(LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48> &,void *,unsigned int,bool) ( TaskDelegate.h:171 ) [ 24 ] LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::CallAndMove(LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48> &,bool) ( TaskDelegate.h:308 ) [ 25 ] LowLevelTasks::FTask::ExecuteTask() ( Task.h:627 ) [ 26 ] FCpuProfilerTrace::FEventScope::{ctor}(unsigned int &,char const *,bool,char const *,unsigned int) ( CpuProfilerTrace.h:153 ) [ 27 ] LowLevelTasks::FScheduler::ExecuteTask(LowLevelTasks::FTask *) ( Scheduler.cpp:244 ) [ 28 ] LowLevelTasks::FScheduler::TryExecuteTaskFrom(LowLevelTasks::Private::FWaitEvent *,LowLevelTasks::Private::TLocalQueueRegistry<1024,1024>::TLocalQueue *,LowLevelTasks::Private::FOutOfWork &,bool) ( Scheduler.cpp:457 ) [ 29 ] LowLevelTasks::FScheduler::WorkerLoop(LowLevelTasks::Private::FWaitEvent *,LowLevelTasks::Private::TLocalQueueRegistry<1024,1024>::TLocalQueue *,unsigned int,bool) ( Scheduler.cpp:514 ) [ 30 ] LowLevelTasks::FScheduler::WorkerMain(LowLevelTasks::Private::FWaitEvent *,LowLevelTasks::Private::TLocalQueueRegistry<1024,1024>::TLocalQueue *,unsigned int,bool) ( Scheduler.cpp:571 ) [ 31 ] `LowLevelTasks::FScheduler::CreateWorker'::`2'::<lambda_1>::operator()() ( Scheduler.cpp:75 ) [ 32 ] UE::Core::Private::Function::TFunctionRefBase<UE::Core::Private::Function::TFunctionStorage<1>,void __cdecl(void)>::operator()() ( Function.h:470 ) [ 33 ] FThreadImpl::Run() ( Thread.cpp:68 ) [ 34 ] FRunnableThreadWin::Run() ( WindowsRunnableThread.cpp:159 ) [ 35 ] FRunnableThreadWin::GuardedRun() ( WindowsRunnableThread.cpp:79 ) [ 36 ] BaseThreadInitThunk ( kernel32.dll ) [ 37 ] RtlUserThreadStart ( ntdll.dll )

ago in General Discussion by Kate (160 points)

1 Answer

0 votes
 
Best answer
This crash differs from the one we solved with WG-77946 in Wwise 2024.1.7.

We are aware of this one, and WG-79637 tracks it. We hope to have a fix ready for the next minor release, Wwise 2024.1.8.
ago by Guillaume R. (Audiokinetic) (9.6k points)
great! thank you for the reply and confirming.

we added the following to see if it mitigates anything.

in both implementations of ::CanProcessFileOp() const
{
    if (UNLIKELY(State != EState::Loaded))
    {
        UE_LOG(LogWwiseFileHandler, Error, TEXT("FWwiseStreamedExternalSourceFileState::CanProcessFileOp %" PRIu32 " (%s): IO Hook asked for a file operation, but state is not ready."), MediaId, *PackagedFile.PathName.ToString());
        return false;
    }

// custom code start   
    if (UNLIKELY(!FIoDispatcher::IsInitialized()))
    {
        UE_LOG(LogWwiseFileHandler, Error, TEXT("FWwiseStreamedExternalSourceFileState::CanProcessFileOp %" PRIu32 " (%s): IO Hook asked for a file operation, but FIoDispatcher is not initialized."), MediaId, *PackagedFile.PathName.ToString());
        return false;
    }
// custom code end
   
    return true;
}
...