MantisBT

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0007371ardourbugspublic2017-05-25 06:382018-11-01 14:58
Reporterjohmue-eo 
Assigned Tojohmue-eo 
PrioritynormalSeveritycrashReproducibilityalways
StatusclosedResolutionfixed 
Platformx86OSLinuxOS VersionUbuntu 16.04
Product Version5.9 
Target VersionFixed in Version 
Summary0007371: Crash after undo() or redo () triggered by non-GUI thread
DescriptionWhen undoing a reagion trim or move operation from a non-GUI thread (like OSC surface), Ardour crashes.
Steps To Reproduce* Open a session with at least one region.

* Make sure that OSC-surface is activated

* trim the region

* send "/undo" to the OSC control
Additional InformationAccording to a backtrace this happens because we call Session::undo() from a non-GUI thread. Then in CairoWidget::set_dirty () /libs/gtkmm2ext/cairo_widget.cc:317 ENSURE_GUI_THREAD fails end we end up with abort ().
TagsNo tags attached.
Attached Files

- Relationships

-  Notes
(0019754)
paul (administrator)
2017-05-29 10:24

Please attach a backtrace showing this. The code in the GUI which handles UndoHistory::Changed ensures that the actual callback executes in the correct thread.
(0019761)
johmue-eo (reporter)
2017-05-30 13:18

Here you go:

Thread 29 "ardour-5.9.8" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fff8a7fc700 (LWP 29612)]
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:58
58 ../sysdeps/unix/sysv/linux/raise.c: Datei oder Verzeichnis nicht gefunden.
(gdb) where
#0 0x00007fffef82e77f in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:58
#1 0x00007fffef83037a in __GI_abort () at abort.c:89
#2 0x00007ffff74d759f in CairoWidget::set_dirty(_cairo_rectangle*) (this=0x5555575dda00, area=0x0) at ../libs/gtkmm2ext/cairo_widget.cc:317
#3 0x0000555555ea2bfe in EditorSummary::set_background_dirty() (this=0x5555575dda00) at ../gtk2_ardour/editor_summary.cc:300
#4 0x0000555555ea8c0c in sigc::bound_mem_functor0<void, EditorSummary>::operator()() const (this=0x555559091098) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1991
#5 0x0000555555ea81b6 in sigc::adaptor_functor<sigc::bound_mem_functor0<void, EditorSummary> >::operator()() const (this=0x555559091090) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:256
#6 0x0000555555ea78ba in sigc::internal::slot_call<sigc::bound_mem_functor0<void, EditorSummary>, void>::call_it(sigc::internal::slot_rep*) (rep=0x555559091060) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:461
#7 0x0000555555b01681 in sigc::internal::signal_emit0<void, sigc::nil>::emit(sigc::internal::signal_impl*) (impl=0x5555575ddfd0) at /usr/include/sigc++-2.0/sigc++/signal.h:798
#8 0x0000555555b036ea in sigc::signal0<void, sigc::nil>::emit() const (this=0x55555781e478) at /usr/include/sigc++-2.0/sigc++/signal.h:2804
#9 0x0000555555b02972 in sigc::signal0<void, sigc::nil>::operator()() const (this=0x55555781e478) at /usr/include/sigc++-2.0/sigc++/signal.h:2820
#10 0x00005555564be89a in Selection::clear_regions(bool) (this=0x55555781e2e0, with_signal=true) at ../gtk2_ardour/selection.cc:156
#11 0x00005555564c334b in Selection::set_state(XMLNode const&, int) (this=0x55555781e2e0, node=...) at ../gtk2_ardour/selection.cc:1221
#12 0x00005555564d2ca3 in SelectionMemento::set_state(XMLNode const&, int) (this=0x55555781f040, node=...) at ../gtk2_ardour/selection_memento.cc:85
#13 0x0000555555d34369 in MementoCommand<SelectionMemento>::undo() (this=0x55555a9293a0) at /home/joh/Devel/ardour/libs/pbd/pbd/memento_command.h:139
#14 0x00007ffff4910e38 in UndoTransaction::undo() (this=0x55555a7b6f70) at ../libs/pbd/undo.cc:125
#15 0x00007ffff49115d5 in UndoHistory::undo(unsigned int) (this=0x55555733fa80, n=0) at ../libs/pbd/undo.cc:264
#16 0x00007ffff6869ee3 in ARDOUR::Session::undo(unsigned int) (this=0x55555733d800, n=1) at ../libs/ardour/session_state.cc:5435
#17 0x00007ffff7ba688d in BasicUI::undo() (this=0x555558fa0d08) at ../libs/surfaces/control_protocol/basic_ui.cc:331
#18 0x00007fffdddbe3e9 in ArdourSurface::OSC::cb_undo(char const*, char const*, lo_arg**, int, void*) (this=0x555558fa0c10, path=0x555558fa3bc0 "/undo", types=0x7fff7c019881 "", argv=0x0, argc=0, data=0x7fff7c0ca160)
    at ../libs/surfaces/osc/osc.h:308
#19 0x00007fffdddbe310 in ArdourSurface::OSC::_undo(char const*, char const*, lo_arg**, int, void*, void*) (path=0x555558fa3bc0 "/undo", types=0x7fff7c019881 "", argv=0x0, argc=0, data=0x7fff7c0ca160, user_data=0x555558fa0c10)
    at ../libs/surfaces/osc/osc.h:308
