Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tree_exited signal callbacks are run in the editor even when the script is not "tool", can cause editor crash #27125

Open
henriiquecampos opened this issue Mar 16, 2019 · 17 comments

Comments

@henriiquecampos
Copy link
Contributor

henriiquecampos commented Mar 16, 2019

Godot version: 3.1-stable_X11.64

OS/device including version: Solus 3.9999 Gnome Nvidia GTX 1050TI

Issue description:

Randomly when I switch between scenes Godot crashes, the only thing on the terminal when this happens is:

ERROR: _load: Condition ' !f ' is true. returned: ERR_CANT_OPEN
   At: scene/resources/dynamic_font.cpp:149.
ERROR: _get_modified_time: Failed to get modified time for: 
   At: drivers/unix/file_access_unix.cpp:292.
ERROR: _load: No loader found for resource: res://
   At: core/io/resource_loader.cpp:285.
malloc(): smallbin double linked list corrupted

I am using GLES2

Minimal reproduction project:

It's not minimal but can give enough context
mooncheeser source.zip

@henriiquecampos
Copy link
Contributor Author

henriiquecampos commented Mar 16, 2019

Well I just got it again, and now I have more details. Before the crash the scene I was about to switch looked like this (print below)
image

The terminal dumped this:

OpenGL ES 3.0 Renderer: GeForce GTX 1050 Ti/PCIe/SSE2
Editing project: /home/henrique/Documents/projects/001 - Moon Cheeser/repo/source (::home::henrique::Documents::projects::001 - Moon Cheeser::repo::source)
OpenGL ES 2.0 Renderer: GeForce GTX 1050 Ti/PCIe/SSE2
henrique@pigdev ~ $ ERROR: _load: Condition ' !f ' is true. returned: ERR_CANT_OPEN
   At: scene/resources/dynamic_font.cpp:149.
ERROR: _get_modified_time: Failed to get modified time for: 
   At: drivers/unix/file_access_unix.cpp:292.
ERROR: _load: No loader found for resource: res://
   At: core/io/resource_loader.cpp:285.
handle_crash: Program crashed with signal 11
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] /usr/lib/haswell/libc.so.6(+0x40560) [0x7ff318850560] (??:0)
[2] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x213bb83] (??:?)
[3] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x2149e3a] (??:?)
[4] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x1c925d8] (<artificial>:?)
[5] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x1c93c76] (??:?)
[6] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x10225f9] (??:?)
[7] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0xae689d] (??:?)
[8] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x2174733] (??:?)
[9] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x24400dd] (<artificial>:?)
[10] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x24753e0] (??:?)
[11] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x24754e0] (??:?)
[12] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0xfa47dc] (??:?)
[13] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0xae689d] (??:?)
[14] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x2174733] (??:?)
[15] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x21e4e02] (??:?)
[16] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x21e5e40] (??:?)
[17] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x182eb91] (??:?)
[18] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x182f5d5] (<artificial>:?)
[19] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x9ef656] (??:?)
[20] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x2174ad5] (??:?)
[21] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x212f911] (??:?)
[22] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x16b4648] (<artificial>:?)
[23] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x16d9c36] (<artificial>:?)
[24] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x16dcc84] (??:?)
[25] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x16dcdee] (<artificial>:?)
[26] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x9ef656] (??:?)
[27] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x2174733] (??:?)
[28] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x212f995] (??:?)
[29] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x16541c3] (??:?)
[30] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x16b3957] (??:?)
[31] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0xa7a851] (??:?)
[32] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0xa77d4d] (<artificial>:?)
[33] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0xb39c9b] (<artificial>:?)
[34] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x7b28dc] (??:?)
[35] /usr/lib/haswell/libc.so.6(__libc_start_main+0xeb) [0x7ff318833bdb] (??:0)
[36] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x7bfc4e] (??:?)
-- END OF BACKTRACE --

@henriiquecampos
Copy link
Contributor Author

henriiquecampos commented Mar 16, 2019

I think I can reproduce it consistently now:

  1. Open a scene
  2. Switch to another scene
  3. See the previous scene being corrupted
  4. Try to switch to it
  5. Crash

ezgif com-video-to-gif

