View Issue Details

IDProjectCategoryView StatusLast Update
0003249ardourbugspublic2020-04-19 20:14
Reporterdanboid Assigned Tocth103  
PrioritynormalSeveritycrashReproducibilityrandom
Status closedResolutionfixed 
Target Version3.0-beta1 
Summary0003249: A3 freezes when working with MIDI
DescriptionI get regular freezes when doing routine MIDI editing like selecting or creating notes. Here is a backtrace took from 7279 running under lucid 64 just after one such freeze:
Additional InformationMidi 1-5.mid drop model
Mouse mode toggled to 1
Mouse mode toggled to 2
^Z
Program received signal SIGTSTP, Stopped (user).
0x00007ffff354e85c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
(gdb) thread apply all bt

Thread 17 (Thread 0x7fffccf8d830 (LWP 6946)):
#0 0x00007ffff355211d in nanosleep () from /lib/libpthread.so.0
0000001 0x00007ffff30c77d8 in g_usleep () from /lib/libglib-2.0.so.0
#2 0x00007ffff6806774 in ARDOUR::AudioEngine::meter_thread (this=0x7fffdc1dfc00) at ../libs/ardour/audioengine.cc:666
#3 0x00007ffff6820dd9 in boost::_mfi::mf0<void, ARDOUR::AudioEngine>::operator() (this=0x7fffdc2595d0, p=0x7fffdc1dfc00) at /usr/include/boost/bind/mem_fn_template.hpp:49
0000004 0x00007ffff681d4a4 in boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> >::operator()<boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list0> (
    this=0x7fffdc2595e0, f=..., a=...) at /usr/include/boost/bind/bind.hpp:246
0000005 0x00007ffff6819dff in boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> > >::operator() (
    this=0x7fffdc2595d0) at /usr/include/boost/bind/bind_template.hpp:20
#6 0x00007ffff6815fb6 in sigc::adaptor_functor<boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> > > >::operator() (this=0x7fffdc2595d0) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
#7 0x00007ffff68128e6 in sigc::internal::slot_call0<boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> > >, void>::call_it (rep=0x7fffdc2595a0) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
0000008 0x00007ffff2494862 in ?? () from /usr/lib/libglibmm-2.4.so.1
0000009 0x00007ffff30c4b84 in ?? () from /lib/libglib-2.0.so.0
0000010 0x00007ffff35499ca in start_thread () from /lib/libpthread.so.0
0000011 0x00007fffecfce6cd in clone () from /lib/libc.so.6
0000012 0x0000000000000000 in ?? ()

Thread 16 (Thread 0x7fffe1884710 (LWP 6945)):
#0 0x00007fffecfc1f53 in poll () from /lib/libc.so.6
0000001 0x00007ffff309f4a9 in ?? () from /lib/libglib-2.0.so.0
#2 0x00007ffff309fc55 in g_main_loop_run () from /lib/libglib-2.0.so.0
#3 0x00007ffff7b2fcbb in BaseUI::main_thread (this=0x265f3b0) at ../libs/pbd/base_ui.cc:76
0000004 0x00007ffff7b31167 in sigc::bound_mem_functor0<void, BaseUI>::operator() (this=0x265ebe8) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1787
0000005 0x00007ffff7b30fc2 in sigc::adaptor_functor<sigc::bound_mem_functor0<void, BaseUI> >::operator() (this=0x265ebe0)
    at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
#6 0x00007ffff7b30d1b in sigc::internal::slot_call0<sigc::bound_mem_functor0<void, BaseUI>, void>::call_it (rep=0x265ebb0)
    at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
#7 0x00007ffff2494862 in ?? () from /usr/lib/libglibmm-2.4.so.1
0000008 0x00007ffff30c4b84 in ?? () from /lib/libglib-2.0.so.0
0000009 0x00007ffff35499ca in start_thread () from /lib/libpthread.so.0
0000010 0x00007fffecfce6cd in clone () from /lib/libc.so.6
0000011 0x0000000000000000 in ?? ()

