1. What happened
If we change the sibiling order of an object inside OnDisable, it can cause that some objects aren't disabled during DestroyObject.
This leads to a lot of undefined behaviours.
This is due to how we iterate the objects in [Internal link]
2. How we can reproduce it using the example you attached
- Open SampleScene
- Enter play mode
Expected behaviour:
- Both objects log from OnDisable
Actual Behaviour:
- Only Child1 logs from OnDisable
- The editor might crash due to trying to destroy an enabled GameObject