@henriiquecampos henriiquecampos changed the title Godot Crashes - Corrupted Double Linked List (3.1.stable) Godot Crashes - When Switching Scenes (3.1.stable) Mar 16, 2019
@henriiquecampos henriiquecampos changed the title Godot Crashes - When Switching Scenes (3.1.stable) Godot Crashes When Switching Scenes (3.1.stable) Mar 16, 2019
@henriiquecampos
Copy link
Contributor Author

It also happens if I try to close any scene. So if there is a "corrupted scene", even if I close it, or if I try to close a "healthy scene", Godot crashes

@bojidar-bg
Copy link
Contributor

Cannot confirm on Arch Linux, Godot 3.1 stable 64 bit. lscpu reports Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz.

Might be nice to have a trace from rr.

@capnm
Copy link
Contributor

capnm commented Mar 16, 2019

Cannot confirm the above on Ubuntu 18.04 too, but I've got this crash after trying to close some as modified marked scene by selecting "Don't Save" in the "Please Confirm" dialogue. It doesn't seems to be reproducible :-/

Terminal dump:

godot3 -h
Godot Engine v3.2.dev.custom_build.06ebf4c - https://godotengine.org

godot3 -e
OpenGL ES 2.0 Renderer: AMD Radeon HD 7700 Series (CAPE VERDE, DRM 3.23.0, 4.15.0-46-generic, LLVM 7.0.0)
ERROR: _load: Condition ' !f ' is true. returned: ERR_CANT_OPEN
   At: scene/resources/dynamic_font.cpp:149.
SCRIPT ERROR: GDScript::reload: Parse Error: Identifier 'acheesements' is not declared in the current scope.
   At: res://actors/Astromouse/star_mouse.gd:33.
ERROR: reload: Method/Function Failed, returning: ERR_PARSE_ERROR
   At: modules/gdscript/gdscript.cpp:580.
SCRIPT ERROR: GDScript::reload: Parse Error: Identifier 'acheesements' is not declared in the current scope.
   At: res://interface/helper.gd:28.
ERROR: reload: Method/Function Failed, returning: ERR_PARSE_ERROR
   At: modules/gdscript/gdscript.cpp:580.
ERROR: load_source_code: Condition ' err ' is true. returned: err
   At: modules/gdscript/gdscript.cpp:813.
ERROR: load: Condition ' err != OK ' is true. returned: RES()
   At: modules/gdscript/gdscript.cpp:2172.
ERROR: _load: Failed loading resource: res://actors/abstract_gravity_body.gd
   At: core/io/resource_loader.cpp:285.
SCRIPT ERROR: GDScript::reload: Parse Error: Could not load base class: res://actors/abstract_gravity_body.gd
   At: res://objects/Blackhole/blackhole.gd:2.
ERROR: reload: Method/Function Failed, returning: ERR_PARSE_ERROR
   At: modules/gdscript/gdscript.cpp:580.
SCRIPT ERROR: GDScript::reload: Parse Error: Identifier 'skins' is not declared in the current scope.
   At: res://screens/achievements_screen/skins_handler.gd:6.
ERROR: reload: Method/Function Failed, returning: ERR_PARSE_ERROR
   At: modules/gdscript/gdscript.cpp:580.
ERROR: load_source_code: Condition ' err ' is true. returned: err
   At: modules/gdscript/gdscript.cpp:813.
ERROR: load: Condition ' err != OK ' is true. returned: RES()
   At: modules/gdscript/gdscript.cpp:2172.
ERROR: _load: Failed loading resource: res://screens/abstract_screen.gd
   At: core/io/resource_loader.cpp:285.
SCRIPT ERROR: GDScript::reload: Parse Error: Could not load base class: res://screens/abstract_screen.gd
   At: res://screens/title_screen/title_screen.gd:1.
ERROR: reload: Method/Function Failed, returning: ERR_PARSE_ERROR
   At: modules/gdscript/gdscript.cpp:580.


Running: bin/godot.x11.opt.tools.64 --path /issues-prs/i27125-scene-switch/test-project --remote-debug 127.0.0.1:6007 --allow_focus_steal_pid 15178 --position 200,165
OpenGL ES 2.0 Renderer: AMD Radeon HD 7700 Series (CAPE VERDE, DRM 3.23.0, 4.15.0-46-generic, LLVM 7.0.0)
WARNING: _update_root_rect: Font oversampling does not work in 'Viewport' stretch mode, only '2D'.
   At: scene/main/scene_tree.cpp:1241.