Thread 15 (Thread 0x7fffcd008830 (LWP 6944)):
#0 0x00007fffecfc1f53 in poll () from /lib/libc.so.6
0000001 0x00007ffff6877c70 in ARDOUR::Butler::thread_work (this=0x24562a0) at ../libs/ardour/butler.cc:159
#2 0x00007ffff6877be4 in ARDOUR::Butler::_thread_work (arg=0x24562a0) at ../libs/ardour/butler.cc:140
#3 0x00007ffff7b639a8 in fake_thread_start (arg=0x1fc5100) at ../libs/pbd/pthread_utils.cc:81
0000004 0x00007ffff35499ca in start_thread () from /lib/libpthread.so.0
0000005 0x00007fffecfce6cd in clone () from /lib/libc.so.6
#6 0x0000000000000000 in ?? ()

Thread 14 (Thread 0x7fffe0020db0 (LWP 6943)):
#0 0x00007ffff3550b50 in sem_wait () from /lib/libpthread.so.0
---Type <return> to continue, or q <return> to quit---
0000001 0x00007ffff695ed2f in ARDOUR::Graph::restart_cycle (this=0x2457460) at ../libs/ardour/graph.cc:175
#2 0x00007ffff695ecf9 in ARDOUR::Graph::dec_ref (this=0x2457460) at ../libs/ardour/graph.cc:161
#3 0x00007ffff6964c98 in ARDOUR::GraphNode::finish (this=0x245b2a0, chain=1) at ../libs/ardour/graphnode.cc:57
0000004 0x00007ffff695fc83 in ARDOUR::Graph::run_one (this=0x2457460) at ../libs/ardour/graph.cc:320
0000005 0x00007ffff695fd75 in ARDOUR::Graph::helper_thread (this=0x2457460) at ../libs/ardour/graph.cc:352
#6 0x00007ffff696421b in sigc::bound_mem_functor0<void, ARDOUR::Graph>::operator() (this=0x2457b48) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1787
#7 0x00007ffff6963f78 in sigc::adaptor_functor<sigc::bound_mem_functor0<void, ARDOUR::Graph> >::operator() (this=0x2457b40)
    at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
0000008 0x00007ffff6963a99 in sigc::internal::slot_call0<sigc::bound_mem_functor0<void, ARDOUR::Graph>, void>::call_it (rep=0x2457b10)
    at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
0000009 0x00007ffff2494862 in ?? () from /usr/lib/libglibmm-2.4.so.1
0000010 0x00007ffff30c4b84 in ?? () from /lib/libglib-2.0.so.0
0000011 0x00007ffff35499ca in start_thread () from /lib/libpthread.so.0
0000012 0x00007fffecfce6cd in clone () from /lib/libc.so.6
0000013 0x0000000000000000 in ?? ()

Thread 13 (Thread 0x7fffe215ddb0 (LWP 6942)):
#0 0x00007ffff3550b50 in sem_wait () from /lib/libpthread.so.0
0000001 0x00007ffff695fad6 in ARDOUR::Graph::run_one (this=0x2457460) at ../libs/ardour/graph.cc:307
#2 0x00007ffff695fe3a in ARDOUR::Graph::main_thread (this=0x2457460) at ../libs/ardour/graph.cc:379
#3 0x00007ffff696421b in sigc::bound_mem_functor0<void, ARDOUR::Graph>::operator() (this=0x2457ae8) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1787
0000004 0x00007ffff6963f78 in sigc::adaptor_functor<sigc::bound_mem_functor0<void, ARDOUR::Graph> >::operator() (this=0x2457ae0)
    at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
0000005 0x00007ffff6963a99 in sigc::internal::slot_call0<sigc::bound_mem_functor0<void, ARDOUR::Graph>, void>::call_it (rep=0x2457ab0)
    at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
#6 0x00007ffff2494862 in ?? () from /usr/lib/libglibmm-2.4.so.1
#7 0x00007ffff30c4b84 in ?? () from /lib/libglib-2.0.so.0
0000008 0x00007ffff35499ca in start_thread () from /lib/libpthread.so.0
0000009 0x00007fffecfce6cd in clone () from /lib/libc.so.6
0000010 0x0000000000000000 in ?? ()

