Search Issue Tracker
Fixed in Unity 5.4.4
[5.3+][Graphics] Destroying a shader might cause stale pointers in SharedMaterialData, leading to a crash
Looks like if there's a Material with some shader on it, then destroying the shader (either explicitly, or via asset bundle unload) might lead to stale pointers in some material data, which causes a crash later on. Seems to happen starting with 5.3 (in some cases), and happens in more cases in 5.4+.
--- New repro steps:
1. Open ShaderDeletionCausesStaleMaterialDataPointers-52project.zip project
2. Open scene it in, press play.
Reproduced in: 5.3.6, 5.4.2, 5.6 alpha
Does not reproduce in: 5.2.1.
--- Previous repro steps from original bug report:
1. Open "Homework.zip" project
2. Load "Homework" scene
3. In the menu toolbar find wtf > LoadAssetBundle and click on it
Note: Cube should be loaded, check "StreamingAssets folder" for files called "cube"
0x0000000140120B36 (Unity) RenderLoopContext::`scalar deleting destructor'
0x0000000140121223 (Unity) DoRenderLoop
Expected: A cube should be created and Editor should not crash
Actual: A cube is not created, Editor crashes
Reproduced on: 5.4.2f2, 5.5.0b11, 5.6.0a3
Not reproducible on: 5.3.6p8
Could not test on 5.2 due to errors
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
- Unity crash in SerializedFile::ReadMetadata<false> when AssetBundle. LoadFromMemory() is called
- ProceduralMaterial.ClearCache() on "Do Nothing" Substance triggers RebuildTextures
- Setting "Default Behavior Mode" to "2D" breaks HDR rendering
- Crash in GdipCreateBitmapFromStream when calling System.Drawing.Bitmap constructor
- DLL files are not excluded during building for standalone platform, even though they are selected to be excluded