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.

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 )

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.
by Guillaume R. (Audiokinetic) (10.3k 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;
}
...