Thread 12 (Thread 0x7fffe1083710 (LWP 6941)):
#0 0x00007fffecfc1f53 in poll () from /lib/libc.so.6
0000001 0x00007ffff376a1a6 in jack_client_core_wait (client=0x7fffdc1e3b20) at client.c:1681
#2 0x00007ffff376a54c in jack_cycle_wait (client=0x7fffdc1e3b20) at client.c:1878
#3 0x00007ffff68059e9 in ARDOUR::AudioEngine::process_thread (this=0x7fffdc1dfc00) at ../libs/ardour/audioengine.cc:429
0000004 0x00007ffff68057bc in ARDOUR::AudioEngine::_process_thread (arg=0x7fffdc1dfc00) at ../libs/ardour/audioengine.cc:371
0000005 0x00007ffff376a85e in jack_client_thread (arg=0x7fffdc1e3b20) at client.c:2003
#6 0x00007ffff35499ca in start_thread () from /lib/libpthread.so.0
#7 0x00007fffecfce6cd in clone () from /lib/libc.so.6
0000008 0x0000000000000000 in ?? ()

Thread 11 (Thread 0x7fffdbfff710 (LWP 6934)):
#0 0x00007ffff354e85c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
0000001 0x00007ffff376c62d in mb_thread_func (arg=0x0) at messagebuffer.c:72
#2 0x00007ffff35499ca in start_thread () from /lib/libpthread.so.0
#3 0x00007fffecfce6cd in clone () from /lib/libc.so.6
---Type <return> to continue, or q <return> to quit---
0000004 0x0000000000000000 in ?? ()

