Crash in dev build 3274_multicell_spawners

Finally found a crash that happens in a normal season

2 Likes

I see two errors:

at: (scene/main/node.cpp:1135) ERROR: Parent node is busy setting up children, add_node() failed. Consider using call_deferred("add_child", child) instead.
at: (scene/main/node.cpp:1135) ERROR: Parent node is busy setting up children, add_node() failed. Consider using call_deferred("add_child", child) instead.
at: (scene/main/node.cpp:1135) ERROR: Parent node is busy setting up children, add_node() failed. Consider using call_deferred("add_child", child) instead.
at: (scene/main/node.cpp:1135) ERROR: Parent node is busy setting up children, add_node() failed. Consider using call_deferred("add_child", child) instead.
at: (scene/main/node.cpp:1135) ERROR: Parent node is busy setting up children, add_node() failed. Consider using call_deferred("add_child", child) instead.
at: (scene/main/node.cpp:1135) ERROR: Parent node is busy setting up children, add_node() failed. Consider using call_deferred("add_child", child) instead.
at: (scene/main/node.cpp:1135) ERROR: Parent node is busy setting up children, add_node() failed. Consider using call_deferred("add_child", child) instead.
at: (scene/main/node.cpp:1135) ERROR: Parent node is busy setting up children, add_node() failed. Consider using call_deferred("add_child", child) instead.
at: (scene/main/node.cpp:1135) ERROR: Parent node is busy setting up children, add_node() failed. Consider using call_deferred("add_child", child) instead.
at: (scene/main/node.cpp:1135) ERROR: Parent node is busy setting up children, add_node() failed. Consider using call_deferred("add_child", child) instead.
at: (scene/main/node.cpp:1135)

and:

Unhandled Exception: System.ObjectDisposedException: Cannot access a disposed object. Object name: 'FloatingChunk'. at Godot.Object.GetPtr (Godot.Object instance) [0x0001c] in <df946455c2cf40b099246a638508efd4>:0 at Godot.Spatial.GetTranslation () [0x00000] in <df946455c2cf40b099246a638508efd4>:0 at Godot.Spatial.get_Translation () [0x00000] in <df946455c2cf40b099246a638508efd4>:0 at FloatingChunkSystem+<>c__DisplayClass4_1.<Process>b__1 (FloatingChunk c) [0x00000] in <32b326f1a2624e3da7ae05ca086ba53c>:0 at System.Linq.EnumerableSorter`2[TElement,TKey].ComputeKeys (TElement[] elements, System.Int32 count) [0x00010] in <f207d09b447b44ee87e39069887ea94e>:0 at System.Linq.EnumerableSorter`1[TElement].ComputeMap (TElement[] elements, System.Int32 count) [0x00000] in <f207d09b447b44ee87e39069887ea94e>:0 at System.Linq.EnumerableSorter`1[TElement].Sort (TElement[] elements, System.Int32 count, System.Int32 minIdx, System.Int32 maxIdx) [0x00000] in <f207d09b447b44ee87e39069887ea94e>:0 at System.Linq.OrderedEnumerable`1[TElement].SortedMap (System.Linq.Buffer`1[TElement] buffer, System.Int32 minIdx, System.Int32 maxIdx) [0x00006] in <f207d09b447b44ee87e39069887ea94e>:0 at System.Linq.OrderedEnumerable`1+<GetEnumerator>d__7[TElement].MoveNext () [0x000a7] in <f207d09b447b44ee87e39069887ea94e>:0 at FloatingChunkSystem.Process (System.Single delta, System.Nullable`1[T] playerPosition) [0x000c3] in <32b326f1a2624e3da7ae05ca086ba53c>:0 at MicrobeStage._Process (System.Single delta) [0x00053] in <32b326f1a2624e3da7ae05ca086ba53c>:0 Unhandled Exception: System.ObjectDisposedException: Cannot access a disposed object. Object name: 'FloatingChunk'. at Godot.Object.GetPtr (Godot.Object instance) [0x0001c] in <df946455c2cf40b099246a638508efd4>:0 at Godot.Spatial.GetTranslation () [0x00000] in <df946455c2cf40b099246a638508efd4>:0 at Godot.Spatial.get_Translation () [0x00000] in <df946455c2cf40b099246a638508efd4>:0 at FloatingChunkSystem+<>c__DisplayClass4_1.<Process>b__1 (FloatingChunk c) [0x00000] in <32b326f1a2624e3da7ae05ca086ba53c>:0 at System.Linq.EnumerableSorter`2[TElement,TKey].ComputeKeys (TElement[] elements, System.Int32 count) [0x00010] in <f207d09b447b44ee87e39069887ea94e>:0 at System.Linq.EnumerableSorter`1[TElement].ComputeMap (TElement[] elements, System.Int32 count) [0x00000] in <f207d09b447b44ee87e39069887ea94e>:0 at System.Linq.EnumerableSorter`1[TElement].Sort (TElement[] elements, System.Int32 count, System.Int32 minIdx, System.Int32 maxIdx) [0x00000] in <f207d09b447b44ee87e39069887ea94e>:0 at System.Linq.OrderedEnumerable`1[TElement].SortedMap (System.Linq.Buffer`1[TElement] buffer, System.Int32 minIdx, System.Int32 maxIdx) [0x00006] in <f207d09b447b44ee87e39069887ea94e>:0 at System.Linq.OrderedEnumerable`1+<GetEnumerator>d__7[TElement].MoveNext () [0x000a7] in <f207d09b447b44ee87e39069887ea94e>:0 at FloatingChunkSystem.Process (System.Single delta, System.Nullable`1[T] playerPosition) [0x000c3] in <32b326f1a2624e3da7ae05ca086ba53c>:0 at MicrobeStage._Process (System.Single delta) [0x00053] in <32b326f1a2624e3da7ae05ca086ba53c>:0

The first one is basically impossible to pinpoint with the info from the log. Only when running from the Godot editor would it tell where that problematic node is. For the second, I think I see the problem. It seems to be that if a chunk is destroyed before its position relative to player is calculated in the background for despawning excess chunks, it will hit that disposed exception. I’ll try to switch things so that the chunks will only be disposed at the end of the frame, that should fix the error.

Edit: opened a pull request with the fix:

2 Likes

thanks, sorry for not having a more readable log.
Maybe the thrive launcher should have a more refined log?

That’s impossible. You only get that super informative log if you run the game through Godot editor, meaning you’d need C# compiling tools etc. you need to actually compile Thrive: Thrive/setup_instructions.md at master · Revolutionary-Games/Thrive · GitHub So it’s not something we can expect normal users to have. That’s why very good dedicated testers are very valuable.

1 Like

ok thanks for explaining that!