ERROR: _load: Condition ' !f ' is true. returned: ERR_CANT_OPEN
   At: scene/resources/dynamic_font.cpp:149.
ERROR: get_node: Node not found: ../Level/RightCometSpawner:position
   At: scene/main/node.cpp:1382.
ERROR: _ensure_node_caches: On Animation: 'slide', couldn't resolve track:  '../Level/RightCometSpawner:position'
   At: scene/animation/animation_player.cpp:243.
ERROR: get_node: Node not found: ../Level/LeftStarSpawner:position
   At: scene/main/node.cpp:1382.
ERROR: _ensure_node_caches: On Animation: 'slide', couldn't resolve track:  '../Level/LeftStarSpawner:position'
   At: scene/animation/animation_player.cpp:243.
ERROR: get_node: Node not found: ../Level/LeftCometSpawner:position
   At: scene/main/node.cpp:1382.
ERROR: _ensure_node_caches: On Animation: 'slide', couldn't resolve track:  '../Level/LeftCometSpawner:position'
   At: scene/animation/animation_player.cpp:243.
ERROR: get_node: Node not found: ../Level/RightStarSpawner:position
   At: scene/main/node.cpp:1382.
ERROR: _ensure_node_caches: On Animation: 'slide', couldn't resolve track:  '../Level/RightStarSpawner:position'
   At: scene/animation/animation_player.cpp:243.
ERROR: get_node: Node not found: ../Level/BlackholeSpawner:position
   At: scene/main/node.cpp:1382.
ERROR: _ensure_node_caches: On Animation: 'slide', couldn't resolve track:  '../Level/BlackholeSpawner:position'
   At: scene/animation/animation_player.cpp:243.
ERROR: _get_modified_time: Failed to get modified time for: 
   At: drivers/unix/file_access_unix.cpp:292.
ERROR: _load: No loader found for resource: res://
   At: core/io/resource_loader.cpp:285.

handle_crash: Program crashed with signal 11
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] /lib/x86_64-linux-gnu/libc.so.6(+0x3ef20) [0x7f0559670f20] (??:0)
[2] godot3() [0x1de857b] (./core/cowdata.h:127)
[3] godot3() [0x1deef16] (scene/resources/packed_scene.cpp:424 (discriminator 1))
[4] godot3() [0x1df22c5] (scene/resources/packed_scene.cpp:878)
[5] godot3() [0xd8e32e] (editor/editor_data.cpp:640)
[6] godot3() [0xe4567b] (editor/editor_node.cpp:2888)
[7] godot3() [0x4e1dc3] (./core/variant.h:421)
[8] godot3() [0x250775c] (core/object.cpp:942 (discriminator 1))
[9] godot3() [0x2583197] (./core/variant.h:421)
[10] godot3() [0x2583659] (core/undo_redo.cpp:333)
[11] godot3() [0x2583740] (core/undo_redo.cpp:256)
[12] godot3() [0xe2b7e3] (editor/editor_node.cpp:4200)
[13] godot3() [0xe3b067] (editor/editor_node.cpp:2761)
[14] godot3() [0xe4f69b] (editor/editor_node.cpp:2476)
[15] godot3() [0x4e3f9e] (./core/cowdata.h:369)
[16] godot3() [0x250775c] (core/object.cpp:942 (discriminator 1))
[17] godot3() [0x2513554] (./core/variant.h:421)
[18] godot3() [0x2514775] (core/object.cpp:1285)
[19] godot3() [0x1724ed6] (scene/gui/dialogs.cpp:484 (discriminator 4))
[20] godot3() [0x4e3f9e] (./core/cowdata.h:369)
[21] godot3() [0x250775c] (core/object.cpp:942 (discriminator 1))
[22] godot3() [0x2513554] (./core/variant.h:421)
[23] godot3() [0x2514775] (core/object.cpp:1285)
[24] godot3() [0x16c4de3] (scene/gui/base_button.cpp:139 (discriminator 2))
[25] godot3() [0xf5e571] (./core/reference.h:267)
[26] godot3() [0x250851b] (./core/variant.h:421)
[27] godot3() [0x2506446] (core/object.cpp:883)
[28] godot3() [0x16ad809] (./core/variant.h:421)
[29] godot3() [0x16aecba] (./core/reference.h:285)
[30] godot3() [0x16b108d] (./core/reference.h:285)
[31] godot3() [0x16b122c] (./core/reference.h:285)
[32] godot3() [0x6d48e7] (./core/reference.h:267)
[33] godot3() [0x250775c] (core/object.cpp:942 (discriminator 1))
[34] godot3() [0x25063ae] (core/object.cpp:868)
[35] godot3() [0x167ea5f] (./core/variant.h:421)
[36] godot3() [0x1681db5] (scene/main/scene_tree.cpp:418 (discriminator 6))
[37] godot3() [0x4513f6] (./core/reference.h:285)
[38] godot3() [0x44df4d] (./core/list.h:291)
[39] godot3() [0x44133b] (platform/x11/os_x11.cpp:2462)
[40] godot3() [0x4436e0] (platform/x11/os_x11.cpp:3004)
[41] godot3(main+0xd8) [0x434e08] (platform/x11/godot_x11.cpp:55)
[42] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7f0559653b97] (??:0)
[43] godot3() [0x436dea] (??:?)
-- END OF BACKTRACE --
Aborted