Thread 4 (Thread 0x7fffdb5a2710 (LWP 6925)):
#0 0x00007ffff354e85c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
0000001 0x00007ffff679ab4f in ARDOUR::Analyser::work () at ../libs/ardour/analyser.cc:85
#2 0x00007ffff679a881 in analyser_work () at ../libs/ardour/analyser.cc:49
#3 0x0000000000e12113 in sigc::pointer_functor0<void>::operator()() const ()
0000004 0x0000000000e1065e in sigc::adaptor_functor<sigc::pointer_functor0<void> >::operator()() const ()
0000005 0x0000000000e0df49 in sigc::internal::slot_call0<sigc::pointer_functor0<void>, void>::call_it(sigc::internal::slot_rep*) ()
#6 0x00007ffff2494862 in ?? () from /usr/lib/libglibmm-2.4.so.1
#7 0x00007ffff30c4b84 in ?? () from /lib/libglib-2.0.so.0
0000008 0x00007ffff35499ca in start_thread () from /lib/libpthread.so.0
0000009 0x00007fffecfce6cd in clone () from /lib/libc.so.6
0000010 0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7fffe3da3710 (LWP 6924)):
#0 0x00007ffff354e85c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
0000001 0x00007ffff6bf9a67 in peak_thread_work () at ../libs/ardour/source_factory.cc:69
#2 0x0000000000e12113 in sigc::pointer_functor0<void>::operator()() const ()
#3 0x0000000000e1065e in sigc::adaptor_functor<sigc::pointer_functor0<void> >::operator()() const ()
0000004 0x0000000000e0df49 in sigc::internal::slot_call0<sigc::pointer_functor0<void>, void>::call_it(sigc::internal::slot_rep*) ()
0000005 0x00007ffff2494862 in ?? () from /usr/lib/libglibmm-2.4.so.1
#6 0x00007ffff30c4b84 in ?? () from /lib/libglib-2.0.so.0
#7 0x00007ffff35499ca in start_thread () from /lib/libpthread.so.0
0000008 0x00007fffecfce6cd in clone () from /lib/libc.so.6
0000009 0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7fffe45a4710 (LWP 6923)):
#0 0x00007ffff354e85c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
0000001 0x00007ffff6bf9a67 in peak_thread_work () at ../libs/ardour/source_factory.cc:69
#2 0x0000000000e12113 in sigc::pointer_functor0<void>::operator()() const ()
#3 0x0000000000e1065e in sigc::adaptor_functor<sigc::pointer_functor0<void> >::operator()() const ()
0000004 0x0000000000e0df49 in sigc::internal::slot_call0<sigc::pointer_functor0<void>, void>::call_it(sigc::internal::slot_rep*) ()
0000005 0x00007ffff2494862 in ?? () from /usr/lib/libglibmm-2.4.so.1
#6 0x00007ffff30c4b84 in ?? () from /lib/libglib-2.0.so.0
#7 0x00007ffff35499ca in start_thread () from /lib/libpthread.so.0
0000008 0x00007fffecfce6cd in clone () from /lib/libc.so.6
0000009 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7ffff7fad820 (LWP 6920)):
#0 0x00007ffff354e85c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
0000001 0x00007ffff30c3f8d in g_static_rw_lock_writer_lock () from /lib/libglib-2.0.so.0
#2 0x0000000000c9f2dc in WriterLock (this=0x7fffdc8e46c0, rwlock=...) at /usr/include/glibmm-2.4/glibmm/thread.h:990
#3 0x00007ffff69bd156 in WriteLockImpl (this=0x7fffdc7c13d0, s=..., c=...) at ../libs/evoral/evoral/Sequence.hpp:71
0000004 0x00007ffff69bbfa5 in WriteLockImpl (this=0x7fffdc7c13d0, source_lock=0x7fffdc874350, s=..., c=...) at ../libs/ardour/ardour/midi_model.h:157
0000005 0x00007ffff69bacce in ARDOUR::MidiModel::edit_lock (this=0x7fffdc57adc0) at ../libs/ardour/midi_model.cc:906
#6 0x00007ffff69b5eab in ARDOUR::MidiModel::DiffCommand::operator() (this=0x7fffdc8c8f60) at ../libs/ardour/midi_model.cc:232
---Type <return> to continue, or q <return> to quit---
#7 0x00007ffff69b5023 in ARDOUR::MidiModel::apply_command (this=0x7fffdc57adc0, session=..., cmd=0x7fffdc8c8f60) at ../libs/ardour/midi_model.cc:70
0000008 0x0000000000caeadd in MidiRegionView::create_note_at (this=0x7fffdc57d0e0, x=1111.9989173346867, y=106, length=0.5) at ../gtk2_ardour/midi_region_view.cc:687
0000009 0x0000000000cad005 in MidiRegionView::button_release (this=0x7fffdc57d0e0, ev=0x2855250) at ../gtk2_ardour/midi_region_view.cc:351
0000010 0x0000000000cacbde in MidiRegionView::canvas_event (this=0x7fffdc57d0e0, ev=0x2855250) at ../gtk2_ardour/midi_region_view.cc:257
0000011 0x0000000000cca174 in sigc::bound_mem_functor1<bool, MidiRegionView, _GdkEvent*>::operator() (this=0x7fffdc57a958, _A_a1=@0x7fffffffcd08)
    at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1851
0000012 0x0000000000cc885f in sigc::adaptor_functor<sigc::bound_mem_functor1<bool, MidiRegionView, _GdkEvent*> >::operator()<_GdkEvent* const&> (this=0x7fffdc57a950,
    _A_arg1=@0x7fffffffcd08) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:84
0000013 0x0000000000cc6a36 in sigc::internal::slot_call1<sigc::bound_mem_functor1<bool, MidiRegionView, _GdkEvent*>, bool, _GdkEvent*>::call_it (rep=0x7fffdc57a920,
    a_1=@0x7fffffffcd08) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:137
0000014 0x00007fffee33ef22 in ?? () from /usr/lib/libgnomecanvasmm-2.6.so.1
#15 0x00007fffefe7e708 in gnome_canvas_marshal_BOOLEAN__BOXED (closure=0x7fffdc462e40, return_value=0x7fffffffcec0, n_param_values=<value optimised out>,
    param_values=0x7fffdc8f2b50, invocation_hint=<value optimised out>, marshal_data=0x7fffee33eee0) at gnome-canvas-marshal.c:125
