godot icon indicating copy to clipboard operation
godot copied to clipboard

Crash when re-importing a GLB file which is used in currently edited scene.

Open adamwych opened this issue 2 years ago • 3 comments

Tested versions

  • Reproducible in: 4.3-dev [7abe0c6014022874378cb64a11b26b0f0f178324]
  • Reproducible after / not reproducible before: 7e0847701e
  • Not reproducible in: 4.2.2

System information

Godot v4.3.dev.mono (7abe0c601) - macOS 14.3.1 - Vulkan (Forward+) - integrated Apple M3 Pro - Apple M3 Pro (11 Threads)

Issue description

Editor crashes while re-importing GLB file if they are used in currently edited scene. The GLB file (attached in MRP project) is a simple box mesh with armature made and animated in Blender.

Godot Engine v4.3.dev.mono.custom_build.7abe0c601 (2024-04-22 20:38:04 UTC) - https://godotengine.org
Vulkan 1.2.275 - Forward+ - Using Device #0: Apple - Apple M3 Pro

WARNING: Adding 'Red' as child to 'Skeleton3D' will make owner 'Blob' inconsistent. Consider unsetting the owner beforehand.
     at: add_child (scene/main/node.cpp:1575)
WARNING: Entering a window while a window is hovered should never happen in DisplayServer.
     at: _event_callback (scene/main/window.cpp:712)
WARNING: Adding 'Red' as child to 'Skeleton3D' will make owner 'Blob' inconsistent. Consider unsetting the owner beforehand.
     at: add_child (scene/main/node.cpp:1575)
ERROR: Condition "p_child->data.parent != this" is true.
   at: remove_child (scene/main/node.cpp:1598)

