edit: Did some more tests, see my comments below. Issue is caused when calling DynamicGI.UpdateEnvironment(), when this call was removed the crash happened at a different stage with an different, unidentified shader.
Our application crashes on startup on iOS for users that have recently upgraded to iOS 16. Logs seem to indicate that shader instantiation is for Reflection Probes is failing. Is this a known issue and is there a workaround available?
The application and scene seem to load, as initial game logs happen just before the crash.
Same model iPhone (12) on iOS 15.6 works correctly
Using Unity 2022.1.7f1
TypeError: null is not an object (evaluating 'GL.shaders[id].shaderType=shaderType&1?\"vs\":\"fs\"')
Mozilla/5.0 (iPhone; CPU iPhone OS 16_0_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1
Safari 16 on iOS 16, Apple iPhone
_glCreateShader@https://redacted/Build/61bef524643e02b1f673f344506a61f0.js.gz:3:238402
wasm-stub@[wasm code]
.wasm-function[GlslGpuProgramGLES::CompileProgramImpl(unsigned int&, core::basic_string > const&, core::basic_string > const&, core::basic_string > const&, core::basic_string > const&, core::basic_string > const&, core::basic_string > const&, ShaderChannelMask&, int, unsigned int, int*, int*)]@[wasm code]
.wasm-function[GfxDevice::CreateGpuProgram(ShaderGpuProgramType, dynamic_array const&, CreateGpuProgramOutput&)]@[wasm code]
.wasm-function[ShaderLab::Program::GetMatchingSubProgram(Shader const*, ShaderLab::Pass const*, keywords::LocalKeywordState const&, unsigned int, keywords::LocalKeywordState*, ShaderSnippetResult&, AsyncShaderCompilationMode, bool, int, int) const]@[wasm code]
.wasm-function[ShaderLab::ShaderState::FindSubProgramsToUse(Shader const*, ShaderLab::Pass const*, ShaderLab::SubPrograms&, ShaderPassContext const&, keywords::LocalKeywordState const&, bool, int, int) const]@[wasm code]
.wasm-function[ShaderLab::Pass::ApplyPass(unsigned int, ShaderPropertySheet const*, ShaderPassContext&, keywords::LocalKeywordState const&, Shader*, int, int, ShaderLab::GrabPasses const*, ShaderLab::SubPrograms*, DeviceRenderStateBlock const*, ShaderLab::Pass*, ShaderLab::Pass*)]@[wasm code]
.wasm-function[ApplyMaterialPass(SharedMaterialData const&, ShaderPassContext&, Shader*, ShaderLab::Pass*, int, int, ShaderLab::GrabPasses const*, ShaderLab::SubPrograms*, DeviceRenderStateBlock const*)]@[wasm code]
.wasm-function[Material::SetPassFast(ShaderLab::Pass*, ShaderPassContext&, Shader*, int, int, ShaderLab::SubPrograms*)]@[wasm code]
.wasm-function[Material::SetPassSlow(int, ShaderPassContext&, int)]@[wasm code]
.wasm-function[Camera::smile:efaultPerformRenderFunction::operator()(Camera*, RenderingPath, CullResults*)]@[wasm code]
.wasm-function[Camera::CustomRender(CullResults&, ShaderPassContext&, CameraRenderingParams const*, Camera::RenderFlag, Camera::PerformRenderFunction*, void (*)(), void (*)())]@[wasm code]
.wasm-function[Camera::StandaloneRenderToCubemap(Texture*, int, void (*)(SceneNode const*, AABB const*, IndexList&, SceneCullingParameters const*), void*, unsigned int, MonoOrStereoscopicEye)]@[wasm code]
.wasm-function[ProbeRenderer::RenderCube(ReflectionProbe*, RenderTexture*, int, bool)]@[wasm code]
.wasm-function[ProbeRenderer::Render(ReflectionProbe*, int, bool)]@[wasm code]
.wasm-function[ReflectionProbes::RenderProbeFaces(ReflectionProbe*, int)]@[wasm code]
.wasm-function[ReflectionProbeJob::Run()]@[wasm code]
.wasm-function[BuiltinRuntimeReflectionSystem_CUSTOM_BuiltinUpdate()]@[wasm code]
.wasm-function[BuiltinRuntimeReflectionSystem_BuiltinUpdate_mBE5DAA71BBDC02A11C21A49284078055C7294DB0]@[wasm code]
.wasm-function[BuiltinRuntimeReflectionSystem_TickRealtimeProbes_m0CD6423541B0FCB022D55498C348A013E06E5F39]@[wasm code]
.wasm-function[InterfaceFuncInvoker0::Invoke(unsigned short, Il2CppClass*, Il2CppObject*)]@[wasm code]
.wasm-function[ScriptableRuntimeReflectionSystemWrapper_Internal_ScriptableRuntimeReflectionSystemWrapper_TickRealtimeProbes_mDC08C9639CAF2D13623E82B3A9C51689D2FED2B3]@[wasm code]
.wasm-function[RuntimeInvoker_TrueVoid_t4861ACF8F4594C3437BB48B6E56783494B843915_VoidU2A_t104EAEFBD2D237A8C29618913DA9B4D99355E965(void (*)(), MethodInfo const*, void*, void**, void*)]@[wasm code]
.wasm-function[il2cpp::vm::Runtime::InvokeWithThrow(MethodInfo const*, void*, void**)]@[wasm code]
.wasm-function[dynCall_iiii]@[wasm code]
wasm-stub@[native code]
invoke_iiii@https://redacted/Build/61bef524643e02b1f673f344506a61f0.js.gz:3:380683
.wasm-function[dynCall_iiii]@[wasm code]
.wasm-function[il2cpp::vm::Runtime::Invoke(MethodInfo const*, void*, void**, Il2CppException**)]@[wasm code]
.wasm-function[il2cpp_runtime_invoke]@[wasm code]
.wasm-function[scripting_method_invoke(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingArguments&, ScriptingExceptionPtr*, bool)]@[wasm code]
.wasm-function[ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool)]@[wasm code]
.wasm-function[void ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool)]@[wasm code]
.wasm-function[ReflectionProbes::Update()]@[wasm code]
.wasm-function[InitPlayerLoopCallbacks()::PostLateUpdateFinishFrameRenderingRegistrator::Forward()]@[wasm code]
.wasm-function[ExecutePlayerLoop(NativePlayerLoopSystem*)]@[wasm code]
.wasm-function[ExecutePlayerLoop(NativePlayerLoopSystem*)]@[wasm code]
.wasm-function[MainLoop()]@[wasm code]
.wasm-function[dynCall_v]@[wasm code]
wasm-stub@[native code]
browserIterationFunc@https://redacted/Build/61bef524643e02b1f673f344506a61f0.js.gz:3:208483
callUserCallback@https://redacted/Build/61bef524643e02b1f673f344506a61f0.js.gz:3:161681
runIter@https://redacted/Build/61bef524643e02b1f673f344506a61f0.js.gz:3:162953
Browser_mainLoop_runner@https://redacted/Build/61bef524643e02b1f673f344506a61f0.js.gz:3:161219