godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
91.22k stars 21.22k forks source link

Editor crash when clicking a collision object when editing animation FPS #93817

Closed rodion-david closed 4 months ago

rodion-david commented 4 months ago

Tested versions

System information

Godot v4.2.2.stable - Windows 10.0.22631 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 4060 Laptop GPU (NVIDIA; 31.0.15.5222) - 13th Gen Intel(R) Core(TM) i5-13500H (16 Threads)

Issue description

Editor crashes when selecting a collision object after editing FPS textbox of AnimatedSprite2D animation without confirming it by pressing Enter

Steps to reproduce

  1. Open AnimatedSprite2D menu.
  2. Choose an animation.
  3. Change the animation's FPS.
  4. Without hitting Enter, select a collision object in editor's viewport
  5. PROFIT.

Minimal reproduction project (MRP)

bug.zip

rodion-david commented 4 months ago

https://github.com/godotengine/godot/assets/65399138/90fba361-e7a1-487c-8810-12460e197332

aaronp64 commented 4 months ago

Getting the same crash on latest master. Seems to happen when clicking on any node in the 2D view - clicking in an empty area, or on nodes in the scene tree panel is fine.

Errors and stack trace below:

ERROR: Object argument to Callable constructor must be non-null.
   at: (core\variant\callable.cpp:387)
ERROR: Condition "!p_callable.is_valid()" is true.
   at: UndoRedo::add_do_method (core\object\undo_redo.cpp:147)

