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

Crash in animation bezier editor when moving keys #31924

Open
puthre opened this issue Sep 3, 2019 · 6 comments
Open

Crash in animation bezier editor when moving keys #31924

puthre opened this issue Sep 3, 2019 · 6 comments

Comments

@puthre
Copy link
Contributor

puthre commented Sep 3, 2019

3.2.alpha latest master with a few patches of my own.

Ubuntu 18.04

Crash with backtrace when moving keys. The terminal shows the following:

ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_remove_key_at_position: Condition ' idx < 0 ' is true.
   At: scene/resources/animation.cpp:888.
ERROR: track_get_key_time: Index p_key_idx=63 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=62 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=61 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=60 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=59 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=58 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=57 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=56 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=55 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=54 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=53 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=52 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=51 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=50 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=49 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=48 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=47 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=46 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=45 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=44 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=43 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=42 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=41 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=40 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=39 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=38 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=37 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=36 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=35 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=34 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=33 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=32 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=31 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=30 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=29 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=28 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=27 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=26 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=25 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=24 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=23 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=22 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=21 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=20 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=19 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=18 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=17 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=16 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=15 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=14 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=13 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=12 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=11 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=10 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=9 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=8 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=7 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=6 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=5 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=4 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=63 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_value: Index p_key_idx=63 out of size (bt->values.size()=4)
   At: scene/resources/animation.cpp:1211.
ERROR: operator[]: FATAL: Index p_index=0 out of size (((Vector<T> *)(this))->_cowdata.size()=0)
   At: ./core/vector.h:49.
handle_crash: Program crashed with signal 4
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) [0x7feb2e2c7f20] (??:0)
[2] VectorWriteProxy<Variant>::operator[](int) (/home/puthre/godot/mygodot/godot/./core/vector.h:49 (discriminator 7))
[3] Array::operator[](int) (/home/puthre/godot/mygodot/godot/core/array.cpp:76)
[4] AnimationBezierTrackEdit::_gui_input(Ref<InputEvent> const&) (/home/puthre/godot/mygodot/godot/editor/animation_bezier_editor.cpp:905)
[5] MethodBind1<Ref<InputEvent> const&>::call(Object*, Variant const**, int, Variant::CallError&) (/home/puthre/godot/mygodot/godot/./core/method_bind.gen.inc:775 (discriminator 12))
[6] Object::call_multilevel(StringName const&, Variant const**, int) (/home/puthre/godot/mygodot/godot/core/object.cpp:763 (discriminator 1))
[7] Object::call_multilevel(StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&) (/home/puthre/godot/mygodot/godot/core/object.cpp:864)
[8] Viewport::_gui_call_input(Control*, Ref<InputEvent> const&) (/home/puthre/godot/mygodot/godot/scene/main/viewport.cpp:1520 (discriminator 2))
[9] Viewport::_gui_input_event(Ref<InputEvent>) (/home/puthre/godot/mygodot/godot/scene/main/viewport.cpp:1894 (discriminator 3))
[10] Viewport::input(Ref<InputEvent> const&) (/home/puthre/godot/mygodot/godot/scene/main/viewport.cpp:2668 (discriminator 2))
[11] Viewport::_vp_input(Ref<InputEvent> const&) (/home/puthre/godot/mygodot/godot/scene/main/viewport.cpp:1297)
[12] MethodBind1<Ref<InputEvent> const&>::call(Object*, Variant const**, int, Variant::CallError&) (/home/puthre/godot/mygodot/godot/./core/method_bind.gen.inc:775 (discriminator 12))
[13] Object::call(StringName const&, Variant const**, int, Variant::CallError&) (/home/puthre/godot/mygodot/godot/core/object.cpp:921 (discriminator 1))
[14] Object::call(StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&) (/home/puthre/godot/mygodot/godot/core/object.cpp:848)
[15] SceneTree::call_group_flags(unsigned int, StringName const&, StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&) (/home/puthre/godot/mygodot/godot/scene/main/scene_tree.cpp:264)
[16] SceneTree::input_event(Ref<InputEvent> const&) (/home/puthre/godot/mygodot/godot/scene/main/scene_tree.cpp:419 (discriminator 6))
[17] InputDefault::_parse_input_event_impl(Ref<InputEvent> const&, bool) (/home/puthre/godot/mygodot/godot/main/input_default.cpp:416)
[18] InputDefault::parse_input_event(Ref<InputEvent> const&) (/home/puthre/godot/mygodot/godot/main/input_default.cpp:260)
[19] InputDefault::flush_accumulated_events() (/home/puthre/godot/mygodot/godot/main/input_default.cpp:679)
[20] OS_X11::process_xevents() (/home/puthre/godot/mygodot/godot/platform/x11/os_x11.cpp:2619)
[21] OS_X11::run() (/home/puthre/godot/mygodot/godot/platform/x11/os_x11.cpp:3182)
[22] /home/puthre/godot/mygodot/godot/bin/godot.x11.tools.64(main+0x128) [0x13c054f] (/home/puthre/godot/mygodot/godot/platform/x11/godot_x11.cpp:57)
[23] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7feb2e2aab97] (??:0)
[24] /home/puthre/godot/mygodot/godot/bin/godot.x11.tools.64(_start+0x2a) [0x13c036a] (??:?)
-- END OF BACKTRACE --