#20 0x00007ffff0d806fc in () at /usr/lib/x86_64-linux-gnu/liblo.so.7
#21 0x00007ffff0d8236c in () at /usr/lib/x86_64-linux-gnu/liblo.so.7
#22 0x00007ffff0d82735 in lo_server_recv () at /usr/lib/x86_64-linux-gnu/liblo.so.7
#23 0x00007fffddda2125 in ArdourSurface::OSC::osc_input_handler(Glib::IOCondition, void*) (this=0x555558fa0c10, ioc=Glib::IO_IN, srv=0x555558fa16e0) at ../libs/surfaces/osc/osc.cc:640
#24 0x00007fffdddf23ec in sigc::bound_mem_functor2<bool, ArdourSurface::OSC, Glib::IOCondition, void*>::operator()(Glib::IOCondition const&, void* const&) const (this=0x7fff7c0016e0, _A_a1=@0x7fff8a7fb984: Glib::IO_IN, _A_a2=@0x7fff7c001700: 0x555558fa16e0) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:2143
#25 0x00007fffddded607 in sigc::adaptor_functor<sigc::bound_mem_functor2<bool, ArdourSurface::OSC, Glib::IOCondition, void*> >::operator()<Glib::IOCondition const&, void*&>(Glib::IOCondition const&, void*&) const (this=0x7fff7c0016d8, _A_arg1=@0x7fff8a7fb984: Glib::IO_IN, _A_arg2=@0x7fff7c001700: 0x555558fa16e0) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:108
#26 0x00007fffddde7548 in sigc::bind_functor<-1, sigc::bound_mem_functor2<bool, ArdourSurface::OSC, Glib::IOCondition, void*>, void*, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::operator()<Glib::IOCondition const&>(Glib::IOCondition const&) (this=0x7fff7c0016d0, _A_arg1=@0x7fff8a7fb984: Glib::IO_IN) at /usr/include/sigc++-2.0/sigc++/adaptors/bind.h:1136
#27 0x00007fffddde0d5b in sigc::internal::slot_call1<sigc::bind_functor<-1, sigc::bound_mem_functor2<bool, ArdourSurface::OSC, Glib::IOCondition, void*>, void*, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>, bool, Glib::IOCondition>::call_it(sigc::internal::slot_rep*, Glib::IOCondition const&) (rep=0x7fff7c0016a0, a_1=@0x7fff8a7fb984: Glib::IO_IN) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:148
#28 0x00007ffff4151e77 in Glib::IOSource::dispatch(sigc::slot_base*) () at /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
#29 0x00007ffff415187f in Glib::Source::dispatch_vfunc(_GSource*, int (*)(void*), void*) () at /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
#30 0x00007ffff3bdf22a in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#31 0x00007ffff3bdf5e0 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#32 0x00007ffff3bdf902 in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#33 0x00007ffff48b17d3 in BaseUI::main_thread() (this=0x555558fa0da0) at ../libs/pbd/base_ui.cc:86
#34 0x00007ffff48b5f4a in sigc::bound_mem_functor0<void, BaseUI>::operator()() const (this=0x555558fa86e8) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1991
#35 0x00007ffff48b5b8a in sigc::adaptor_functor<sigc::bound_mem_functor0<void, BaseUI> >::operator()() const (this=0x555558fa86e0) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:256
#36 0x00007ffff48b54fe in sigc::internal::slot_call0<sigc::bound_mem_functor0<void, BaseUI>, void>::call_it(sigc::internal::slot_rep*) (rep=0x555558fa86b0) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:114
#37 0x00007ffff4148a9d in () at /usr/lib/x86_64-linux-gnu/libglibmm-2.4.so.1
#38 0x00007ffff3c06f65 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#39 0x00007ffff0b626da in start_thread (arg=0x7fff8a7fc700) at pthread_create.c:456
#40 0x00007fffef90117f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:105
(gdb)
(0019809)
johmue-eo (reporter)
2017-06-25 12:44

https://github.com/Ardour/ardour/pull/351 [^] solves this. It's more like a work around but Ardour doesn't crash anymore ...
(0019849)
johmue-eo (reporter)
2017-07-01 01:56

Resolved in Ardour 5.10-163 f7452c2.
(0020436)
johmue-eo (reporter)
2018-11-01 14:58

Fixed in 7452c2

- Issue History
Date Modified Username Field Change
2017-05-25 06:38 johmue-eo New Issue
2017-05-29 10:24 paul Note Added: 0019754
2017-05-30 13:18 johmue-eo Note Added: 0019761
2017-06-25 12:44 johmue-eo Note Added: 0019809
2017-07-01 01:56 johmue-eo Note Added: 0019849
2017-07-01 01:56 johmue-eo Status new => resolved
2017-07-01 01:56 johmue-eo Resolution open => fixed
2017-07-01 01:56 johmue-eo Assigned To => johmue-eo
2018-11-01 14:58 johmue-eo Note Added: 0020436
2018-11-01 14:58 johmue-eo Status resolved => closed


Copyright © 2000 - 2018 MantisBT Team
Powered by Mantis Bugtracker