ShaderLab crash in 2021.2.11

Hello, I’m seeing a crash in windows builds. Looking at the crash dump and running analyze in WinDbg I can see the error is related to ShaderLab. The game uses Better Lit Shaders, and for a reason or another (still investigating, quite probably my fault) the initial variants before stripping is really huge, in the hundreds of millions.
After stripping, it gets to about 50k variants per shader.

Here is the crash dmp and the analyze result:

CONTEXT:  (.ecxr)
eax=00000000 ebx=00002600 ecx=003ffff0 edx=5370e33c esi=00000000 edi=5370e140
eip=52493206 esp=1684f870 ebp=1684f8cc iopl=0         nv up ei pl nz na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00010206
UnityPlayer!DynamicHeapAllocator::CreateTLSFBlock+0x91 [inlined in UnityPlayer!DynamicHeapAllocator::Allocate+0x226]:
52493206 0f1101          movups  xmmword ptr [ecx],xmm0 ds:002b:003ffff0=????????????????????????????????
Resetting default scope

EXCEPTION_RECORD:  (.exr -1)
ExceptionAddress: 52493206 (UnityPlayer!DynamicHeapAllocator::CreateTLSFBlock+0x00000091)
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 00000001
   Parameter[1]: 003ffff0
Attempt to write to address 003ffff0

PROCESS_NAME:  TimeRaiders.exe

WRITE_ADDRESS:  003ffff0

ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%p referenced memory at 0x%p. The memory could not be %s.

EXCEPTION_CODE_STR:  c0000005

EXCEPTION_PARAMETER1:  00000001

EXCEPTION_PARAMETER2:  003ffff0

STACK_TEXT:
1684f8cc 524976a5     00002596 00000010 00000010 UnityPlayer!DynamicHeapAllocator::Allocate+0x226
1684f8e8 5249354d     00002596 00000010 00002596 UnityPlayer!DualThreadAllocator<DynamicHeapAllocator>::Allocate+0x75
1684f904 52496f31     00002596 00000001 0000002b UnityPlayer!MemoryManager::Allocate+0xed
1684f924 526d6492     00002596 00000001 0000002b UnityPlayer!malloc_internal+0x21
1684f950 5247fd82     00002596 00000001 00000001 UnityPlayer!dynamic_array_detail::dynamic_array_data::resize_buffer+0x72
1684f968 526b25ce     00002596 00000001 168cf8d0 UnityPlayer!dynamic_array<unsigned char,0>::resize_buffer_nocheck+0x12
1684f984 5268fa88     168cf8e8 e9e887c0 00006172 UnityPlayer!ShaderLab::SubProgram::SubProgram+0x3e
1684fa08 5268f8d9     168cf8d0 1f958290 30223cc0 UnityPlayer!ShaderLab::SubProgram::CreateFromSerializedSubProgram+0x2f8
1684fa98 5268f3be     168cf8d0 1f958290 30223cc0 UnityPlayer!ShaderLab::SubProgram::CreateFromSerializedSubProgram+0x149
1684faec 5268f27c     1f958280 1684fb28 00000002 UnityPlayer!ShaderLab::Program::CreateFromSerializedProgram+0xce
1684fb50 5269016f     1f956d90 1f941740 0000002b UnityPlayer!ShaderLab::Pass::CreateFromSerializedPass+0x28c
1684fb98 5268f73e     1f956960 1f941740 1f941740 UnityPlayer!ShaderLab::SubShader::CreateFromSerializedSubShaderThreaded+0x20f
1684fc00 52dbc09f     00000000 1f94179c 00000000 UnityPlayer!ShaderLab::IntShader::CreateFromSerializedShaderThreaded+0x2ce
1684fc40 52dbba47     04f02730 527c0628 1684fd0c UnityPlayer!Shader::CreateFromParsedFormThreaded+0x16f
1684fc48 527c0628     1684fd0c 00000001 04f02730 UnityPlayer!Shader::AwakeFromLoadThreaded+0x57
1684fc6c 527bf741     0000027a 00000002 00e2a840 UnityPlayer!PersistentManager::ReadAndActivateObjectThreaded+0x168
1684fcc8 52667195     00001ea8 000002f1 1684fd0c UnityPlayer!PersistentManager::LoadObjectsThreaded+0x1a1
1684fdac 52667b25     53716df0 0599d858 0599d7c0 UnityPlayer!LoadSceneOperation::Perform+0x195
1684fdcc 52667de5     07022b20 0599d7c0 53706370 UnityPlayer!PreloadManager::ProcessSingleOperation+0x115
1684fe08 526ee215     0599d7c0 0599d7c0 07022b20 UnityPlayer!PreloadManager::Run+0x135
1684fe4c 76d3fa29     0599d7c0 76d3fa10 1684feb8 UnityPlayer!Thread::RunThreadWrapper+0xb5
1684fe5c 776d76b4     0599d7c0 fd89ef27 00000000 kernel32!BaseThreadInitThunk+0x19
1684feb8 776d7684     ffffffff 776f741f 00000000 ntdll!__RtlUserThreadStart+0x2f
1684fec8 00000000     526ee160 0599d7c0 00000000 ntdll!_RtlUserThreadStart+0x1b


FAULTING_SOURCE_LINE:  C:\buildslave\unity\build\Runtime\Allocator\DynamicHeapAllocator.cpp

FAULTING_SOURCE_FILE:  C:\buildslave\unity\build\Runtime\Allocator\DynamicHeapAllocator.cpp

FAULTING_SOURCE_LINE_NUMBER:  492

FAULTING_SOURCE_CODE:
No source found for 'C:\buildslave\unity\build\Runtime\Allocator\DynamicHeapAllocator.cpp'


SYMBOL_NAME:  UnityPlayer!DynamicHeapAllocator::Allocate+226

MODULE_NAME: UnityPlayer

IMAGE_NAME:  UnityPlayer.dll

STACK_COMMAND:  ~71s; .ecxr ; kb

FAILURE_BUCKET_ID:  INVALID_POINTER_WRITE_c0000005_UnityPlayer.dll!DynamicHeapAllocator::Allocate

OS_VERSION:  10.0.19041.1

BUILDLAB_STR:  vb_release

OSPLATFORM_TYPE:  x86

OSNAME:  Windows 10

IMAGE_VERSION:  2021.2.11.3247

FAILURE_ID_HASH:  {73089ea4-bb8e-04c8-cb99-76dd5aeb2467}

Followup:     MachineOwner
---------

7915378–1009780–crash.zip (33.2 KB)

Hi!
It would be great if you could report a bug.
Thank you!

Done, case 1405266.
Thank you!

2 Likes