================================================================
CrashHandlerException: Program crashed
Engine version: Godot Engine v4.3.beta.custom_build (92c8e87cd987e8d55d176608c3038e9c4646cb2c)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[0] HashMap<StringName,SpriteFrames::Anim,HashMapHasherDefault,HashMapComparatorDefault<StringName>,DefaultTypedAllocator<HashMapElement<StringName,SpriteFrames::Anim> > >::_lookup_pos (C:\dev\godot\core\templates\hash_map.h:100)
[1] SpriteFrames::get_animation_speed (C:\dev\godot\scene\resources\sprite_frames.cpp:145)
[2] SpriteFramesEditor::_animation_speed_changed (C:\dev\godot\editor\plugins\sprite_frames_editor_plugin.cpp:1180)
[3] CallableCustomMethodPointer<SpriteFramesEditor,double>::call (C:\dev\godot\core\object\callable_method_pointer.h:103)
[4] Callable::callp (C:\dev\godot\core\variant\callable.cpp:58)
[5] Object::emit_signalp (C:\dev\godot\core\object\object.cpp:1190)
[6] Node::emit_signalp (C:\dev\godot\scene\main\node.cpp:3890)
[7] Range::_value_changed_notify (C:\dev\godot\scene\gui\range.cpp:48)
[8] Range::set_value (C:\dev\godot\scene\gui\range.cpp:92)
[9] SpinBox::_text_submitted (C:\dev\godot\scene\gui\spin_box.cpp:93)
[10] SpinBox::_line_edit_focus_exit (C:\dev\godot\scene\gui\spin_box.cpp:239)
[11] CallableCustomMethodPointer<SpinBox>::call (C:\dev\godot\core\object\callable_method_pointer.h:104)
[12] Callable::callp (C:\dev\godot\core\variant\callable.cpp:58)
[13] CallQueue::_call_function (C:\dev\godot\core\object\message_queue.cpp:221)
[14] CallQueue::flush (C:\dev\godot\core\object\message_queue.cpp:284)
[15] SceneTree::physics_process (C:\dev\godot\scene\main\scene_tree.cpp:494)
[16] Main::iteration (C:\dev\godot\main\main.cpp:4057)
[17] OS_Windows::run (C:\dev\godot\platform\windows\os_windows.cpp:1686)
[18] widechar_main (C:\dev\godot\platform\windows\godot_windows.cpp:181)
[19] _main (C:\dev\godot\platform\windows\godot_windows.cpp:208)
[20] main (C:\dev\godot\platform\windows\godot_windows.cpp:220)
[21] __scrt_common_main_seh (D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
[22] <couldn't map PC to fn name>
-- END OF BACKTRACE --
================================================================

Similar stack trace with no errors when changing the Frame Duration instead:

================================================================
CrashHandlerException: Program crashed
Engine version: Godot Engine v4.3.beta.custom_build (92c8e87cd987e8d55d176608c3038e9c4646cb2c)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[0] HashMap<StringName,SpriteFrames::Anim,HashMapHasherDefault,HashMapComparatorDefault<StringName>,DefaultTypedAllocator<HashMapElement<StringName,SpriteFrames::Anim> > >::_lookup_pos (C:\dev\godot\core\templates\hash_map.h:100)
[1] SpriteFramesEditor::_frame_duration_changed (C:\dev\godot\editor\plugins\sprite_frames_editor_plugin.cpp:1230)
[2] CallableCustomMethodPointer<SpriteFramesEditor,double>::call (C:\dev\godot\core\object\callable_method_pointer.h:103)
[3] Callable::callp (C:\dev\godot\core\variant\callable.cpp:58)
[4] Object::emit_signalp (C:\dev\godot\core\object\object.cpp:1190)
[5] Node::emit_signalp (C:\dev\godot\scene\main\node.cpp:3890)
[6] Range::_value_changed_notify (C:\dev\godot\scene\gui\range.cpp:48)
[7] Range::set_value (C:\dev\godot\scene\gui\range.cpp:92)
[8] SpinBox::_text_submitted (C:\dev\godot\scene\gui\spin_box.cpp:93)
[9] SpinBox::_line_edit_focus_exit (C:\dev\godot\scene\gui\spin_box.cpp:239)
[10] CallableCustomMethodPointer<SpinBox>::call (C:\dev\godot\core\object\callable_method_pointer.h:104)
[11] Callable::callp (C:\dev\godot\core\variant\callable.cpp:58)
[12] CallQueue::_call_function (C:\dev\godot\core\object\message_queue.cpp:221)
[13] CallQueue::flush (C:\dev\godot\core\object\message_queue.cpp:284)
[14] SceneTree::physics_process (C:\dev\godot\scene\main\scene_tree.cpp:494)
[15] Main::iteration (C:\dev\godot\main\main.cpp:4057)
[16] OS_Windows::run (C:\dev\godot\platform\windows\os_windows.cpp:1686)
[17] widechar_main (C:\dev\godot\platform\windows\godot_windows.cpp:181)
[18] _main (C:\dev\godot\platform\windows\godot_windows.cpp:208)
[19] main (C:\dev\godot\platform\windows\godot_windows.cpp:220)
[20] __scrt_common_main_seh (D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
[21] <couldn't map PC to fn name>
-- END OF BACKTRACE --
================================================================
qarmin commented 4 months ago
editor/plugins/sprite_frames_editor_plugin.cpp:1180:106: runtime error: member call on null pointer of type 'struct SpriteFrames'
editor/plugins/sprite_frames_editor_plugin.cpp:1180:106: runtime error: member access within null pointer of type 'struct SpriteFrames'

================================================================
handle_crash: Program crashed with signal 11
Engine version: Godot Engine v4.3.beta.custom_build (6a13fdcae3662975c101213d47a1eb3a7db63cb3)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[1] ../godot.linuxbsd.editor.dev.x86_64.san(+0x42a256a1) [0x5ab63521e6a1] (/home/runner/work/GodotBuilds/GodotBuilds/godot/platform/linuxbsd/crash_handler_linuxbsd.cpp:61)
[2] /lib/x86_64-linux-gnu/libc.so.6(+0x45320) [0x7ab9b3845320] (??:0)
[3] SpriteFramesEditor::_animation_speed_changed(double) (/home/runner/work/GodotBuilds/GodotBuilds/godot/editor/plugins/sprite_frames_editor_plugin.cpp:1180)
[4] void call_with_variant_args_helper<SpriteFramesEditor, double, 0ul>(SpriteFramesEditor*, void (SpriteFramesEditor::*)(double), Variant const**, Callable::CallError&, IndexSequence<0ul>) (/home/runner/work/GodotBuilds/GodotBuilds/godot/./core/variant/binder_common.h:309 (discriminator 4))
[5] void call_with_variant_args<SpriteFramesEditor, double>(SpriteFramesEditor*, void (SpriteFramesEditor::*)(double), Variant const**, int, Callable::CallError&) (/home/runner/work/GodotBuilds/GodotBuilds/godot/./core/variant/binder_common.h:404)
[6] CallableCustomMethodPointer<SpriteFramesEditor, double>::call(Variant const**, int, Variant&, Callable::CallError&) const (/home/runner/work/GodotBuilds/GodotBuilds/godot/./core/object/callable_method_pointer.h:101)
[7] Callable::callp(Variant const**, int, Variant&, Callable::CallError&) const (/home/runner/work/GodotBuilds/GodotBuilds/godot/core/variant/callable.cpp:57)
[8] Object::emit_signalp(StringName const&, Variant const**, int) (/home/runner/work/GodotBuilds/GodotBuilds/godot/core/object/object.cpp:1188)
[9] Node::emit_signalp(StringName const&, Variant const**, int) (/home/runner/work/GodotBuilds/GodotBuilds/godot/scene/main/node.cpp:3889)
[10] Error Object::emit_signal<double>(StringName const&, double) (/home/runner/work/GodotBuilds/GodotBuilds/godot/./core/object/object.h:936)
[11] Range::_value_changed_notify() (/home/runner/work/GodotBuilds/GodotBuilds/godot/scene/gui/range.cpp:49)
[12] Range::Shared::emit_value_changed() (/home/runner/work/GodotBuilds/GodotBuilds/godot/scene/gui/range.cpp:58)
[13] Range::set_value(double) (/home/runner/work/GodotBuilds/GodotBuilds/godot/scene/gui/range.cpp:94)
[14] SpinBox::_text_submitted(String const&) (/home/runner/work/GodotBuilds/GodotBuilds/godot/scene/gui/spin_box.cpp:95)
[15] SpinBox::_line_edit_focus_exit() (/home/runner/work/GodotBuilds/GodotBuilds/godot/scene/gui/spin_box.cpp:239)
[16] void call_with_variant_args_helper<SpinBox>(SpinBox*, void (SpinBox::*)(), Variant const**, Callable::CallError&, IndexSequence<>) (/home/runner/work/GodotBuilds/GodotBuilds/godot/./core/variant/binder_common.h:309 (discriminator 4))
[17] void call_with_variant_args<SpinBox>(SpinBox*, void (SpinBox::*)(), Variant const**, int, Callable::CallError&) (/home/runner/work/GodotBuilds/GodotBuilds/godot/./core/variant/binder_common.h:404)
[18] CallableCustomMethodPointer<SpinBox>::call(Variant const**, int, Variant&, Callable::CallError&) const (/home/runner/work/GodotBuilds/GodotBuilds/godot/./core/object/callable_method_pointer.h:101)
[19] Callable::callp(Variant const**, int, Variant&, Callable::CallError&) const (/home/runner/work/GodotBuilds/GodotBuilds/godot/core/variant/callable.cpp:57)
[20] CallQueue::_call_function(Callable const&, Variant const*, int, bool) (/home/runner/work/GodotBuilds/GodotBuilds/godot/core/object/message_queue.cpp:221)
[21] CallQueue::flush() (/home/runner/work/GodotBuilds/GodotBuilds/godot/core/object/message_queue.cpp:270)
[22] SceneTree::physics_process(double) (/home/runner/work/GodotBuilds/GodotBuilds/godot/scene/main/scene_tree.cpp:494)
[23] Main::iteration() (/home/runner/work/GodotBuilds/GodotBuilds/godot/main/main.cpp:4057)
[24] OS_LinuxBSD::run() (/home/runner/work/GodotBuilds/GodotBuilds/godot/platform/linuxbsd/os_linuxbsd.cpp:962)
[25] ../godot.linuxbsd.editor.dev.x86_64.san(main+0x4c7) [0x5ab63521e040] (/home/runner/work/GodotBuilds/GodotBuilds/godot/platform/linuxbsd/godot_linuxbsd.cpp:85)
[26] /lib/x86_64-linux-gnu/libc.so.6(+0x2a1ca) [0x7ab9b382a1ca] (??:0)
[27] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x8b) [0x7ab9b382a28b] (??:0)
[28] ../godot.linuxbsd.editor.dev.x86_64.san(_start+0x25) [0x5ab63521dab5] (??:?)
anniryynanen commented 4 months ago

I'll try to fix this.