@henriiquecampos
Copy link
Contributor Author

henriiquecampos commented Mar 16, 2019

I think I found the trigger for this crash, can you guys test the following @bojidar-bg and @capnm

  1. Create a new scene, pick any Node type as root
  2. Add a child
  3. Use the interface to connect the child's tree_exited signal to the root's queue_free method
  4. Save the scene
  5. Open a new scene
  6. Try to switch back

@akien-mga
Copy link
Member

Would be good if someone who can reproduce it can try with a debug build (scons p=x11, don't strip the binary) to have a backtrace.

@akien-mga akien-mga added this to the 3.2 milestone Mar 16, 2019
@capnm
Copy link
Contributor

capnm commented Mar 16, 2019

A reproducible backtrace with your recipe;)
#27125 (comment)

godot3 -e
OpenGL ES 3.0 Renderer: AMD Radeon HD 7700 Series (CAPE VERDE, DRM 3.23.0, 4.15.0-46-generic, LLVM 7.0.0)
ERROR: emit_signal: Error calling method from signal 'node_added': 'CanvasItemEditor::_tree_changed': Cannot convert argument 1 from Object to Object.
   At: core/object.cpp:1238.
ERROR: add_node: Condition ' !p_node->is_inside_tree() ' is true.
   At: editor/editor_data.cpp:994.