@KoBeWi
Copy link
Member

KoBeWi commented Sep 3, 2019

Doesn't happen in 5323d24. You sure it's not one of the patches you use? Reproduction project/more precise steps?

@puthre
Copy link
Contributor Author

puthre commented Sep 3, 2019

Doesn't happen in 5323d24. You sure it's not one of the patches you use? Reproduction project/more precise steps?

It happened only once and I thought it's best to write it down maybe it helps. I've tried a few minutes to reproduce it but I couldn't. It's not very likely from the patches I use, they focus on very specific things that have nothing to do with the animation editor. I'll keep an eye on it as I have some animations to edit.

@puthre
Copy link
Contributor Author

puthre commented Sep 4, 2019

Crashed again. I think it's related to duplicate and then move in some conditions.

ERROR: track_get_key_time: Index p_key_idx=2 out of size (bt->values.size()=2)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=2 out of size (bt->values.size()=2)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_value: Index p_key_idx=2 out of size (bt->values.size()=2)
   At: scene/resources/animation.cpp:1211.
ERROR: _process_operation_list: Error calling method from signal 'track_insert_key': 'Animation::track_insert_key': Method expected 3 arguments, but called with 2.
   At: core/undo_redo.cpp:296.
ERROR: track_get_key_time: Index p_key_idx=2 out of size (bt->values.size()=2)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_time: Index p_key_idx=2 out of size (bt->values.size()=2)
   At: scene/resources/animation.cpp:1278.
ERROR: track_get_key_value: Index p_key_idx=2 out of size (bt->values.size()=2)
   At: scene/resources/animation.cpp:1211.
ERROR: operator[]: FATAL: Index p_index=0 out of size (((Vector<T> *)(this))->_cowdata.size()=0)
   At: ./core/vector.h:49.
