Synfig: [BUG] Spline Tool tangent menu crashes Synfig

Created on 3 Jan 2018  路  4Comments  路  Source: synfig/synfig

Synfig version & platform:
(we're more likely to help if you're using latest development builds)
Synfig Build: 1.3.5
OS: Windows 7 Ultimate

Issue description:

Synfig crashes when selecting both control point (vertex) and tangents (handle) and trying to right click the tangent to get the floating menu.

Reproduction Steps:

Conditions:

  • You must be in the spline creation mode. This happens before using the "make spline" button
  • Both handles and vertex MUST be selected for the crash to occur.

1) Create a new synfig canvas
2) Pick the spline tool. Use Layer Type: _Create Region Layer_
3) Create a two-point spline and close (loop) it
4) Press ctrl then click & drag the vertex and handles for any point.
5) Once selected (brighter color) right click over the handle. Synfig will crash.

Edit: I can reproduce this 100% of the time with these steps.

Confirmed Crash

Most helpful comment

Closing spline and moving points seems to be unnecessary - crash happens regardless.

Backtrace:

#0  0x00007ffff36147bb in etl::handle<synfig::ValueNode>::handle(etl::handle<synfig::ValueNode> const&) (x=..., this=0x7fffffffca98)
    at /usr/local/include/ETL/_handle.h:208
#1  0x00007ffff36147bb in synfigapp::ValueDesc::ValueDesc(synfigapp::ValueDesc const&) (other=..., this=0x7fffffffca70)
    at ../src/synfigapp/value_desc.h:220
#2  0x00007ffff36147bb in synfigapp::Action::ValueDescBoneLink::is_candidate(synfigapp::Action::ParamList const&) (x=...)
    at ../src/synfigapp/actions/valuedescbonelink.cpp:104
#3  0x00007ffff3509067 in synfigapp::Action::compile_candidate_list(synfigapp::Action::ParamList const&, synfigapp::Action::Category) (param_list=..., category=category@entry=48) at ../src/synfigapp/action.cpp:346
#4  0x000055555583c3fd in studio::Instance::add_actions_to_menu(Gtk::Menu*, synfigapp::Action::ParamList const&, synfigapp::Action::Category) const (this=this@entry=0x555556fd1e20, menu=menu@entry=0x555557677d90, param_list=..., category=category@entry=48) at ../src/gui/instance.cpp:984
#5  0x0000555555847344 in studio::Instance::make_param_menu(Gtk::Menu*, etl::handle<synfig::Canvas>, std::__cxx11::list<synfigapp::ValueDesc, std::allocator<synfigapp::ValueDesc> > const&, synfigapp::ValueDesc const&) (this=this@entry=0x555556fd1e20, menu=menu@entry=0x555557677d90, canvas=..., value_desc_list=empty std::__cxx11::list, value_desc=...) at ../src/gui/instance.cpp:1575
#6  0x00005555559aff5e in studio::StateNormal_Context::event_multiple_ducks_clicked_handler(etl::smach<studio::CanvasView, studio::EventKey, etl::mutex_null>::event const&) (this=<optimized out>, x=...) at ../src/gui/states/state_normal.cpp:821
#7  0x00005555559b1c35 in etl::smach<studio::CanvasView, studio::EventKey, etl::mutex_null>::state<studio::StateNormal_Context>::process_event(void*, etl::smach<studio::CanvasView, studio::EventKey, etl::mutex_null>::event const&) const (this=0x555555e2e0e0 <studio::state_normal>, x=0x555557410320, id=...) at /usr/local/include/ETL/_smach.h:267
#8  0x00005555557f1381 in etl::smach<studio::CanvasView, studio::EventKey, etl::mutex_null>::process_event(etl::smach<studio::CanvasView, studio::EventKey, etl::mutex_null>::event const&) (this=0x555556fd8218, id=...) at /usr/local/include/ETL/_smach.h:573
#9  0x000055555588bedd in studio::WorkArea::on_drawing_area_event(_GdkEvent*) (this=0x555557389cb0, event=<optimized out>)
    at ../src/gui/workarea.cpp:1914
#10 0x00007ffff7a3682b in  () at /usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1
#11 0x00007ffff628915b in  () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#12 0x00007ffff458af9d in g_closure_invoke () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#13 0x00007ffff459db15 in  () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#14 0x00007ffff45a5e0f in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#15 0x00007ffff45a6e8f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#16 0x00007ffff63d3ad5 in  () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#17 0x00007ffff62860ee in  () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#18 0x00007ffff6288268 in gtk_main_do_event () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#19 0x00007ffff5d953e5 in  () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#20 0x00007ffff5dc6bb2 in  () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#21 0x00007ffff42b1fa7 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#22 0x00007ffff42b21e0 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#23 0x00007ffff42b24f2 in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#24 0x00007ffff6287345 in gtk_main () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#25 0x00005555557467f8 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at ../src/gui/main.cpp:125

All 4 comments

Closing spline and moving points seems to be unnecessary - crash happens regardless.

Backtrace:

#0  0x00007ffff36147bb in etl::handle<synfig::ValueNode>::handle(etl::handle<synfig::ValueNode> const&) (x=..., this=0x7fffffffca98)
    at /usr/local/include/ETL/_handle.h:208
#1  0x00007ffff36147bb in synfigapp::ValueDesc::ValueDesc(synfigapp::ValueDesc const&) (other=..., this=0x7fffffffca70)
    at ../src/synfigapp/value_desc.h:220
#2  0x00007ffff36147bb in synfigapp::Action::ValueDescBoneLink::is_candidate(synfigapp::Action::ParamList const&) (x=...)
    at ../src/synfigapp/actions/valuedescbonelink.cpp:104
#3  0x00007ffff3509067 in synfigapp::Action::compile_candidate_list(synfigapp::Action::ParamList const&, synfigapp::Action::Category) (param_list=..., category=category@entry=48) at ../src/synfigapp/action.cpp:346
#4  0x000055555583c3fd in studio::Instance::add_actions_to_menu(Gtk::Menu*, synfigapp::Action::ParamList const&, synfigapp::Action::Category) const (this=this@entry=0x555556fd1e20, menu=menu@entry=0x555557677d90, param_list=..., category=category@entry=48) at ../src/gui/instance.cpp:984
#5  0x0000555555847344 in studio::Instance::make_param_menu(Gtk::Menu*, etl::handle<synfig::Canvas>, std::__cxx11::list<synfigapp::ValueDesc, std::allocator<synfigapp::ValueDesc> > const&, synfigapp::ValueDesc const&) (this=this@entry=0x555556fd1e20, menu=menu@entry=0x555557677d90, canvas=..., value_desc_list=empty std::__cxx11::list, value_desc=...) at ../src/gui/instance.cpp:1575
#6  0x00005555559aff5e in studio::StateNormal_Context::event_multiple_ducks_clicked_handler(etl::smach<studio::CanvasView, studio::EventKey, etl::mutex_null>::event const&) (this=<optimized out>, x=...) at ../src/gui/states/state_normal.cpp:821
#7  0x00005555559b1c35 in etl::smach<studio::CanvasView, studio::EventKey, etl::mutex_null>::state<studio::StateNormal_Context>::process_event(void*, etl::smach<studio::CanvasView, studio::EventKey, etl::mutex_null>::event const&) const (this=0x555555e2e0e0 <studio::state_normal>, x=0x555557410320, id=...) at /usr/local/include/ETL/_smach.h:267
#8  0x00005555557f1381 in etl::smach<studio::CanvasView, studio::EventKey, etl::mutex_null>::process_event(etl::smach<studio::CanvasView, studio::EventKey, etl::mutex_null>::event const&) (this=0x555556fd8218, id=...) at /usr/local/include/ETL/_smach.h:573
#9  0x000055555588bedd in studio::WorkArea::on_drawing_area_event(_GdkEvent*) (this=0x555557389cb0, event=<optimized out>)
    at ../src/gui/workarea.cpp:1914
#10 0x00007ffff7a3682b in  () at /usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1
#11 0x00007ffff628915b in  () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#12 0x00007ffff458af9d in g_closure_invoke () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#13 0x00007ffff459db15 in  () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#14 0x00007ffff45a5e0f in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#15 0x00007ffff45a6e8f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#16 0x00007ffff63d3ad5 in  () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#17 0x00007ffff62860ee in  () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#18 0x00007ffff6288268 in gtk_main_do_event () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#19 0x00007ffff5d953e5 in  () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#20 0x00007ffff5dc6bb2 in  () at /usr/lib/x86_64-linux-gnu/libgdk-3.so.0
#21 0x00007ffff42b1fa7 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#22 0x00007ffff42b21e0 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#23 0x00007ffff42b24f2 in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#24 0x00007ffff6287345 in gtk_main () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#25 0x00005555557467f8 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at ../src/gui/main.cpp:125

Video on how to reproduce - https://youtu.be/2dFiUpi-gaY

Just saw this was fixed on today's development report! As soon as the dev version is up i'll test to confirm it gone. Thanks a lot for all of your hard work!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Keyikedalube picture Keyikedalube  路  3Comments

FirasH picture FirasH  路  4Comments

Keyikedalube picture Keyikedalube  路  4Comments

mysliwy112 picture mysliwy112  路  4Comments

doradoro picture doradoro  路  3Comments