handle_crash: Program crashed with signal 11
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] /lib/x86_64-linux-gnu/libc.so.6(+0x3ef20) [0x7fdb28596f20] (??:0)
[2] godot3() [0x24a9927] (./core/hash_map.h:330)
[3] godot3() [0x2503f95] (./core/variant.h:421)
[4] godot3() [0x103238d] (./core/cowdata.h:369)
[5] godot3() [0x1035899] (editor/scene_tree_editor.cpp:446)
[6] godot3() [0x10361a8] (./core/variant.h:421)
[7] godot3() [0xe440ce] (editor/editor_node.h:636)
[8] godot3() [0xe457eb] (editor/editor_node.cpp:2920)
[9] godot3() [0x4e1dc3] (./core/variant.h:421)
[10] godot3() [0x250775c] (core/object.cpp:942 (discriminator 1))
[11] godot3() [0x2583197] (./core/variant.h:421)
[12] godot3() [0x2583659] (core/undo_redo.cpp:333)
[13] godot3() [0x2583740] (core/undo_redo.cpp:256)
[14] godot3() [0xe2b7e3] (editor/editor_node.cpp:4200)
[15] godot3() [0x4e1dc3] (./core/variant.h:421)
[16] godot3() [0x250775c] (core/object.cpp:942 (discriminator 1))
[17] godot3() [0x2513554] (./core/variant.h:421)
[18] godot3() [0x2514775] (core/object.cpp:1285)
[19] godot3() [0x18214c6] (scene/gui/tabs.cpp:418 (discriminator 4))
[20] godot3() [0x18221d9] (scene/gui/tabs.cpp:215)
[21] godot3() [0x6d48e7] (./core/reference.h:267)
[22] godot3() [0x250851b] (./core/variant.h:421)
[23] godot3() [0x2506446] (core/object.cpp:883)
[24] godot3() [0x16ad809] (./core/variant.h:421)
[25] godot3() [0x16afb88] (./core/reference.h:285)
[26] godot3() [0x16b108d] (./core/reference.h:285)
[27] godot3() [0x16b122c] (./core/reference.h:285)
[28] godot3() [0x6d48e7] (./core/reference.h:267)
[29] godot3() [0x250775c] (core/object.cpp:942 (discriminator 1))
[30] godot3() [0x25063ae] (core/object.cpp:868)
[31] godot3() [0x167ea5f] (./core/variant.h:421)
[32] godot3() [0x1681db5] (scene/main/scene_tree.cpp:418 (discriminator 6))
[33] godot3() [0x4513f6] (./core/reference.h:285)
[34] godot3() [0x44df4d] (./core/list.h:291)
[35] godot3() [0x44133b] (platform/x11/os_x11.cpp:2462)
[36] godot3() [0x4436e0] (platform/x11/os_x11.cpp:3004)
[37] godot3(main+0xd8) [0x434e08] (platform/x11/godot_x11.cpp:55)
[38] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7fdb28579b97] (??:0)
[39] godot3() [0x436dea] (??:?)
-- END OF BACKTRACE --
Aborted

@capnm
Copy link
Contributor

capnm commented Mar 16, 2019

The problem is that the directly connected object methods are apparently executed after the scene tab is selected. If you connect something less dangerous, you will just get an "interesting" effect:

bind

test-project2.zip

@henriiquecampos
Copy link
Contributor Author

Hmm, I find this kinda strange, these callbacks shouldn't happen in the editor, the Node isn't set totool so, is kinda strange that these interactions happen.

@bojidar-bg
Copy link
Contributor

Maybe all connections with the Save flag on should be completely disabled in the editor, not just swept under the rug by assuming they are connected to placeholder script instances?

@qarmin
Copy link
Contributor

qarmin commented Mar 16, 2019

I have this backtrace when I try to open all scenes at one time:(it can be easily selected when you search .tscn in grid view in filesystem dock and then select and open all)

[1] /lib/x86_64-linux-gnu/libc.so.6(+0x3ef20) [0x7fcf4cc40f20] (??:0)
[2] HashMap<Variant, List<Pair<Variant const*, Variant>, DefaultAllocator>::Element*, VariantHasher, VariantComparator, (unsigned char)3, (unsigned char)8>::getptr(Variant const&) const (/home/rafal/Pulpit/godot/./core/hash_map.h:330)
[3] HashMap<Variant, List<Pair<Variant const*, Variant>, DefaultAllocator>::Element*, VariantHasher, VariantComparator, (unsigned char)3, (unsigned char)8>::has(Variant const&) const (/home/rafal/Pulpit/godot/./core/hash_map.h:287)
[4] OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator, (unsigned char)3, (unsigned char)8>::has(Variant const&) const (/home/rafal/Pulpit/godot/./core/ordered_hash_map.h:241)
[5] Dictionary::has(Variant const&) const (/home/rafal/Pulpit/godot/core/dictionary.cpp:136)
[6] Object::has_meta(String const&) const (/home/rafal/Pulpit/godot/core/object.cpp:1043)
[7] EditorNode::get_object_icon(Object const*, String const&) const (/home/rafal/Pulpit/godot/editor/editor_node.cpp:3331 (discriminator 1))
[8] EditorNode::_update_scene_tabs() (/home/rafal/Pulpit/godot/editor/editor_node.cpp:142 (discriminator 3))
[9] EditorNode::_notification(int) (/home/rafal/Pulpit/godot/editor/editor_node.cpp:257)
[10] EditorNode::_notificationv(int, bool) (/home/rafal/Pulpit/godot/editor/editor_node.h:100 (discriminator 14))
[11] Object::notification(int, bool) (/home/rafal/Pulpit/godot/core/object.cpp:954)
[12] SceneTree::_notify_group_pause(StringName const&, int) (/home/rafal/Pulpit/godot/scene/main/scene_tree.cpp:969)
[13] SceneTree::idle(float) (/home/rafal/Pulpit/godot/scene/main/scene_tree.cpp:518 (discriminator 3))
[14] Main::iteration() (/home/rafal/Pulpit/godot/main/main.cpp:1886)
[15] OS_X11::run() (/home/rafal/Pulpit/godot/platform/x11/os_x11.cpp:3006)
[16] /usr/bin/godot(main+0xdc) [0x116bbb3] (/home/rafal/Pulpit/godot/platform/x11/godot_x11.cpp:56)
[17] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7fcf4cc23b97] (??:0)
[18] /usr/bin/godot(_start+0x2a) [0x116ba1a] (??:?)

