The crash is not in AppendWorldToCurrentPlayerLoop(); it is a stack overflow in TestSystem.OnUpdate(). I believe the intent here was to call base.OnUpdate(), but instead the system calls base.Update() (which in turn calls OnUpdate(); this loop leads to a stack overflow.