0000016 0x00007ffff22235de in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#17 0x00007ffff2237598 in ?? () from /usr/lib/libgobject-2.0.so.0
0000018 0x00007ffff22388b9 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
0000019 0x00007ffff2239033 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
0000020 0x00007fffefe79e12 in emit_event (canvas=<value optimised out>, event=<value optimised out>) at gnome-canvas.c:2585
0000021 0x00007fffefe7c9c6 in gnome_canvas_button (widget=<value optimised out>, event=0x28a3190) at gnome-canvas.c:2800
0000022 0x00007ffff1b310e8 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
0000023 0x00007ffff22235de in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#24 0x00007ffff22371dd in ?? () from /usr/lib/libgobject-2.0.so.0
0000025 0x00007ffff22388b9 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
0000026 0x00007ffff2239033 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
0000027 0x00007ffff1c4802f in ?? () from /usr/lib/libgtk-x11-2.0.so.0
0000028 0x00007ffff1b295b3 in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
0000029 0x00007ffff1b2a68b in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
0000030 0x00007ffff179e86c in ?? () from /usr/lib/libgdk-x11-2.0.so.0
0000031 0x00007ffff309b8c2 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
0000032 0x00007ffff309f748 in ?? () from /lib/libglib-2.0.so.0
0000033 0x00007ffff309fc55 in g_main_loop_run () from /lib/libglib-2.0.so.0
0000034 0x00007ffff1b2ab27 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
0000035 0x00007ffff58a7d93 in Gtkmm2ext::UI::run (this=0x1777e90, old_receiver=...) at ../libs/gtkmm2ext/gtk_ui.cc:246
0000036 0x0000000000c8c07f in main (argc=1, argv=0x7fffffffdac8) at ../gtk2_ardour/main.cc:433
(gdb)
TagsNo tags attached.

Activities

paul

2010-06-18 18:31

administrator   ~0008270

this crash trace looks impossible :(

danboid

2010-06-19 02:12

reporter   ~0008272

Impossible wasn't the response I wanted as I presume I wouldn't (couldn't) understand why its impossible anyway if it stumps you. Not a good sign!

I can get you another MIDI editing induced freeze backtrace tomorrow (later) if you think it may make more sense than this does?

cth103

2010-06-20 01:06

administrator   ~0008278

Last edited: 2010-06-20 01:34

I wonder if this could occur when a MidiModel's _midi_source has a read lock on the model, and set_midi_source is called on the model, so that the old midi source still holds the lock but is never invalidated by MidiModel::edit_lock.

Committed a fix for that, at least. Perhaps you could test, Dan?

Without this fix I could trigger a hang reliably by doing

1. edit midi region
2. start playback
3. stop playback.
4. save session.
5. edit midi region (-> hang)

danboid

2010-06-20 11:19

reporter   ~0008279

I can verify that the hang you described above has been fixed in 7280 and although I wasn't saving my session in my testing before I do think it was that lock problem that was causing my freezes. I've just survived much longer in A3's MIDI editing mode than was previously possible so I can pretty confidently say this has been fixed- thanks Carl!

Anyone sussed out what is causing 3237 yet?

cth103

2010-06-20 20:50

administrator   ~0008280

OK, thanks, closing this then. Please re-open if you find any other recipes for triggering this bug.

system

2020-04-19 20:14

developer   ~0022136

Issue has been closed automatically, by Trigger Close Plugin.
Feel free to re-open with additional information if you think the issue is not resolved.

Issue History

Date Modified Username Field Change
2010-06-18 15:56 danboid New Issue
2010-06-18 18:31 paul Note Added: 0008270
2010-06-19 02:12 danboid Note Added: 0008272
2010-06-20 00:06 cth103 cost => 0.00
2010-06-20 00:06 cth103 Target Version => 3.0-beta1
2010-06-20 01:06 cth103 Note Added: 0008278
2010-06-20 01:08 cth103 Note Edited: 0008278
2010-06-20 01:08 cth103 Note Edited: 0008278
2010-06-20 01:34 cth103 Note Edited: 0008278
2010-06-20 01:34 cth103 Status new => feedback
2010-06-20 11:19 danboid Note Added: 0008279
2010-06-20 20:50 cth103 Note Added: 0008280
2010-06-20 20:50 cth103 Status feedback => resolved
2010-06-20 20:50 cth103 Resolution open => fixed
2010-06-20 20:50 cth103 Assigned To => cth103
2020-04-19 20:14 system Note Added: 0022136
2020-04-19 20:14 system Status resolved => closed