================================================================
handle_crash: Program crashed with signal 11
Engine version: Godot Engine v4.3.dev.mono.custom_build (7abe0c6014022874378cb64a11b26b0f0f178324)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[1] invoke_previous_action(sigaction*, int, __siginfo*, void*, bool)
[2] 2   libsystem_platform.dylib            0x00000001861c9a24 _sigtramp + 56
[3] Node::is_part_of_edited_scene() const (in godot.macos.editor.dev.arm64.mono) (node.cpp:2573)
[4] TileMapLayerEditor::_node_change(Node*) (in godot.macos.editor.dev.arm64.mono) (tile_map_layer_editor.cpp:3668)
[5] void call_with_variant_args_helper<TileMapLayerEditor, Node*, 0ul>(TileMapLayerEditor*, void (TileMapLayerEditor::*)(Node*), Variant const**, Callable::CallError&, IndexSequence<0ul>) (in godot.macos.editor.dev.arm64.mono) (binder_common.h:309)
[6] void call_with_variant_args<TileMapLayerEditor, Node*>(TileMapLayerEditor*, void (TileMapLayerEditor::*)(Node*), Variant const**, int, Callable::CallError&) (in godot.macos.editor.dev.arm64.mono) (binder_common.h:419)
[7] CallableCustomMethodPointer<TileMapLayerEditor, Node*>::call(Variant const**, int, Variant&, Callable::CallError&) const (in godot.macos.editor.dev.arm64.mono) (callable_method_pointer.h:104)
[8] Callable::callp(Variant const**, int, Variant&, Callable::CallError&) const (in godot.macos.editor.dev.arm64.mono) (callable.cpp:58)
[9] Object::emit_signalp(StringName const&, Variant const**, int) (in godot.macos.editor.dev.arm64.mono) (object.cpp:1215)
[10] Error Object::emit_signal<Node*>(StringName const&, Node*) (in godot.macos.editor.dev.arm64.mono) (object.h:935)
[11] SceneTree::node_added(Node*) (in godot.macos.editor.dev.arm64.mono) (scene_tree.cpp:128)
[12] Node::_propagate_enter_tree() (in godot.macos.editor.dev.arm64.mono) (node.cpp:300)
[13] Node::_set_tree(SceneTree*) (in godot.macos.editor.dev.arm64.mono) (node.cpp:3176)
[14] Node::_add_child_nocheck(Node*, StringName const&, Node::InternalMode) (in godot.macos.editor.dev.arm64.mono) (node.cpp:1548)
[15] Node::add_child(Node*, bool, Node::InternalMode) (in godot.macos.editor.dev.arm64.mono) (node.cpp:1580)
[16] EditorNode::reload_instances_with_path_in_edited_scenes(String const&) (in godot.macos.editor.dev.arm64.mono) (editor_node.cpp:5818)
[17] EditorNode::_resources_reimported(Vector<String> const&) (in godot.macos.editor.dev.arm64.mono) (editor_node.cpp:1055)
[18] void call_with_variant_args_helper<EditorNode, Vector<String> const&, 0ul>(EditorNode*, void (EditorNode::*)(Vector<String> const&), Variant const**, Callable::CallError&, IndexSequence<0ul>) (in godot.macos.editor.dev.arm64.mono) (binder_common.h:304)
[19] void call_with_variant_args<EditorNode, Vector<String> const&>(EditorNode*, void (EditorNode::*)(Vector<String> const&), Variant const**, int, Callable::CallError&) (in godot.macos.editor.dev.arm64.mono) (binder_common.h:419)
[20] CallableCustomMethodPointer<EditorNode, Vector<String> const&>::call(Variant const**, int, Variant&, Callable::CallError&) const (in godot.macos.editor.dev.arm64.mono) (callable_method_pointer.h:104)
[21] Callable::callp(Variant const**, int, Variant&, Callable::CallError&) const (in godot.macos.editor.dev.arm64.mono) (callable.cpp:58)
[22] Object::emit_signalp(StringName const&, Variant const**, int) (in godot.macos.editor.dev.arm64.mono) (object.cpp:1215)
[23] Node::emit_signalp(StringName const&, Variant const**, int) (in godot.macos.editor.dev.arm64.mono) (node.cpp:3901)
[24] Error Object::emit_signal<Vector<String>>(StringName const&, Vector<String>) (in godot.macos.editor.dev.arm64.mono) (object.h:935)
[25] EditorFileSystem::reimport_files(Vector<String> const&) (in godot.macos.editor.dev.arm64.mono) (editor_file_system.cpp:2464)
[26] EditorFileSystem::_update_scan_actions() (in godot.macos.editor.dev.arm64.mono) (editor_file_system.cpp:697)
[27] EditorFileSystem::_notification(int) (in godot.macos.editor.dev.arm64.mono) (editor_file_system.cpp:1274)
[28] EditorFileSystem::_notificationv(int, bool) (in godot.macos.editor.dev.arm64.mono) (editor_file_system.h:138)
[29] Object::notification(int, bool) (in godot.macos.editor.dev.arm64.mono) (object.cpp:899)
[30] SceneTree::_process_group(SceneTree::ProcessGroup*, bool) (in godot.macos.editor.dev.arm64.mono) (scene_tree.cpp:971)
[31] SceneTree::_process(bool) (in godot.macos.editor.dev.arm64.mono) (scene_tree.cpp:1047)
[32] SceneTree::process(double) (in godot.macos.editor.dev.arm64.mono) (scene_tree.cpp:527)
[33] Main::iteration() (in godot.macos.editor.dev.arm64.mono) (main.cpp:4030)
[34] OS_MacOS::run() (in godot.macos.editor.dev.arm64.mono) (os_macos.mm:778)
[35] main (in godot.macos.editor.dev.arm64.mono) (godot_main_macos.mm:84)
[36] 36  dyld                                0x0000000185e190e0 start + 2360
-- END OF BACKTRACE --
================================================================

Steps to reproduce

  • Open scene2 scene from attached MRP.
  • Replace Blob.glb in project root directory with Blob.glb from "TO_REPLACE" folder.
  • Focus editor to trigger re-import.

Minimal reproduction project (MRP)

Archive.zip

adamwych avatar Apr 23 '24 12:04 adamwych

I managed to figure out that the error started happening after commit 7e0847701e (PR https://github.com/godotengine/godot/pull/87888).

adamwych avatar Apr 23 '24 15:04 adamwych

It happens one commit before too at 04dd299cbac614c0ff2306b8d3cd60dcd86abd8e The editor doesn't crash before it.

ydeltastar avatar Apr 24 '24 03:04 ydeltastar

@ydeltastar There is no meaning since the only difference is whether it is a merge-commit or not.

TokageItLab avatar Apr 24 '24 06:04 TokageItLab