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

Creating a "Call Method" animation track for a Node that already has a Position3D and Rotation3D animation tracks crashes the engine #96178

Closed
Kadmioo opened this issue Aug 27, 2024 · 8 comments

Comments

@Kadmioo
Copy link

Kadmioo commented Aug 27, 2024

Tested versions

  • Reproducible in v4.2.1.stable.mono.official [b09f793]
  • Reproducible in v4.2.2.stable.mono.official [15073af]
  • NOT reproducible in v4.3.stable.mono.official [77dcf97]

System information

Godot v4.2.1.stable.mono - Windows 10.0.22631 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 2080 Super with Max-Q Design (NVIDIA; 32.0.15.6081) - Intel(R) Core(TM) i7-10875H CPU @ 2.30GHz (16 Threads)

Issue description

Creating a "Call Method" track for a Node that already has both a "3D Position" and "3D Rotation" animation tracks will print "Quaternion must be normalized" errors. Adding multiple keyframes to the position and the rotation tracks crashes the engine.

Issue.Showcase.mov

Steps to reproduce

  1. Start with a scene of your liking, either of a new project or an old one.
  2. Add an AnimationPlayer Node
  3. Add a Node3D or a node that inherits it
  4. Create a new animation in the AnimationPlayer Node
  5. Add 3D Rotation and 3D Position tracks for the Node3D
  6. Add at least two different keyframes for each track
  7. Add a Call Method track for the Node3D
  8. Try navigating the animation timeline
  9. The engine should have now crashed

Minimal reproduction project (MRP)

The bug can be reproduced even in a brand new project, but I've included the project anyway.

Call Method Track Issue.zip

@Kadmioo Kadmioo changed the title Creating a "Call Method" animation track for a Node that already has "Position 3D / Rotation 3D / Scale 3D" animation tracks crashes the engine Creating a "Call Method" animation track for a Node that already has a Position3D and Rotation3D animation tracks crashes the engine Aug 27, 2024
@Kadmioo
Copy link
Author

Kadmioo commented Aug 27, 2024

I've now tried replicating the bug in 4.3, but I did not find any problems.

@AThousandShips
Copy link
Member

Please try 4.2.2 as well

@Kadmioo
Copy link
Author

Kadmioo commented Aug 27, 2024

Please try 4.2.2 as well

Done, it is an issue in 4.2.2 as well.

@AThousandShips
Copy link
Member

@Kadmioo
Copy link
Author

Kadmioo commented Aug 27, 2024

I've opened the MRP of the other author, and I've verified that the reason the engine crashes is the same. I've narrowed down the conditions required to manifest the issue:

  1. Create either a 3D Position or a 3D Rotation track
  2. Add at least two different keyframes
  3. Create a Call Method track for the same node
  4. Try navigating the animation timeline

The steps must be executed in this exact order. Creating a call method track first and a 3D Position/Rotation track later manifests no issues.

@AThousandShips
Copy link
Member

Then please see there for details, a 4.2 fix is not feasible it seems, leaving this open for now but I don't think this can be fixed in 4.2

@AThousandShips AThousandShips added this to the 4.2 milestone Aug 27, 2024
@matheusmdx
Copy link
Contributor

matheusmdx commented Aug 28, 2024

This probably will be useless but anyways, this crash started after pr #80813 because a null pointer after a Object::cast_to with this backtrace:

Backtrace
================================================================
CrashHandlerException: Program crashed
Engine version: Godot Engine v4.2.dev.custom_build (1b95827d3ef244de322b0c16deb49fefe48ed1a1)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[0] Skeleton3D::get_motion_scale (C:\Users\Matheus\Downloads\Godot Source\scene\3d\skeleton_3d.cpp:375)
[1] AnimationMixer::_post_process_key_value (C:\Users\Matheus\Downloads\Godot Source\scene\animation\animation_mixer.cpp:945)
[2] AnimationMixer::post_process_key_value (C:\Users\Matheus\Downloads\Godot Source\scene\animation\animation_mixer.cpp:936)
[3] AnimationMixer::_blend_process (C:\Users\Matheus\Downloads\Godot Source\scene\animation\animation_mixer.cpp:1179)
[4] AnimationMixer::_process_animation (C:\Users\Matheus\Downloads\Godot Source\scene\animation\animation_mixer.cpp:925)
[5] AnimationPlayer::seek (C:\Users\Matheus\Downloads\Godot Source\scene\animation\animation_player.cpp:537)
[6] AnimationPlayer::_stop_internal (C:\Users\Matheus\Downloads\Godot Source\scene\animation\animation_player.cpp:584)
[7] AnimationPlayer::stop (C:\Users\Matheus\Downloads\Godot Source\scene\animation\animation_player.cpp:499)
[8] AnimationPlayerEditor::_seek_value_changed (C:\Users\Matheus\Downloads\Godot Source\editor\plugins\animation_player_editor_plugin.cpp:1274)
[9] AnimationPlayerEditor::_animation_key_editor_seek (C:\Users\Matheus\Downloads\Godot Source\editor\plugins\animation_player_editor_plugin.cpp:1347)
[10] AnimationPlayerEditor::_animation_selected (C:\Users\Matheus\Downloads\Godot Source\editor\plugins\animation_player_editor_plugin.cpp:339)
[11] AnimationPlayerEditor::_update_player (C:\Users\Matheus\Downloads\Godot Source\editor\plugins\animation_player_editor_plugin.cpp:962)
[12] AnimationPlayerEditor::edit (C:\Users\Matheus\Downloads\Godot Source\editor\plugins\animation_player_editor_plugin.cpp:1111)
[13] AnimationPlayerEditorPlugin::edit (C:\Users\Matheus\Downloads\Godot Source\editor\plugins\animation_player_editor_plugin.cpp:2136)
[14] EditorNode::_plugin_over_edit (C:\Users\Matheus\Downloads\Godot Source\editor\editor_node.cpp:847)
[15] EditorNode::edit_item (C:\Users\Matheus\Downloads\Godot Source\editor\editor_node.cpp:2169)
[16] EditorNode::_edit_current (C:\Users\Matheus\Downloads\Godot Source\editor\editor_node.cpp:2440)
[17] EditorNode::push_item (C:\Users\Matheus\Downloads\Godot Source\editor\editor_node.cpp:2201)
[18] EditorNode::push_node_item (C:\Users\Matheus\Downloads\Godot Source\editor\editor_node.cpp:2175)
[19] SceneTreeDock::_push_item (C:\Users\Matheus\Downloads\Godot Source\editor\scene_tree_dock.cpp:1492)
[20] SceneTreeDock::input (C:\Users\Matheus\Downloads\Godot Source\editor\scene_tree_dock.cpp:91)
[21] Node::_call_input (C:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:3112)
[22] SceneTree::_call_input_pause (C:\Users\Matheus\Downloads\Godot Source\scene\main\scene_tree.cpp:1199)
[23] Viewport::push_input (C:\Users\Matheus\Downloads\Godot Source\scene\main\viewport.cpp:3183)
[24] Window::_window_input (C:\Users\Matheus\Downloads\Godot Source\scene\main\window.cpp:1549)
[25] call_with_variant_args_helper<Window,Ref<InputEvent> const &,0> (C:\Users\Matheus\Downloads\Godot Source\core\variant\binder_common.h:303)
[26] call_with_variant_args<Window,Ref<InputEvent> const &> (C:\Users\Matheus\Downloads\Godot Source\core\variant\binder_common.h:418)
[27] CallableCustomMethodPointer<Window,Ref<InputEvent> const &>::call (C:\Users\Matheus\Downloads\Godot Source\core\object\callable_method_pointer.h:105)
[28] Callable::callp (C:\Users\Matheus\Downloads\Godot Source\core\variant\callable.cpp:51)
[29] DisplayServerWindows::_dispatch_input_event (C:\Users\Matheus\Downloads\Godot Source\platform\windows\display_server_windows.cpp:2642)
[30] DisplayServerWindows::_dispatch_input_events (C:\Users\Matheus\Downloads\Godot Source\platform\windows\display_server_windows.cpp:2605)
[31] Input::_parse_input_event_impl (C:\Users\Matheus\Downloads\Godot Source\core\input\input.cpp:751)
[32] Input::flush_buffered_events (C:\Users\Matheus\Downloads\Godot Source\core\input\input.cpp:1013)
[33] DisplayServerWindows::process_events (C:\Users\Matheus\Downloads\Godot Source\platform\windows\display_server_windows.cpp:2317)
[34] OS_Windows::run (C:\Users\Matheus\Downloads\Godot Source\platform\windows\os_windows.cpp:1474)
[35] widechar_main (C:\Users\Matheus\Downloads\Godot Source\platform\windows\godot_windows.cpp:182)
[36] _main (C:\Users\Matheus\Downloads\Godot Source\platform\windows\godot_windows.cpp:204)
[37] main (C:\Users\Matheus\Downloads\Godot Source\platform\windows\godot_windows.cpp:218)
[38] WinMain (C:\Users\Matheus\Downloads\Godot Source\platform\windows\godot_windows.cpp:232)
[39] __scrt_common_main_seh (D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
[40] <couldn't map PC to fn name>
-- END OF BACKTRACE --
================================================================

Handling the null pointer stops this crash but crash after with two different backtraces:

Backtrace 1
ntdll.dll!00007ffd35f4f3c2() (Unknown Source:0)
ntdll.dll!00007ffd35f58182() (Unknown Source:0)
ntdll.dll!00007ffd35f5846a() (Unknown Source:0)
ntdll.dll!00007ffd35f5e0f1() (Unknown Source:0)
ntdll.dll!00007ffd35ef79d2() (Unknown Source:0)
ntdll.dll!00007ffd35e747b1() (Unknown Source:0)
_free_base(void * block) Line 105 (c:\Users\Matheus\AppData\Local\Programs\Microsoft VS Code\minkernel\crts\ucrt\src\appcrt\heap\free_base.cpp:105)
Memory::free_static(void * p_ptr, bool p_pad_align) Line 169 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.cpp:169)
memdelete<CallableCustom>(CallableCustom * p_class) Line 113 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:113)
Callable::~Callable() Line 378 (c:\Users\Matheus\Downloads\Godot Source\core\variant\callable.cpp:378)
Object::Connection::~Connection() (Unknown Source:0)
Object::SignalData::Slot::~Slot() (Unknown Source:0)
KeyValue<Callable,Object::SignalData::Slot>::~KeyValue<Callable,Object::SignalData::Slot>() (Unknown Source:0)
HashMapElement<Callable,Object::SignalData::Slot>::~HashMapElement<Callable,Object::SignalData::Slot>() (Unknown Source:0)
HashMapElement<Callable,Object::SignalData::Slot>::`scalar deleting destructor'(unsigned int) (Unknown Source:0)
memdelete<HashMapElement<Callable,Object::SignalData::Slot>>(HashMapElement<Callable,Object::SignalData::Slot> * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
DefaultTypedAllocator<HashMapElement<Callable,Object::SignalData::Slot>>::delete_allocation(HashMapElement<Callable,Object::SignalData::Slot> * p_allocation) Line 206 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:206)
HashMap<Callable,Object::SignalData::Slot,HashableHasher<Callable>,HashMapComparatorDefault<Callable>,DefaultTypedAllocator<HashMapElement<Callable,Object::SignalData::Slot>>>::clear() Line 266 (c:\Users\Matheus\Downloads\Godot Source\core\templates\hash_map.h:266)
HashMap<Callable,Object::SignalData::Slot,HashableHasher<Callable>,HashMapComparatorDefault<Callable>,DefaultTypedAllocator<HashMapElement<Callable,Object::SignalData::Slot>>>::~HashMap<Callable,Object::SignalData::Slot,HashableHasher<Callable>,HashMapComparatorDefault<Callable>,DefaultTypedAllocator<HashMapElement<Callable,Object::SignalData::Slot>>>() Line 618 (c:\Users\Matheus\Downloads\Godot Source\core\templates\hash_map.h:618)
Object::SignalData::~SignalData() (Unknown Source:0)
KeyValue<StringName,Object::SignalData>::~KeyValue<StringName,Object::SignalData>() (Unknown Source:0)
HashMapElement<StringName,Object::SignalData>::~HashMapElement<StringName,Object::SignalData>() (Unknown Source:0)
HashMapElement<StringName,Object::SignalData>::`scalar deleting destructor'(unsigned int) (Unknown Source:0)
memdelete<HashMapElement<StringName,Object::SignalData>>(HashMapElement<StringName,Object::SignalData> * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
DefaultTypedAllocator<HashMapElement<StringName,Object::SignalData>>::delete_allocation(HashMapElement<StringName,Object::SignalData> * p_allocation) Line 206 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:206)
HashMap<StringName,Object::SignalData,HashMapHasherDefault,HashMapComparatorDefault<StringName>,DefaultTypedAllocator<HashMapElement<StringName,Object::SignalData>>>::erase(const StringName & p_key) Line 350 (c:\Users\Matheus\Downloads\Godot Source\core\templates\hash_map.h:350)
Object::~Object() Line 1998 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:1998)
Node::~Node() Line 3551 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:3551)
CanvasItem::~CanvasItem() Line 1486 (c:\Users\Matheus\Downloads\Godot Source\scene\main\canvas_item.cpp:1486)
Control::~Control() Line 3694 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\control.cpp:3694)
AnimationTrackEdit::~AnimationTrackEdit() (Unknown Source:0)
AnimationTrackEdit::`scalar deleting destructor'(unsigned int) (Unknown Source:0)
memdelete<Node>(Node * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
Node::_notification(int p_notification) Line 213 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:213)
Node::_notificationv(int p_notification, bool p_reversed) Line 49 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.h:49)
CanvasItem::_notificationv(int p_notification, bool p_reversed) Line 45 (c:\Users\Matheus\Downloads\Godot Source\scene\main\canvas_item.h:45)
Control::_notificationv(int p_notification, bool p_reversed) Line 48 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\control.h:48)
Container::_notificationv(int p_notification, bool p_reversed) Line 37 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\container.h:37)
BoxContainer::_notificationv(int p_notification, bool p_reversed) Line 37 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\box_container.h:37)
VBoxContainer::_notificationv(int p_notification, bool p_reversed) Line 90 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\box_container.h:90)
Object::notification(int p_notification, bool p_reversed) Line 844 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:844)
Object::_predelete() Line 199 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:199)
predelete_handler(Object * p_object) Line 2028 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:2028)
memdelete<Node>(Node * p_class) Line 105 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:105)
AnimationTrackEditor::_update_tracks() Line 4327 (c:\Users\Matheus\Downloads\Godot Source\editor\animation_track_editor.cpp:4327)
AnimationTrackEditor::set_animation(const Ref<Animation> & p_anim, bool p_read_only) Line 3315 (c:\Users\Matheus\Downloads\Godot Source\editor\animation_track_editor.cpp:3315)
AnimationPlayerEditor::_update_player() Line 973 (c:\Users\Matheus\Downloads\Godot Source\editor\plugins\animation_player_editor_plugin.cpp:973)
AnimationPlayerEditor::edit(AnimationMixer * p_node, AnimationPlayer * p_player, bool p_is_dummy) Line 1111 (c:\Users\Matheus\Downloads\Godot Source\editor\plugins\animation_player_editor_plugin.cpp:1111)
AnimationPlayerEditorPlugin::edit(Object * p_object) Line 2136 (c:\Users\Matheus\Downloads\Godot Source\editor\plugins\animation_player_editor_plugin.cpp:2136)
EditorNode::_plugin_over_edit(EditorPlugin * p_plugin, Object * p_object) Line 847 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_node.cpp:847)
EditorNode::edit_item(Object * p_object, Object * p_editing_owner) Line 2169 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_node.cpp:2169)
EditorNode::_edit_current(bool p_skip_foreign) Line 2440 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_node.cpp:2440)
EditorNode::push_item(Object * p_object, const String & p_property, bool p_inspector_only) Line 2201 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_node.cpp:2201)
EditorNode::push_node_item(Node * p_node) Line 2175 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_node.cpp:2175)
SceneTreeDock::_push_item(Object * p_object) Line 1492 (c:\Users\Matheus\Downloads\Godot Source\editor\scene_tree_dock.cpp:1492)
SceneTreeDock::input(const Ref<InputEvent> & p_event) Line 91 (c:\Users\Matheus\Downloads\Godot Source\editor\scene_tree_dock.cpp:91)
Node::_call_input(const Ref<InputEvent> & p_event) Line 3112 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:3112)
SceneTree::_call_input_pause(const StringName & p_group, SceneTree::CallInputType p_call_type, const Ref<InputEvent> & p_input, Viewport * p_viewport) Line 1199 (c:\Users\Matheus\Downloads\Godot Source\scene\main\scene_tree.cpp:1199)
Viewport::push_input(const Ref<InputEvent> & p_event, bool p_local_coords) Line 3183 (c:\Users\Matheus\Downloads\Godot Source\scene\main\viewport.cpp:3183)
Window::_window_input(const Ref<InputEvent> & p_ev) Line 1549 (c:\Users\Matheus\Downloads\Godot Source\scene\main\window.cpp:1549)
call_with_variant_args_helper<Window,Ref<InputEvent> const &,0>(Window * p_instance, void(Window::*)(const Ref<InputEvent> &) p_method, const Variant * * p_args, Callable::CallError & r_error, IndexSequence<0> __formal) Line 303 (c:\Users\Matheus\Downloads\Godot Source\core\variant\binder_common.h:303)
call_with_variant_args<Window,Ref<InputEvent> const &>(Window * p_instance, void(Window::*)(const Ref<InputEvent> &) p_method, const Variant * * p_args, int p_argcount, Callable::CallError & r_error) Line 418 (c:\Users\Matheus\Downloads\Godot Source\core\variant\binder_common.h:418)
CallableCustomMethodPointer<Window,Ref<InputEvent> const &>::call(const Variant * * p_arguments, int p_argcount, Variant & r_return_value, Callable::CallError & r_call_error) Line 105 (c:\Users\Matheus\Downloads\Godot Source\core\object\callable_method_pointer.h:105)
Callable::callp(const Variant * * p_arguments, int p_argcount, Variant & r_return_value, Callable::CallError & r_call_error) Line 51 (c:\Users\Matheus\Downloads\Godot Source\core\variant\callable.cpp:51)
DisplayServerWindows::_dispatch_input_event(const Ref<InputEvent> & p_event) Line 2642 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\display_server_windows.cpp:2642)
DisplayServerWindows::_dispatch_input_events(const Ref<InputEvent> & p_event) Line 2605 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\display_server_windows.cpp:2605)
Input::_parse_input_event_impl(const Ref<InputEvent> & p_event, bool p_is_emulated) Line 751 (c:\Users\Matheus\Downloads\Godot Source\core\input\input.cpp:751)
Input::flush_buffered_events() Line 1013 (c:\Users\Matheus\Downloads\Godot Source\core\input\input.cpp:1013)
DisplayServerWindows::process_events() Line 2317 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\display_server_windows.cpp:2317)
OS_Windows::run() Line 1474 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\os_windows.cpp:1474)
widechar_main(int argc, wchar_t * * argv) Line 182 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\godot_windows.cpp:182)
_main() Line 204 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\godot_windows.cpp:204)
main(int argc, char * * argv) Line 218 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\godot_windows.cpp:218)
WinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, char * lpCmdLine, int nCmdShow) Line 232 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\godot_windows.cpp:232)
[Inline Frame] invoke_main() Line 102 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:102)
__scrt_common_main_seh() Line 288 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
kernel32.dll!00007ffd341e7374() (Unknown Source:0)
ntdll.dll!00007ffd35e9cc91() (Unknown Source:0)

Backtrace 2

std::_Atomic_integral<unsigned int,4>::fetch_add(const unsigned int _Operand, const std::memory_order _Order) Line 1507 (c:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\atomic:1507)
std::_Atomic_integral_facade<unsigned int>::fetch_sub(const unsigned int _Operand, const std::memory_order _Order) Line 1724 (c:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\atomic:1724)
SafeNumeric<unsigned int>::decrement() Line 87 (c:\Users\Matheus\Downloads\Godot Source\core\templates\safe_refcount.h:87)
CowData<Variant>::_unref(void * p_data) Line 205 (c:\Users\Matheus\Downloads\Godot Source\core\templates\cowdata.h:205)
CowData<Variant>::~CowData<Variant>() Line 416 (c:\Users\Matheus\Downloads\Godot Source\core\templates\cowdata.h:416)
Vector<Variant>::~Vector<Variant>() Line 290 (c:\Users\Matheus\Downloads\Godot Source\core\templates\vector.h:290)
CallableCustomBind::~CallableCustomBind() Line 165 (c:\Users\Matheus\Downloads\Godot Source\core\variant\callable_bind.cpp:165)
CallableCustomBind::`scalar deleting destructor'(unsigned int) (Unknown Source:0)
memdelete<CallableCustom>(CallableCustom * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
Callable::~Callable() Line 378 (c:\Users\Matheus\Downloads\Godot Source\core\variant\callable.cpp:378)
Object::Connection::~Connection() (Unknown Source:0)
Object::SignalData::Slot::~Slot() (Unknown Source:0)
KeyValue<Callable,Object::SignalData::Slot>::~KeyValue<Callable,Object::SignalData::Slot>() (Unknown Source:0)
HashMapElement<Callable,Object::SignalData::Slot>::~HashMapElement<Callable,Object::SignalData::Slot>() (Unknown Source:0)
HashMapElement<Callable,Object::SignalData::Slot>::`scalar deleting destructor'(unsigned int) (Unknown Source:0)
memdelete<HashMapElement<Callable,Object::SignalData::Slot>>(HashMapElement<Callable,Object::SignalData::Slot> * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
DefaultTypedAllocator<HashMapElement<Callable,Object::SignalData::Slot>>::delete_allocation(HashMapElement<Callable,Object::SignalData::Slot> * p_allocation) Line 206 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:206)
HashMap<Callable,Object::SignalData::Slot,HashableHasher<Callable>,HashMapComparatorDefault<Callable>,DefaultTypedAllocator<HashMapElement<Callable,Object::SignalData::Slot>>>::clear() Line 266 (c:\Users\Matheus\Downloads\Godot Source\core\templates\hash_map.h:266)
HashMap<Callable,Object::SignalData::Slot,HashableHasher<Callable>,HashMapComparatorDefault<Callable>,DefaultTypedAllocator<HashMapElement<Callable,Object::SignalData::Slot>>>::~HashMap<Callable,Object::SignalData::Slot,HashableHasher<Callable>,HashMapComparatorDefault<Callable>,DefaultTypedAllocator<HashMapElement<Callable,Object::SignalData::Slot>>>() Line 618 (c:\Users\Matheus\Downloads\Godot Source\core\templates\hash_map.h:618)
Object::SignalData::~SignalData() (Unknown Source:0)
KeyValue<StringName,Object::SignalData>::~KeyValue<StringName,Object::SignalData>() (Unknown Source:0)
HashMapElement<StringName,Object::SignalData>::~HashMapElement<StringName,Object::SignalData>() (Unknown Source:0)
HashMapElement<StringName,Object::SignalData>::`scalar deleting destructor'(unsigned int) (Unknown Source:0)
memdelete<HashMapElement<StringName,Object::SignalData>>(HashMapElement<StringName,Object::SignalData> * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
DefaultTypedAllocator<HashMapElement<StringName,Object::SignalData>>::delete_allocation(HashMapElement<StringName,Object::SignalData> * p_allocation) Line 206 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:206)
HashMap<StringName,Object::SignalData,HashMapHasherDefault,HashMapComparatorDefault<StringName>,DefaultTypedAllocator<HashMapElement<StringName,Object::SignalData>>>::erase(const StringName & p_key) Line 350 (c:\Users\Matheus\Downloads\Godot Source\core\templates\hash_map.h:350)
Object::~Object() Line 1998 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:1998)
Node::~Node() Line 3551 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:3551)
CanvasItem::~CanvasItem() Line 1486 (c:\Users\Matheus\Downloads\Godot Source\scene\main\canvas_item.cpp:1486)
Control::~Control() Line 3694 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\control.cpp:3694)
AnimationTrackEdit::~AnimationTrackEdit() (Unknown Source:0)
AnimationTrackEdit::`scalar deleting destructor'(unsigned int) (Unknown Source:0)
memdelete<Node>(Node * p_class) Line 112 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:112)
Node::_notification(int p_notification) Line 213 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:213)
Node::_notificationv(int p_notification, bool p_reversed) Line 49 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.h:49)
CanvasItem::_notificationv(int p_notification, bool p_reversed) Line 45 (c:\Users\Matheus\Downloads\Godot Source\scene\main\canvas_item.h:45)
Control::_notificationv(int p_notification, bool p_reversed) Line 48 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\control.h:48)
Container::_notificationv(int p_notification, bool p_reversed) Line 37 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\container.h:37)
BoxContainer::_notificationv(int p_notification, bool p_reversed) Line 37 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\box_container.h:37)
VBoxContainer::_notificationv(int p_notification, bool p_reversed) Line 90 (c:\Users\Matheus\Downloads\Godot Source\scene\gui\box_container.h:90)
Object::notification(int p_notification, bool p_reversed) Line 844 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:844)
Object::_predelete() Line 199 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:199)
predelete_handler(Object * p_object) Line 2028 (c:\Users\Matheus\Downloads\Godot Source\core\object\object.cpp:2028)
memdelete<Node>(Node * p_class) Line 105 (c:\Users\Matheus\Downloads\Godot Source\core\os\memory.h:105)
AnimationTrackEditor::_update_tracks() Line 4327 (c:\Users\Matheus\Downloads\Godot Source\editor\animation_track_editor.cpp:4327)
AnimationTrackEditor::set_animation(const Ref<Animation> & p_anim, bool p_read_only) Line 3315 (c:\Users\Matheus\Downloads\Godot Source\editor\animation_track_editor.cpp:3315)
AnimationPlayerEditor::_update_player() Line 973 (c:\Users\Matheus\Downloads\Godot Source\editor\plugins\animation_player_editor_plugin.cpp:973)
AnimationPlayerEditor::edit(AnimationMixer * p_node, AnimationPlayer * p_player, bool p_is_dummy) Line 1111 (c:\Users\Matheus\Downloads\Godot Source\editor\plugins\animation_player_editor_plugin.cpp:1111)
AnimationPlayerEditorPlugin::edit(Object * p_object) Line 2136 (c:\Users\Matheus\Downloads\Godot Source\editor\plugins\animation_player_editor_plugin.cpp:2136)
EditorNode::_plugin_over_edit(EditorPlugin * p_plugin, Object * p_object) Line 847 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_node.cpp:847)
EditorNode::edit_item(Object * p_object, Object * p_editing_owner) Line 2169 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_node.cpp:2169)
EditorNode::_edit_current(bool p_skip_foreign) Line 2440 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_node.cpp:2440)
EditorNode::push_item(Object * p_object, const String & p_property, bool p_inspector_only) Line 2201 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_node.cpp:2201)
EditorNode::push_node_item(Node * p_node) Line 2175 (c:\Users\Matheus\Downloads\Godot Source\editor\editor_node.cpp:2175)
SceneTreeDock::_push_item(Object * p_object) Line 1492 (c:\Users\Matheus\Downloads\Godot Source\editor\scene_tree_dock.cpp:1492)
SceneTreeDock::input(const Ref<InputEvent> & p_event) Line 91 (c:\Users\Matheus\Downloads\Godot Source\editor\scene_tree_dock.cpp:91)
Node::_call_input(const Ref<InputEvent> & p_event) Line 3112 (c:\Users\Matheus\Downloads\Godot Source\scene\main\node.cpp:3112)
SceneTree::_call_input_pause(const StringName & p_group, SceneTree::CallInputType p_call_type, const Ref<InputEvent> & p_input, Viewport * p_viewport) Line 1199 (c:\Users\Matheus\Downloads\Godot Source\scene\main\scene_tree.cpp:1199)
Viewport::push_input(const Ref<InputEvent> & p_event, bool p_local_coords) Line 3183 (c:\Users\Matheus\Downloads\Godot Source\scene\main\viewport.cpp:3183)
Window::_window_input(const Ref<InputEvent> & p_ev) Line 1549 (c:\Users\Matheus\Downloads\Godot Source\scene\main\window.cpp:1549)
call_with_variant_args_helper<Window,Ref<InputEvent> const &,0>(Window * p_instance, void(Window::*)(const Ref<InputEvent> &) p_method, const Variant * * p_args, Callable::CallError & r_error, IndexSequence<0> __formal) Line 303 (c:\Users\Matheus\Downloads\Godot Source\core\variant\binder_common.h:303)
call_with_variant_args<Window,Ref<InputEvent> const &>(Window * p_instance, void(Window::*)(const Ref<InputEvent> &) p_method, const Variant * * p_args, int p_argcount, Callable::CallError & r_error) Line 418 (c:\Users\Matheus\Downloads\Godot Source\core\variant\binder_common.h:418)
CallableCustomMethodPointer<Window,Ref<InputEvent> const &>::call(const Variant * * p_arguments, int p_argcount, Variant & r_return_value, Callable::CallError & r_call_error) Line 105 (c:\Users\Matheus\Downloads\Godot Source\core\object\callable_method_pointer.h:105)
Callable::callp(const Variant * * p_arguments, int p_argcount, Variant & r_return_value, Callable::CallError & r_call_error) Line 51 (c:\Users\Matheus\Downloads\Godot Source\core\variant\callable.cpp:51)
DisplayServerWindows::_dispatch_input_event(const Ref<InputEvent> & p_event) Line 2642 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\display_server_windows.cpp:2642)
DisplayServerWindows::_dispatch_input_events(const Ref<InputEvent> & p_event) Line 2605 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\display_server_windows.cpp:2605)
Input::_parse_input_event_impl(const Ref<InputEvent> & p_event, bool p_is_emulated) Line 751 (c:\Users\Matheus\Downloads\Godot Source\core\input\input.cpp:751)
Input::flush_buffered_events() Line 1013 (c:\Users\Matheus\Downloads\Godot Source\core\input\input.cpp:1013)
DisplayServerWindows::process_events() Line 2317 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\display_server_windows.cpp:2317)
OS_Windows::run() Line 1474 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\os_windows.cpp:1474)
widechar_main(int argc, wchar_t * * argv) Line 182 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\godot_windows.cpp:182)
_main() Line 204 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\godot_windows.cpp:204)
main(int argc, char * * argv) Line 218 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\godot_windows.cpp:218)
WinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, char * lpCmdLine, int nCmdShow) Line 232 (c:\Users\Matheus\Downloads\Godot Source\platform\windows\godot_windows.cpp:232)
[Inline Frame] invoke_main() Line 102 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:102)
__scrt_common_main_seh() Line 288 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
kernel32.dll!00007ffd341e7374() (Unknown Source:0)
ntdll.dll!00007ffd35e9cc91() (Unknown Source:0)

Properly fixing this don't being possible would be nice lock the creation of a method call track if a position/rotation track already exists to avoid the crash

@akien-mga
Copy link
Member

I'm fairly sure this was fixed in 4.3 by #86687, and this PR is a major refactoring that can't be backported.
So I'm afraid this issue will stay a "wontfix" for 4.2.

@akien-mga akien-mga removed this from the 4.2 milestone Aug 28, 2024
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

4 participants