handle_crash: Program crashed with signal 4
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) [0x7f30ed523f20] (??:0)
[2] VectorWriteProxy<Variant>::operator[](int) (/home/puthre/godot/mygodot/godot/./core/vector.h:49 (discriminator 7))
[3] Array::operator[](int) (/home/puthre/godot/mygodot/godot/core/array.cpp:76)
[4] AnimationBezierTrackEdit::_gui_input(Ref<InputEvent> const&) (/home/puthre/godot/mygodot/godot/editor/animation_bezier_editor.cpp:905)
[5] MethodBind1<Ref<InputEvent> const&>::call(Object*, Variant const**, int, Variant::CallError&) (/home/puthre/godot/mygodot/godot/./core/method_bind.gen.inc:775 (discriminator 12))
[6] Object::call_multilevel(StringName const&, Variant const**, int) (/home/puthre/godot/mygodot/godot/core/object.cpp:763 (discriminator 1))
[7] Object::call_multilevel(StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&) (/home/puthre/godot/mygodot/godot/core/object.cpp:864)
[8] Viewport::_gui_call_input(Control*, Ref<InputEvent> const&) (/home/puthre/godot/mygodot/godot/scene/main/viewport.cpp:1520 (discriminator 2))
[9] Viewport::_gui_input_event(Ref<InputEvent>) (/home/puthre/godot/mygodot/godot/scene/main/viewport.cpp:1894 (discriminator 3))
[10] Viewport::input(Ref<InputEvent> const&) (/home/puthre/godot/mygodot/godot/scene/main/viewport.cpp:2670 (discriminator 2))
[11] Viewport::_vp_input(Ref<InputEvent> const&) (/home/puthre/godot/mygodot/godot/scene/main/viewport.cpp:1297)
[12] MethodBind1<Ref<InputEvent> const&>::call(Object*, Variant const**, int, Variant::CallError&) (/home/puthre/godot/mygodot/godot/./core/method_bind.gen.inc:775 (discriminator 12))
[13] Object::call(StringName const&, Variant const**, int, Variant::CallError&) (/home/puthre/godot/mygodot/godot/core/object.cpp:921 (discriminator 1))
[14] Object::call(StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&) (/home/puthre/godot/mygodot/godot/core/object.cpp:848)
[15] SceneTree::call_group_flags(unsigned int, StringName const&, StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&) (/home/puthre/godot/mygodot/godot/scene/main/scene_tree.cpp:264)
[16] SceneTree::input_event(Ref<InputEvent> const&) (/home/puthre/godot/mygodot/godot/scene/main/scene_tree.cpp:419 (discriminator 6))
[17] InputDefault::_parse_input_event_impl(Ref<InputEvent> const&, bool) (/home/puthre/godot/mygodot/godot/main/input_default.cpp:416)
[18] InputDefault::parse_input_event(Ref<InputEvent> const&) (/home/puthre/godot/mygodot/godot/main/input_default.cpp:260)
[19] InputDefault::flush_accumulated_events() (/home/puthre/godot/mygodot/godot/main/input_default.cpp:679)
[20] OS_X11::process_xevents() (/home/puthre/godot/mygodot/godot/platform/x11/os_x11.cpp:2619)
[21] OS_X11::run() (/home/puthre/godot/mygodot/godot/platform/x11/os_x11.cpp:3182)
[22] /home/puthre/godot/mygodot/godot/bin/godot.x11.tools.64(main+0x128) [0x13c5b3f] (/home/puthre/godot/mygodot/godot/platform/x11/godot_x11.cpp:57)
[23] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7f30ed506b97] (??:0)
[24] /home/puthre/godot/mygodot/godot/bin/godot.x11.tools.64(_start+0x2a) [0x13c595a] (??:?)
-- END OF BACKTRACE --

@puthre
Copy link
Contributor Author

puthre commented Sep 4, 2019

Ok, after a few hours of trying I as able to screen record what I was doing so now I'm able to reproduce it:
While in bezier edit mode

  1. Set snap to 0.5
  2. insert key at 0
  3. insert key at 0.5
  4. insert key at 1
  5. move cursor to 1
  6. select all keys
  7. edit -> duplicate selection
  8. Undo (Ctrl+z)
  9. move the currently selected node (don't select anything else in between)
  10. crash

I think it has to do with the fact that that on duplicate the new nodes are selected but this is not added to the undo history and when you undo you will have a selection with keys that are no longer available which will make the next move crash.

selection.clear();
for (List<Pair<int, float> >::Element *E = new_selection_values.front(); E; E = E->next()) {
int track = E->get().first;
float time = E->get().second;
int existing_idx = animation->track_find_key(track, time, true);
if (existing_idx == -1)
continue;
selection.insert(existing_idx);
}

@KoBeWi
Copy link
Member

KoBeWi commented Sep 4, 2019

Ok, confirmed in 3e46965

@KoBeWi
Copy link
Member

KoBeWi commented Sep 13, 2020

Still valid in de465c4

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

2 participants