Description

Large texture crashes during Oodle compression with "-stompmalloc". It appears to be an internal Oodle error.

Also tested on //UE5/Release-5.5/, CL: 37463908

Steps to Reproduce

1. Download the Licensee's test project (see addl info URL)
2. Launch the editor with debugger attached, and the command-line option: "-stompmalloc"
3. Open the texture "/Game/T_SKY_DC_Main_Comp_1"
4. If it does not immediately crash, enable the setting "Compress Without Alpha" to force re-compression
5. Observe the Access violation exception (segfault) from inside of the Oodle SDK.

Callstack

Callstacks.txt

    1. Callstack: 5.4, `EmptyProj -stompmalloc -onethread`

Exception thrown at 0x00007FFC4C3ECDBA (oo2tex_win64_2.9.12.dll) in UnrealEditor.exe: 0xC0000005: Access violation reading location 0x000001F50B801000.

```
oo2tex_win64_2.9.12.dll!00007ffc4c3ecdba() Unknown
oo2tex_win64_2.9.12.dll!00007ffc4c3ecb76() Unknown
oo2tex_win64_2.9.12.dll!00007ffc4c3ef16c() Unknown
oo2tex_win64_2.9.12.dll!00007ffc4c3f0d1d() Unknown
oo2tex_win64_2.9.12.dll!00007ffc4c3f0a96() Unknown
oo2tex_win64_2.9.12.dll!00007ffc4c3f538f() Unknown
oo2tex_win64_2.9.12.dll!00007ffc4c3fd37e() Unknown
oo2tex_win64_2.9.12.dll!00007ffc4c3fc178() Unknown
oo2tex_win64_2.9.12.dll!00007ffc4c3f2b32() Unknown
oo2tex_win64_2.9.12.dll!00007ffc4c3f9366() Unknown
oo2tex_win64_2.9.12.dll!00007ffc4c3f95bd() Unknown
oo2tex_win64_2.9.12.dll!00007ffc4c3f295e() Unknown
oo2tex_win64_2.9.12.dll!00007ffc4c3c30f0() Unknown
> UnrealEditor-TextureFormatOodle.dll!FTextureFormatOodle::CompressImage::__l2::<lambda_1>::operator()(int Slice) Line 1598 C++
[Inline Frame] UnrealEditor-TextureFormatOodle.dll!UE::Core::Private::Function::TFunctionRefBase<UE::Core::Private::Function::FFunctionRefStoragePolicy,void __cdecl(int)>::operator()(int <Params_0>) Line 555 C++
[Inline Frame] UnrealEditor-TextureFormatOodle.dll!ParallelForImpl::CallBody(const TFunctionRef<void __cdecl(int)> &) Line 80 C++
UnrealEditor-TextureFormatOodle.dll!ParallelForImpl::ParallelForInternal<TFunctionRef<void _cdecl(int)>,`ParallelFor'::`2'::<lambda_1>,std::nullptr_t>(const wchar_t * DebugName, int Num, int MinBatchSize, TFunctionRef<void __cdecl(int)> Body, ParallelFor::_l2::<lambda_1> CurrentThreadWorkToDoBeforeHelping, EParallelForFlags Flags, const TArrayView<std::nullptr_t,int> & Contexts) Line 143 C++
[Inline Frame] UnrealEditor-TextureFormatOodle.dll!ParallelFor(const wchar_t *) Line 528 C++
UnrealEditor-TextureFormatOodle.dll!FTextureFormatOodle::CompressImage(const FImage & InImage, const FTextureBuildSettings & InBuildSettings, const UE::Math::TIntVector3<int> & InMip0Dimensions, int InMip0NumSlicesNoDepth, int InMipIndex, int InMipCount, TStringView<wchar_t> DebugTexturePathName, const bool bInHasAlpha, FCompressedImage2D & OutImage) Line 1559 C++
UnrealEditor-TextureFormatOodle.dll!ITextureFormat::CompressImageEx(const FImage * Images, const unsigned int NumImages, const FTextureBuildSettings & BuildSettings, const UE::Math::TIntVector3<int> & InMip0Dimensions, int InMip0NumSlicesNoDepth, int InMipIndex, int InMipCount, TStringView<wchar_t> DebugTexturePathName, bool bImageHasAlphaChannel, unsigned int ExtData, FCompressedImage2D & OutCompressedImage) Line 544 C++
UnrealEditor-TextureCompressor.dll!CompressMipChain::__l2::<lambda_1>::operator()(int MipBegin, int MipEnd) Line 3481 C++
UnrealEditor-TextureCompressor.dll!CompressMipChain(const ITextureFormat * TextureFormat, TArray<FImage,TSizedDefaultAllocator<32>> & MipChain, const FTextureBuildSettings & Settings, const bool bImageHasAlphaChannel, TStringView<wchar_t> DebugTexturePathName, TArray<FCompressedImage2D,TSizedDefaultAllocator<32>> & OutMips, unsigned int & OutNumMipsInTail, unsigned int & OutExtData) Line 3516 C++
UnrealEditor-TextureCompressor.dll!FTextureCompressorModule::BuildTexture(const TArray<FImage,TSizedDefaultAllocator<32>> & SourceMips, const TArray<FImage,TSizedDefaultAllocator<32>> & AssociatedNormalSourceMips, const FTextureBuildSettings & BuildSettings, TStringView<wchar_t> DebugTexturePathName, TArray<FCompressedImage2D,TSizedDefaultAllocator<32>> & OutTextureMips, unsigned int & OutNumMipsInTail, unsigned int & OutExtData, UE::TextureBuildUtilities::FTextureBuildMetadata * OutMetadata) Line 3929 C++
UnrealEditor-Engine.dll!DDC1_BuildTexture(ITextureCompressorModule * Compressor, IImageWrapperModule * ImageWrapper, const UTexture & Texture, const FString & TexturePathName, ETextureCacheFlags CacheFlags, FTextureSourceData & TextureData, FTextureSourceData & CompositeTextureData, const TArrayView<FTextureBuildSettings,int> & InBuildSettingsPerLayer, const FTexturePlatformData::FTextureEncodeResultMetadata & InBuildResultMetadata, const FString & KeySuffix, bool bReplaceExistingDDC, __int64 RequiredMemoryEstimate, FTexturePlatformData * DerivedData, __int64 & BytesCached, bool & bSucceeded) Line 837 C++
UnrealEditor-Engine.dll!FTextureCacheDerivedDataWorker::DoWork() Line 2086 C++
UnrealEditor-Engine.dll!FAsyncTaskBase::DoWork() Line 289 C++
UnrealEditor-Engine.dll!FAsyncTaskBase::DoThreadedWork() Line 313 C++
UnrealEditor-Core.dll!FQueuedThreadPoolWrapper::FScheduledWork::DoThreadedWork() Line 141 C++
UnrealEditor-Engine.dll!FQueuedThreadPoolWrapper::FScheduledWork::DoThreadedWork() Line 141 C++
[Inline Frame] UnrealEditor.exe!FQueuedLowLevelThreadPool::AddQueuedWork::__l2::<lambda_1>::operator()() Line 480 C++
UnrealEditor.exe!LowLevelTasks::FTask::Init::__l13::<lambda_1>::operator()(const bool bNotCanceled) Line 499 C++
[Inline Frame] UnrealEditor.exe!Invoke(LowLevelTasks::FTask::Init::__l13::<lambda_1> &) Line 47 C++
[Inline Frame] UnrealEditor.exe!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::TTaskDelegateImpl<`LowLevelTasks::FTask::Init<`FQueuedLowLevelThreadPool::AddQueuedWork'::`2'::<lambda_1>>'::`13'::<lambda_1>,0>::Call(void *) Line 162 C++
UnrealEditor.exe!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::TTaskDelegateImpl<`LowLevelTasks::FTask::Init<`FQueuedLowLevelThreadPool::AddQueuedWork'::`2'::<lambda_1>>'::`13'::<lambda_1>,0>::CallAndMove(LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48> & Destination, void * InlineData, unsigned int DestInlineSize, bool <Params_0>) Line 171 C++
[Inline Frame] UnrealEditor-Core.dll!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::CallAndMove(LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48> &) Line 308 C++
UnrealEditor-Core.dll!LowLevelTasks::FTask::ExecuteTask() Line 627 C++
UnrealEditor-Core.dll!LowLevelTasks::FScheduler::ExecuteTask(LowLevelTasks::FTask * InTask) Line 177 C++
[Inline Frame] UnrealEditor-Core.dll!LowLevelTasks::FScheduler::TryExecuteTaskFrom(LowLevelTasks::Private::FWaitEvent *) Line 362 C++
UnrealEditor-Core.dll!LowLevelTasks::FScheduler::WorkerMain(LowLevelTasks::Private::FWaitEvent * WorkerEvent, LowLevelTasks::Private::TLocalQueueRegistry<1024>::TLocalQueue * WorkerLocalQueue, unsigned int WaitCycles, bool bPermitBackgroundWork) Line 397 C++
[Inline Frame] UnrealEditor-Core.dll!LowLevelTasks::FScheduler::CreateWorker::__l2::<lambda>() Line 70 C++
[Inline Frame] UnrealEditor-Core.dll!Invoke(LowLevelTasks::FScheduler::CreateWorker::__l2::void <lambda>(void) &) Line 47 C++
UnrealEditor-Core.dll!UE::Core::Private::Function::TFunctionRefCaller<`LowLevelTasks::FScheduler::CreateWorker'::`2'::void <lambda>(void),void __cdecl(void)>::Call(void * Obj) Line 406 C++
[Inline Frame] UnrealEditor-Core.dll!UE::Core::Private::Function::TFunctionRefBase<UE::Core::Private::Function::TFunctionStorage<1>,void __cdecl(void)>::operator()() Line 555 C++
UnrealEditor-Core.dll!FThreadImpl::Run() Line 69 C++
UnrealEditor-Core.dll!FRunnableThreadWin::Run() Line 149 C++
UnrealEditor-Core.dll!FRunnableThreadWin::GuardedRun() Line 71 C++
[External Code]
```

    1. Callstack 5.5, `EmptyProj -stompmalloc -onethread`

Exception thrown at 0x00007FFC46FECDBA (oo2tex_win64_2.9.12.dll) in UnrealEditor.exe: 0xC0000005: Access violation reading location 0x000001F7F2076000.

```
oo2tex_win64_2.9.12.dll!00007ffc46fecdba() Unknown
oo2tex_win64_2.9.12.dll!00007ffc46fecb76() Unknown
oo2tex_win64_2.9.12.dll!00007ffc46fef16c() Unknown
oo2tex_win64_2.9.12.dll!00007ffc46ff0d1d() Unknown
oo2tex_win64_2.9.12.dll!00007ffc46ff0a96() Unknown
oo2tex_win64_2.9.12.dll!00007ffc46ff538f() Unknown
oo2tex_win64_2.9.12.dll!00007ffc46ffd37e() Unknown
oo2tex_win64_2.9.12.dll!00007ffc46ffc178() Unknown
oo2tex_win64_2.9.12.dll!00007ffc46ff2b32() Unknown
oo2tex_win64_2.9.12.dll!00007ffc46ff9366() Unknown
oo2tex_win64_2.9.12.dll!00007ffc46ff95bd() Unknown
oo2tex_win64_2.9.12.dll!00007ffc46ff295e() Unknown
oo2tex_win64_2.9.12.dll!00007ffc46fc30f0() Unknown
> UnrealEditor-TextureFormatOodle.dll!FTextureFormatOodle::CompressImage::__l2::<lambda_1>::operator()(int Slice) Line 1726 C++
[Inline Frame] UnrealEditor-TextureFormatOodle.dll!UE::Core::Private::Function::TFunctionRefBase<UE::Core::Private::Function::FFunctionRefStoragePolicy,void __cdecl(int)>::operator()(int <Params_0>) Line 470 C++
[Inline Frame] UnrealEditor-TextureFormatOodle.dll!ParallelForImpl::CallBody(const TFunctionRef<void __cdecl(int)> &) Line 80 C++
UnrealEditor-TextureFormatOodle.dll!ParallelForImpl::ParallelForInternal<TFunctionRef<void _cdecl(int)>,`ParallelFor'::`2'::<lambda_1>,std::nullptr_t>(const wchar_t * DebugName, int Num, int MinBatchSize, TFunctionRef<void __cdecl(int)> Body, ParallelFor::_l2::<lambda_1> CurrentThreadWorkToDoBeforeHelping, EParallelForFlags Flags, const TArrayView<std::nullptr_t,int> & Contexts) Line 143 C++
[Inline Frame] UnrealEditor-TextureFormatOodle.dll!ParallelFor(const wchar_t *) Line 528 C++
UnrealEditor-TextureFormatOodle.dll!FTextureFormatOodle::CompressImage(const FImage & InImage, const FTextureBuildSettings & InBuildSettings, const UE::Math::TIntVector3<int> & InMip0Dimensions, int InMip0NumSlicesNoDepth, int InMipIndex, int InMipCount, TStringView<wchar_t> DebugTexturePathName, const bool bInHasAlpha, FCompressedImage2D & OutImage) Line 1687 C++
UnrealEditor-TextureFormatOodle.dll!ITextureFormat::CompressImageEx(const FImage * Images, const unsigned int NumImages, const FTextureBuildSettings & BuildSettings, const UE::Math::TIntVector3<int> & InMip0Dimensions, int InMip0NumSlicesNoDepth, int InMipIndex, int InMipCount, TStringView<wchar_t> DebugTexturePathName, bool bImageHasAlphaChannel, unsigned int ExtData, FCompressedImage2D & OutCompressedImage) Line 599 C++
UnrealEditor-TextureCompressor.dll!CompressMipChain::__l2::<lambda_1>::operator()(int MipBegin, int MipEnd) Line 3551 C++
UnrealEditor-TextureCompressor.dll!CompressMipChain(const ITextureFormat * TextureFormat, TArray<FImage,TSizedDefaultAllocator<32>> & MipChain, const FTextureBuildSettings & Settings, const bool bImageHasAlphaChannel, TStringView<wchar_t> DebugTexturePathName, TArray<FCompressedImage2D,TSizedDefaultAllocator<32>> & OutMips, unsigned int & OutNumMipsInTail, unsigned int & OutExtData) Line 3593 C++
UnrealEditor-TextureCompressor.dll!FTextureCompressorModule::BuildTexture(TArray<FImage,TSizedDefaultAllocator<32>> & SourceMips, TArray<FImage,TSizedDefaultAllocator<32>> & AssociatedNormalSourceMips, const FTextureBuildSettings & BuildSettings, TStringView<wchar_t> DebugTexturePathName, TArray<FCompressedImage2D,TSizedDefaultAllocator<32>> & OutTextureMips, unsigned int & OutNumMipsInTail, unsigned int & OutExtData, UE::TextureBuildUtilities::FTextureBuildMetadata * OutMetadata) Line 4027 C++
UnrealEditor-Engine.dll!DDC1_BuildTexture(ITextureCompressorModule * Compressor, IImageWrapperModule * ImageWrapper, const UTexture & Texture, const FString & TexturePathName, ETextureCacheFlags CacheFlags, FTextureSourceData & TextureData, FTextureSourceData & CompositeTextureData, const TArrayView<FTextureBuildSettings,int> & InBuildSettingsPerLayer, const FTexturePlatformData::FTextureEncodeResultMetadata & InBuildResultMetadata, const FString & KeySuffix, bool bReplaceExistingDDC, __int64 RequiredMemoryEstimate, FTexturePlatformData * DerivedData, __int64 & BytesCached, bool & bSucceeded) Line 1090 C++
UnrealEditor-Engine.dll!FTextureCacheDerivedDataWorker::DoWork() Line 2052 C++
UnrealEditor-Engine.dll!FAsyncTaskBase::DoWork() Line 289 C++
UnrealEditor-Engine.dll!FAsyncTaskBase::DoThreadedWork() Line 313 C++
UnrealEditor-Core.dll!FQueuedThreadPoolWrapper::FScheduledWork::DoThreadedWork() Line 142 C++
UnrealEditor-Engine.dll!FQueuedThreadPoolWrapper::FScheduledWork::DoThreadedWork() Line 142 C++
[Inline Frame] UnrealEditor.exe!FQueuedLowLevelThreadPool::AddQueuedWork::__l2::<lambda_1>::operator()() Line 484 C++
UnrealEditor.exe!LowLevelTasks::FTask::Init::__l13::<lambda_1>::operator()(const bool bNotCanceled) Line 499 C++
[Inline Frame] UnrealEditor.exe!Invoke(LowLevelTasks::FTask::Init::__l13::<lambda_1> &) Line 47 C++
[Inline Frame] UnrealEditor.exe!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::TTaskDelegateImpl<`LowLevelTasks::FTask::Init<`FQueuedLowLevelThreadPool::AddQueuedWork'::`2'::<lambda_1>>'::`13'::<lambda_1>,0>::Call(void *) Line 162 C++
UnrealEditor.exe!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::TTaskDelegateImpl<`LowLevelTasks::FTask::Init<`FQueuedLowLevelThreadPool::AddQueuedWork'::`2'::<lambda_1>>'::`13'::<lambda_1>,0>::CallAndMove(LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48> & Destination, void * InlineData, unsigned int DestInlineSize, bool <Params_0>) Line 171 C++
[Inline Frame] UnrealEditor-Core.dll!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::CallAndMove(LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48> &) Line 308 C++
UnrealEditor-Core.dll!LowLevelTasks::FTask::ExecuteTask() Line 627 C++
UnrealEditor-Core.dll!LowLevelTasks::FScheduler::ExecuteTask(LowLevelTasks::FTask * InTask) Line 267 C++
[Inline Frame] UnrealEditor-Core.dll!LowLevelTasks::FScheduler::TryExecuteTaskFrom(LowLevelTasks::Private::FWaitEvent *) Line 457 C++
UnrealEditor-Core.dll!LowLevelTasks::FScheduler::WorkerLoop(LowLevelTasks::Private::FWaitEvent * WorkerEvent, LowLevelTasks::Private::TLocalQueueRegistry<1024,1024>::TLocalQueue * WorkerLocalQueue, unsigned int WaitCycles, bool bPermitBackgroundWork) Line 514 C++
[Inline Frame] UnrealEditor-Core.dll!LowLevelTasks::FScheduler::WorkerMain(LowLevelTasks::Private::FWaitEvent * WorkerEvent, LowLevelTasks::Private::TLocalQueueRegistry<1024,1024>::TLocalQueue * WorkerLocalQueue, unsigned int WaitCycles, bool bPermitBackgroundWork) Line 571 C++
UnrealEditor-Core.dll!LowLevelTasks::FScheduler::CreateWorker::__l2::<lambda>() Line 75 C++
[Inline Frame] UnrealEditor-Core.dll!UE::Core::Private::Function::TFunctionRefBase<UE::Core::Private::Function::TFunctionStorage<1>,void __cdecl(void)>::operator()() Line 470 C++
UnrealEditor-Core.dll!FThreadImpl::Run() Line 69 C++
UnrealEditor-Core.dll!FRunnableThreadWin::Run() Line 159 C++
UnrealEditor-Core.dll!FRunnableThreadWin::GuardedRun() Line 71 C++
[External Code]
```

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-229064 in the post.

0
Login to Vote

Fixed
ComponentRAD
Affects Versions5.55.4.4
Target Fix5.6
Fix Commit37662774
CreatedOct 29, 2024
ResolvedOct 31, 2024
UpdatedNov 25, 2024
View Jira Issue