stride3d / stride

Stride (formerly Xenko), a free and open-source cross-platform C# game engine.
https://stride3d.net
MIT License
6.61k stars 954 forks source link

Non-existing shader crashes Game Studio #2241

Open WithBlueHorns opened 6 months ago

WithBlueHorns commented 6 months ago

Release Type: Official Release

Version: 4.2.0.2122

Describe the bug In a material, if you try to set shader that doesn't exist, wait for it to build the effect, then do try to do it again with another shader that doesn't exist Game Studio crashes, not always crash windows pops up. I'm not sure what and why it happens, sometimes you could use the same bad name, sometimes you just do 2 then it works To Reproduce Steps to reproduce the behavior:

  1. Create a new project
  2. Look for "Sphere Material"/"Ground Material"/Create a new material, then in any property of material (ex. diffuse) set the map to "Shader"
  3. Type any name of a shader that doesn't exist, followed by pressing enter (could be a few times)
  4. Change the name in the field (ex. "test" -> "test2"), wait for the effects from before to build, then click enter, as soon as you do it the Game Studio crashes

Expected behavior To just give that red blinking effect or really anything other than crashing

Screenshots

https://github.com/stride3d/stride/assets/95977080/c6c300c2-294d-4da9-bc27-8a72c1400f7e

Video instead

Log and callstacks log2.txt log1.txt

Additional context Why do I always find such obscure bugs

Doprez commented 5 months ago

So I took a bit of time to look into this issue and the problem seems to come from misuse of multithreading than the shader being not found.

image

Its a bit hard to recreate in source but I think it would explain why it only seems to happen after changing the shader and hitting enter multiple times. This could also bhe related to the save error that people have run into https://github.com/stride3d/stride/issues/1917.