@capnm
Copy link
Contributor

capnm commented Mar 16, 2019

Without an associated script, it is generally not possible to choose whether the signal should be active as tool mode or not. I think this should not be allowed or at least properly documented. (I didn't know that the direct callbacks work, it's actually a surprise to me that Godot 2.1.x has the same issue.)
godot21.zip

@hpvb hpvb self-assigned this Mar 17, 2019
@henriiquecampos
Copy link
Contributor Author

Without an associated script, it is generally not possible to choose whether the signal should be active as tool mode or not. I think this should not be allowed or at least properly documented. (I didn't know that the direct callbacks work, it's actually a surprise to me that Godot 2.1.x has the same issue.)
godot21.zip

I think I reported a similar issue #13394 and #13070 is also related

@qarmin
Copy link
Contributor

qarmin commented Dec 9, 2019

Still happens with master

[1] /lib/x86_64-linux-gnu/libc.so.6(+0x46470) [0x7f1ece01e470] (??:0)
[2] List<Pair<Variant const*, Variant>, DefaultAllocator>::size() const (/home/rafal/Pulpit/godot/./core/list.h:411)
[3] OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator, (unsigned char)3, (unsigned char)8>::size() const (/home/rafal/Pulpit/godot/./core/ordered_hash_map.h:275)
[4] Dictionary::empty() const (/home/rafal/Pulpit/godot/core/dictionary.cpp:130)
[5] Object::get_property_list(List<PropertyInfo, DefaultAllocator>*, bool) const (/home/rafal/Pulpit/godot/core/object.cpp:638)
[6] EditorFolding::_fill_folds(Node const*, Node const*, Array&, Array&, Array&, Set<Ref<Resource>, Comparator<Ref<Resource> >, DefaultAllocator>&) (/home/rafal/Pulpit/godot/editor/editor_folding.cpp:117)
[7] EditorFolding::save_scene_folding(Node const*, String const&) (/home/rafal/Pulpit/godot/editor/editor_folding.cpp:148)
[8] EditorNode::set_current_scene(int) (/home/rafal/Pulpit/godot/editor/editor_node.cpp:3161 (discriminator 5))
[9] MethodBind1<int>::call(Object*, Variant const**, int, Variant::CallError&) (/home/rafal/Pulpit/godot/./core/method_bind.gen.inc:775 (discriminator 12))
[10] Object::call(StringName const&, Variant const**, int, Variant::CallError&) (/home/rafal/Pulpit/godot/core/object.cpp:921 (discriminator 1))
[11] UndoRedo::_process_operation_list(List<UndoRedo::Operation, DefaultAllocator>::Element*) (/home/rafal/Pulpit/godot/core/undo_redo.cpp:294 (discriminator 4))
[12] UndoRedo::redo() (/home/rafal/Pulpit/godot/core/undo_redo.cpp:338)
[13] UndoRedo::commit_action() (/home/rafal/Pulpit/godot/core/undo_redo.cpp:260)
[14] EditorNode::_scene_tab_changed(int) (/home/rafal/Pulpit/godot/editor/editor_node.cpp:4674 (discriminator 4))
[15] MethodBind1<int>::call(Object*, Variant const**, int, Variant::CallError&) (/home/rafal/Pulpit/godot/./core/method_bind.gen.inc:775 (discriminator 12))
[16] Object::call(StringName const&, Variant const**, int, Variant::CallError&) (/home/rafal/Pulpit/godot/core/object.cpp:921 (discriminator 1))
[17] Object::emit_signal(StringName const&, Variant const**, int) (/home/rafal/Pulpit/godot/core/object.cpp:1218 (discriminator 1))
[18] Object::emit_signal(StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&) (/home/rafal/Pulpit/godot/core/object.cpp:1275)
[19] Tabs::set_current_tab(int) (/home/rafal/Pulpit/godot/scene/gui/tabs.cpp:417 (discriminator 4))
[20] Tabs::_gui_input(Ref<InputEvent> const&) (/home/rafal/Pulpit/godot/scene/gui/tabs.cpp:215)
[21] MethodBind1<Ref<InputEvent> const&>::call(Object*, Variant const**, int, Variant::CallError&) (/home/rafal/Pulpit/godot/./core/method_bind.gen.inc:775 (discriminator 12))
[22] Object::call_multilevel(StringName const&, Variant const**, int) (/home/rafal/Pulpit/godot/core/object.cpp:763 (discriminator 1))
[23] Object::call_multilevel(StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&) (/home/rafal/Pulpit/godot/core/object.cpp:864)
[24] Viewport::_gui_call_input(Control*, Ref<InputEvent> const&) (/home/rafal/Pulpit/godot/scene/main/viewport.cpp:1634 (discriminator 2))
[25] Viewport::_gui_input_event(Ref<InputEvent>) (/home/rafal/Pulpit/godot/scene/main/viewport.cpp:1944 (discriminator 3))
[26] Viewport::input(Ref<InputEvent> const&) (/home/rafal/Pulpit/godot/scene/main/viewport.cpp:2789 (discriminator 2))
[27] Viewport::_vp_input(Ref<InputEvent> const&) (/home/rafal/Pulpit/godot/scene/main/viewport.cpp:1410)
[28] MethodBind1<Ref<InputEvent> const&>::call(Object*, Variant const**, int, Variant::CallError&) (/home/rafal/Pulpit/godot/./core/method_bind.gen.inc:775 (discriminator 12))
[29] Object::call(StringName const&, Variant const**, int, Variant::CallError&) (/home/rafal/Pulpit/godot/core/object.cpp:921 (discriminator 1))
[30] Object::call(StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&) (/home/rafal/Pulpit/godot/core/object.cpp:848)
[31] SceneTree::call_group_flags(unsigned int, StringName const&, StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&) (/home/rafal/Pulpit/godot/scene/main/scene_tree.cpp:275)
[32] SceneTree::input_event(Ref<InputEvent> const&) (/home/rafal/Pulpit/godot/scene/main/scene_tree.cpp:430 (discriminator 6))
[33] InputDefault::_parse_input_event_impl(Ref<InputEvent> const&, bool) (/home/rafal/Pulpit/godot/main/input_default.cpp:416)
[34] InputDefault::parse_input_event(Ref<InputEvent> const&) (/home/rafal/Pulpit/godot/main/input_default.cpp:260)
[35] InputDefault::flush_accumulated_events() (/home/rafal/Pulpit/godot/main/input_default.cpp:679)
[36] OS_X11::process_xevents() (/home/rafal/Pulpit/godot/platform/x11/os_x11.cpp:2688)
[37] OS_X11::run() (/home/rafal/Pulpit/godot/platform/x11/os_x11.cpp:3253)
[38] godot(main+0x125) [0x13e596b] (/home/rafal/Pulpit/godot/platform/x11/godot_x11.cpp:57)
[39] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x7f1ecdfff1e3] (??:0)
[40] godot(_start+0x2e) [0x13e578e] (??:?)
=

@henriiquecampos
Copy link
Contributor Author

I think that godotengine/godot-proposals#214 would also solve this

@akien-mga akien-mga changed the title Godot Crashes When Switching Scenes (3.1.stable) tree_exited signal callbacks are run in the editor even when the script is not "tool", can cause editor crash Jan 15, 2020
@akien-mga akien-mga modified the milestones: 3.2, 4.0 Jan 15, 2020
@KoBeWi
Copy link
Member

KoBeWi commented Dec 2, 2020

Still valid in ba51af7

@KoBeWi KoBeWi removed this from the 4.0 milestone Apr 19, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants