View Issue Details

IDProjectCategoryView StatusLast Update
0004763ardourbugspublic2012-05-23 15:08
Reporternettings Assigned Topaul  
PrioritynormalSeveritycrashReproducibilityalways
Status assignedResolutionopen 
Platformx86_64OSLinuxOS Version3.1.9
Target Version3.0 
Summary0004763: session file corruption (negative region lengths in playlist) leading to runaway memory usage
Descriptionwhen i try to load the attached session, ardour starts gobbling up all available memory (16gb ram, 10 of which are memlockable for this user), then aborts after throwing a std:bad_alloc. post-mortem is attached.

the issue is 100% reproducible, and i'm stumped. did go through the session file for obvious inconsistencies, but couldn't find anything amiss...
Steps To Reproducestart jack, start ardour3, load the attached session file.
TagsNo tags attached.

Activities

2012-03-09 11:07

 

memory-hogging-backtrace.txt (18,381 bytes)   
Core was generated by `./../build/gtk2_ardour/ardour-3.0'.
Program terminated with signal 6, Aborted.
#0  0x00007f7346788d95 in raise () from /lib64/libc.so.6
(gdb) thread apply all bt

Thread 13 (Thread 0x7f733c117820 (LWP 9590)):
#0  0x00007f7346824523 in poll () from /lib64/libc.so.6
#1  0x00007f73518224bb in ARDOUR::Butler::thread_work (this=0x3de2650) at ../libs/ardour/butler.cc:153
#2  0x00007f7351822415 in ARDOUR::Butler::_thread_work (arg=0x3de2650) at ../libs/ardour/butler.cc:137
#3  0x00007f734f6b1a6c in fake_thread_start (arg=0x5412700) at ../libs/pbd/pthread_utils.cc:81
#4  0x00007f73484f7f05 in start_thread () from /lib64/libpthread.so.0
#5  0x00007f734682d63d in clone () from /lib64/libc.so.6

Thread 12 (Thread 0x7f73377fe700 (LWP 9586)):
#0  0x00007f7346824523 in poll () from /lib64/libc.so.6
#1  0x00007f7348716966 in jack_client_core_wait () from /usr/local/lib64/libjack.so.0
#2  0x00007f7348716cea in jack_cycle_wait () from /usr/local/lib64/libjack.so.0
#3  0x00007f73517a475e in ARDOUR::AudioEngine::process_thread (this=0x2c7b150) at ../libs/ardour/audioengine.cc:444
#4  0x00007f73517a40d0 in ARDOUR::AudioEngine::_process_thread (arg=0x2c7b150) at ../libs/ardour/audioengine.cc:342
#5  0x00007f7348716be2 in jack_client_thread () from /usr/local/lib64/libjack.so.0
#6  0x00007f73484f7f05 in start_thread () from /lib64/libpthread.so.0
#7  0x00007f734682d63d in clone () from /lib64/libc.so.6

Thread 11 (Thread 0x7f72c2d49820 (LWP 9610)):
#0  0x00007f73484ff52d in nanosleep () from /lib64/libpthread.so.0
#1  0x00007f734d59b1d2 in g_usleep () from /usr/lib64/libglib-2.0.so.0
#2  0x00007f73517a5554 in ARDOUR::AudioEngine::meter_thread (this=0x2c7b150) at ../libs/ardour/audioengine.cc:697
#3  0x00007f73517c49ee in boost::_mfi::mf0<void, ARDOUR::AudioEngine>::operator() (this=0xfa3b250, p=0x2c7b150) at /usr/include/boost/bind/mem_fn_template.hpp:49
#4  0x00007f73517c003e in boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> >::operator()<boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list0> (this=0xfa3b260, f=..., a=...)
    at /usr/include/boost/bind/bind.hpp:253
#5  0x00007f73517bbc19 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> > >::operator() (this=0xfa3b250)
    at /usr/include/boost/bind/bind_template.hpp:20
#6  0x00007f73517b7072 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=0xfa3b250)
    at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
#7  0x00007f73517b2d0a 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=
    0xfa3b220) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
#8  0x00007f734e0cab7d in ?? () from /usr/lib64/libglibmm-2.4.so.1
#9  0x00007f734d597db6 in ?? () from /usr/lib64/libglib-2.0.so.0
#10 0x00007f73484f7f05 in start_thread () from /lib64/libpthread.so.0
#11 0x00007f734682d63d in clone () from /lib64/libc.so.6

Thread 10 (Thread 0x7f72f2244700 (LWP 9589)):
#0  0x00007f73484fe010 in sem_wait () from /lib64/libpthread.so.0
#1  0x00007f735190266e in PBD::ProcessSemaphore::wait (this=0x3de6518) at /build/ardour3-svn/libs/pbd/pbd/semutils.h:41
#2  0x00007f7351900183 in ARDOUR::Graph::restart_cycle (this=0x3de6440) at ../libs/ardour/graph.cc:249
#3  0x00007f735190014d in ARDOUR::Graph::dec_ref (this=0x3de6440) at ../libs/ardour/graph.cc:236
#4  0x00007f73519066ee in ARDOUR::GraphNode::finish (this=0xc03ba10, chain=1) at ../libs/ardour/graphnode.cc:71
#5  0x00007f7351900d5d in ARDOUR::Graph::run_one (this=0x3de6440) at ../libs/ardour/graph.cc:389
#6  0x00007f7351900f3f in ARDOUR::Graph::helper_thread (this=0x3de6440) at ../libs/ardour/graph.cc:406
#7  0x00007f735190607c in boost::_mfi::mf0<void, ARDOUR::Graph>::operator() (this=0x7f72f2243c08, p=0x3de6440) at /usr/include/boost/bind/mem_fn_template.hpp:49
#8  0x00007f7351905cd2 in boost::_bi::list1<boost::_bi::value<ARDOUR::Graph*> >::operator()<boost::_mfi::mf0<void, ARDOUR::Graph>, boost::_bi::list0> (this=0x7f72f2243c18, f=..., a=...)
    at /usr/include/boost/bind/bind.hpp:253
#9  0x00007f73519059c5 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::Graph>, boost::_bi::list1<boost::_bi::value<ARDOUR::Graph*> > >::operator() (this=0x7f72f2243c08)
    at /usr/include/boost/bind/bind_template.hpp:20
#10 0x00007f7351905587 in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::Graph>, boost::_bi::list1<boost::_bi::value<ARDOUR::Graph*> > >, void>::invoke (function_obj_ptr=...) at /usr/include/boost/function/function_template.hpp:153
#11 0x00000000013badf0 in boost::function0<void>::operator() (this=0x7f72f2243c00) at /usr/include/boost/function/function_template.hpp:1013
#12 0x00007f73517a887d in ARDOUR::AudioEngine::_start_process_thread (arg=0x3df6ab0) at ../libs/ardour/audioengine.cc:1506
#13 0x00007f73484f7f05 in start_thread () from /lib64/libpthread.so.0
---Type <return> to continue, or q <return> to quit---
#14 0x00007f734682d63d in clone () from /lib64/libc.so.6

Thread 9 (Thread 0x7f733f2a8700 (LWP 9572)):
#0  0x00007f73484fbe6c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f7351bebd89 in peak_thread_work () at ../libs/ardour/source_factory.cc:68
#2  0x0000000001977485 in sigc::pointer_functor0<void>::operator() (this=0x2927c28) at /usr/include/sigc++-2.0/sigc++/functors/ptr_fun.h:77
#3  0x0000000001974c30 in sigc::adaptor_functor<sigc::pointer_functor0<void> >::operator() (this=0x2927c20) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
#4  0x0000000001971bd5 in sigc::internal::slot_call0<sigc::pointer_functor0<void>, void>::call_it (rep=0x2927bf0) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
#5  0x00007f734e0cab7d in ?? () from /usr/lib64/libglibmm-2.4.so.1
#6  0x00007f734d597db6 in ?? () from /usr/lib64/libglib-2.0.so.0
#7  0x00007f73484f7f05 in start_thread () from /lib64/libpthread.so.0
#8  0x00007f734682d63d in clone () from /lib64/libc.so.6

Thread 8 (Thread 0x7f72f2a45700 (LWP 9588)):
#0  0x00007f73484fe010 in sem_wait () from /lib64/libpthread.so.0
#1  0x00007f735190266e in PBD::ProcessSemaphore::wait (this=0x3de64f8) at /build/ardour3-svn/libs/pbd/pbd/semutils.h:41
#2  0x00007f7351900bf8 in ARDOUR::Graph::run_one (this=0x3de6440) at ../libs/ardour/graph.cc:375
#3  0x00007f7351900f3f in ARDOUR::Graph::helper_thread (this=0x3de6440) at ../libs/ardour/graph.cc:406
#4  0x00007f735190607c in boost::_mfi::mf0<void, ARDOUR::Graph>::operator() (this=0x7f72f2a44c08, p=0x3de6440) at /usr/include/boost/bind/mem_fn_template.hpp:49
#5  0x00007f7351905cd2 in boost::_bi::list1<boost::_bi::value<ARDOUR::Graph*> >::operator()<boost::_mfi::mf0<void, ARDOUR::Graph>, boost::_bi::list0> (this=0x7f72f2a44c18, f=..., a=...)
    at /usr/include/boost/bind/bind.hpp:253
#6  0x00007f73519059c5 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::Graph>, boost::_bi::list1<boost::_bi::value<ARDOUR::Graph*> > >::operator() (this=0x7f72f2a44c08)
    at /usr/include/boost/bind/bind_template.hpp:20
#7  0x00007f7351905587 in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::Graph>, boost::_bi::list1<boost::_bi::value<ARDOUR::Graph*> > >, void>::invoke (function_obj_ptr=...) at /usr/include/boost/function/function_template.hpp:153
#8  0x00000000013badf0 in boost::function0<void>::operator() (this=0x7f72f2a44c00) at /usr/include/boost/function/function_template.hpp:1013
#9  0x00007f73517a887d in ARDOUR::AudioEngine::_start_process_thread (arg=0x3df68c0) at ../libs/ardour/audioengine.cc:1506
#10 0x00007f73484f7f05 in start_thread () from /lib64/libpthread.so.0
#11 0x00007f734682d63d in clone () from /lib64/libc.so.6

Thread 7 (Thread 0x7f7337fff700 (LWP 9584)):
#0  0x00007f73484fbe6c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f7348717feb in mb_thread_func () from /usr/local/lib64/libjack.so.0
#2  0x00007f73484f7f05 in start_thread () from /lib64/libpthread.so.0
#3  0x00007f734682d63d in clone () from /lib64/libc.so.6

Thread 6 (Thread 0x7f73362a6700 (LWP 9587)):
#0  0x00007f73484fe010 in sem_wait () from /lib64/libpthread.so.0
#1  0x00007f735190266e in PBD::ProcessSemaphore::wait (this=0x3de64f8) at /build/ardour3-svn/libs/pbd/pbd/semutils.h:41
#2  0x00007f7351900bf8 in ARDOUR::Graph::run_one (this=0x3de6440) at ../libs/ardour/graph.cc:375
#3  0x00007f735190116d in ARDOUR::Graph::main_thread (this=0x3de6440) at ../libs/ardour/graph.cc:444
#4  0x00007f735190607c in boost::_mfi::mf0<void, ARDOUR::Graph>::operator() (this=0x7f73362a5c08, p=0x3de6440) at /usr/include/boost/bind/mem_fn_template.hpp:49
#5  0x00007f7351905cd2 in boost::_bi::list1<boost::_bi::value<ARDOUR::Graph*> >::operator()<boost::_mfi::mf0<void, ARDOUR::Graph>, boost::_bi::list0> (this=0x7f73362a5c18, f=..., a=...)
    at /usr/include/boost/bind/bind.hpp:253
#6  0x00007f73519059c5 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::Graph>, boost::_bi::list1<boost::_bi::value<ARDOUR::Graph*> > >::operator() (this=0x7f73362a5c08)
    at /usr/include/boost/bind/bind_template.hpp:20
#7  0x00007f7351905587 in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::Graph>, boost::_bi::list1<boost::_bi::value<ARDOUR::Graph*> > >, void>::invoke (function_obj_ptr=...) at /usr/include/boost/function/function_template.hpp:153
#8  0x00000000013badf0 in boost::function0<void>::operator() (this=0x7f73362a5c00) at /usr/include/boost/function/function_template.hpp:1013
#9  0x00007f73517a887d in ARDOUR::AudioEngine::_start_process_thread (arg=0x3df68c0) at ../libs/ardour/audioengine.cc:1506
#10 0x00007f73484f7f05 in start_thread () from /lib64/libpthread.so.0
#11 0x00007f734682d63d in clone () from /lib64/libc.so.6

Thread 5 (Thread 0x7f72f1a43700 (LWP 9591)):
#0  0x00007f7346824523 in poll () from /lib64/libc.so.6
---Type <return> to continue, or q <return> to quit---
#1  0x00007f734d572a98 in ?? () from /usr/lib64/libglib-2.0.so.0
#2  0x00007f734d5732c2 in g_main_loop_run () from /usr/lib64/libglib-2.0.so.0
#3  0x00007f734f67a80f in BaseUI::main_thread (this=0x5474180) at ../libs/pbd/base_ui.cc:77
#4  0x00007f734f67bbb9 in sigc::bound_mem_functor0<void, BaseUI>::operator() (this=0x62bc578) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1787
#5  0x00007f734f67ba1e in sigc::adaptor_functor<sigc::bound_mem_functor0<void, BaseUI> >::operator() (this=0x62bc570) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
#6  0x00007f734f67b78f in sigc::internal::slot_call0<sigc::bound_mem_functor0<void, BaseUI>, void>::call_it (rep=0x62bc540) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
#7  0x00007f734e0cab7d in ?? () from /usr/lib64/libglibmm-2.4.so.1
#8  0x00007f734d597db6 in ?? () from /usr/lib64/libglib-2.0.so.0
#9  0x00007f73484f7f05 in start_thread () from /lib64/libpthread.so.0
#10 0x00007f734682d63d in clone () from /lib64/libc.so.6

Thread 4 (Thread 0x7f73402aa700 (LWP 9570)):
#0  0x00007f73467fbe0d in nanosleep () from /lib64/libc.so.6
#1  0x00007f7346827604 in usleep () from /lib64/libc.so.6
#2  0x0000000001bc1031 in gui_event_loop (ptr=0x0) at ../gtk2_ardour/linux_vst_gui_support.cc:363
#3  0x00007f73484f7f05 in start_thread () from /lib64/libpthread.so.0
#4  0x00007f734682d63d in clone () from /lib64/libc.so.6

Thread 3 (Thread 0x7f7336aa7700 (LWP 9573)):
#0  0x00007f73484fbe6c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f73517376c9 in ARDOUR::Analyser::work () at ../libs/ardour/analyser.cc:85
#2  0x00007f7351737461 in analyser_work () at ../libs/ardour/analyser.cc:49
#3  0x0000000001977485 in sigc::pointer_functor0<void>::operator() (this=0x292a428) at /usr/include/sigc++-2.0/sigc++/functors/ptr_fun.h:77
#4  0x0000000001974c30 in sigc::adaptor_functor<sigc::pointer_functor0<void> >::operator() (this=0x292a420) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
#5  0x0000000001971bd5 in sigc::internal::slot_call0<sigc::pointer_functor0<void>, void>::call_it (rep=0x292a3f0) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
#6  0x00007f734e0cab7d in ?? () from /usr/lib64/libglibmm-2.4.so.1
#7  0x00007f734d597db6 in ?? () from /usr/lib64/libglib-2.0.so.0
#8  0x00007f73484f7f05 in start_thread () from /lib64/libpthread.so.0
#9  0x00007f734682d63d in clone () from /lib64/libc.so.6

Thread 2 (Thread 0x7f733faa9700 (LWP 9571)):
#0  0x00007f73484fbe6c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f7351bebd89 in peak_thread_work () at ../libs/ardour/source_factory.cc:68
#2  0x0000000001977485 in sigc::pointer_functor0<void>::operator() (this=0x292ab08) at /usr/include/sigc++-2.0/sigc++/functors/ptr_fun.h:77
#3  0x0000000001974c30 in sigc::adaptor_functor<sigc::pointer_functor0<void> >::operator() (this=0x292ab00) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
#4  0x0000000001971bd5 in sigc::internal::slot_call0<sigc::pointer_functor0<void>, void>::call_it (rep=0x292aad0) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
#5  0x00007f734e0cab7d in ?? () from /usr/lib64/libglibmm-2.4.so.1
#6  0x00007f734d597db6 in ?? () from /usr/lib64/libglib-2.0.so.0
#7  0x00007f73484f7f05 in start_thread () from /lib64/libpthread.so.0
#8  0x00007f734682d63d in clone () from /lib64/libc.so.6

Thread 1 (Thread 0x7f735296f9a0 (LWP 9565)):
#0  0x00007f7346788d95 in raise () from /lib64/libc.so.6
#1  0x00007f734678a2ab in abort () from /lib64/libc.so.6
#2  0x00007f7346db7f2d in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib64/libstdc++.so.6
#3  0x00007f7346db60d6 in ?? () from /usr/lib64/libstdc++.so.6
#4  0x00007f7346db6103 in std::terminate() () from /usr/lib64/libstdc++.so.6
#5  0x00007f7346db61fe in __cxa_throw () from /usr/lib64/libstdc++.so.6
#6  0x00007f7346db66dd in operator new(unsigned long) () from /usr/lib64/libstdc++.so.6
#7  0x00007f7351c07614 in __gnu_cxx::new_allocator<ARDOUR::TempoMap::BBTPoint>::allocate (this=0x3df7038, __n=1073741824) at /usr/include/c++/4.6/ext/new_allocator.h:92
#8  0x00007f7351c0719b in std::_Vector_base<ARDOUR::TempoMap::BBTPoint, std::allocator<ARDOUR::TempoMap::BBTPoint> >::_M_allocate (this=0x3df7038, __n=1073741824) at /usr/include/c++/4.6/bits/stl_vector.h:150
#9  0x00007f7351c064ad in std::vector<ARDOUR::TempoMap::BBTPoint, std::allocator<ARDOUR::TempoMap::BBTPoint> >::_M_insert_aux (this=0x3df7038, __position=..., __x=...)
    at /usr/include/c++/4.6/bits/vector.tcc:327
#10 0x00007f7351c03a4e in std::vector<ARDOUR::TempoMap::BBTPoint, std::allocator<ARDOUR::TempoMap::BBTPoint> >::push_back (this=0x3df7038, __x=...) at /usr/include/c++/4.6/bits/stl_vector.h:834
#11 0x00007f7351bfb481 in ARDOUR::TempoMap::_extend_map (this=0x3df6f10, tempo=0x8ce9100, meter=0x8ce95b0, next_metric=..., current=..., current_frame=12884901888000, end=9223372036854775806)
---Type <return> to continue, or q <return> to quit---
    at ../libs/ardour/tempo.cc:1022
#12 0x00007f7351bfa89e in ARDOUR::TempoMap::extend_map (this=0x3df6f10, end=9223372036854775806) at ../libs/ardour/tempo.cc:882
#13 0x00007f7351bf9c97 in ARDOUR::TempoMap::require_map_to (this=0x3df6f10, pos=9223372036854775806) at ../libs/ardour/tempo.cc:714
#14 0x00007f7351bfbe1e in ARDOUR::TempoMap::bbt_time (this=0x3df6f10, frame=9223372036854775806, bbt=...) at ../libs/ardour/tempo.cc:1113
#15 0x000000000165026e in EditorRegions::format_position (this=0x35e83a0, pos=9223372036854775806, buf=0x7fff5fac4d90 "\330y\220\v", bufsize=16, onoff=true) at ../gtk2_ardour/editor_regions.cc:698
#16 0x0000000001650ea5 in EditorRegions::populate_row_end (this=0x35e83a0, region=..., row=..., used=1) at ../gtk2_ardour/editor_regions.cc:824
#17 0x0000000001650630 in EditorRegions::populate_row (this=0x35e83a0, region=..., row=...) at ../gtk2_ardour/editor_regions.cc:754
#18 0x000000000164e443 in EditorRegions::add_region (this=0x35e83a0, region=...) at ../gtk2_ardour/editor_regions.cc:444
#19 0x000000000164fbf9 in EditorRegions::redisplay (this=0x35e83a0) at ../gtk2_ardour/editor_regions.cc:638
#20 0x000000000164c963 in EditorRegions::set_session (this=0x35e83a0, s=0x3dda910) at ../gtk2_ardour/editor_regions.cc:283
#21 0x00000000015101b0 in Editor::set_session (this=0x354b400, t=0x3dda910) at ../gtk2_ardour/editor.cc:1128
#22 0x00000000013cbd17 in ARDOUR_UI::connect_dependents_to_session (this=0x26e70d0, s=0x3dda910) at ../gtk2_ardour/ardour_ui_dependents.cc:78
#23 0x00000000013ce8b7 in ARDOUR_UI::set_session (this=0x26e70d0, s=0x3dda910) at ../gtk2_ardour/ardour_ui_dialogs.cc:178
#24 0x000000000137dbf0 in ARDOUR_UI::load_session (this=0x26e70d0, path=..., snap_name=..., mix_template=...) at ../gtk2_ardour/ardour_ui.cc:2757
#25 0x000000000137d2c7 in ARDOUR_UI::get_session_parameters (this=0x26e70d0, quit_on_cancel=true, should_be_new=false, load_template=...) at ../gtk2_ardour/ardour_ui.cc:2614
#26 0x00000000013742af in ARDOUR_UI::startup (this=0x26e70d0) at ../gtk2_ardour/ardour_ui.cc:667
#27 0x00000000013a090b in sigc::bound_mem_functor0<void, ARDOUR_UI>::operator() (this=0x2a9b1f8) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1787
#28 0x000000000139af16 in sigc::adaptor_functor<sigc::bound_mem_functor0<void, ARDOUR_UI> >::operator() (this=0x2a9b1f0) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251
#29 0x00000000013952c1 in sigc::internal::slot_call0<sigc::bound_mem_functor0<void, ARDOUR_UI>, void>::call_it (rep=0x2a9b1c0) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:103
#30 0x000000000135cfeb in sigc::internal::signal_emit0<void, sigc::nil>::emit (impl=0x2a9b170) at /usr/include/sigc++-2.0/sigc++/signal.h:772
#31 0x000000000135ee30 in sigc::signal0<void, sigc::nil>::emit (this=0x26e7190) at /usr/include/sigc++-2.0/sigc++/signal.h:2669
#32 0x000000000135e1e8 in sigc::signal0<void, sigc::nil>::operator() (this=0x26e7190) at /usr/include/sigc++-2.0/sigc++/signal.h:2677
#33 0x00007f734fb206d5 in Gtkmm2ext::UI::run (this=0x26e70d0, old_receiver=...) at ../libs/gtkmm2ext/gtk_ui.cc:264
#34 0x00000000017c61ce in main (argc=1, argv=0x7fff5fac7428) at ../gtk2_ardour/main.cc:555
(gdb) 
memory-hogging-backtrace.txt (18,381 bytes)   

nettings

2012-03-09 11:23

manager   ~0012883

just verified i can reproduce this bug with just the session file, in the absence of sound and peak files or anything else in the session directory.

nettings

2012-03-09 12:51

manager   ~0012884

with all regions commented out in the session file, the problem persists.
with all playlists commented out, the session loads.

looks like there is a region length in the playlists that got corrupted:

Region name="Bala L L-22.38" position="948409829" length="9223372035906365978"

the same martian length crops up in all playlists that have been touched by the last edit operation...

will try to salvage the session file and report back...

2012-03-09 13:12

 

Mahadmalila-corrupted.ardour (2,381,598 bytes)

2012-03-09 13:14

 

Mahadmalila-edited.ardour (2,376,038 bytes)

nettings

2012-03-09 13:15

manager   ~0012885

ok, i've edited the session file by hand to weed out the obvious errors (see *-edited.ardour), and now i'm stuck with a segfault related to automation drawing, probably because i guessed the region length wrong.

paul

2012-03-09 16:35

administrator   ~0012886

you've already moved past the point where my debug line is really useful. and it was also wrong anyway, because i put in the code that shows the start, not end of the region.

how easy is it to end up with a session in this condition?

nettings

2012-03-09 18:23

manager   ~0012890

don't know, this is a first. the session is complex - 24 channels, two recording days, 2k8 regions. and then i started editing, which was probably not a good idea.
there was no crash or any other oddity. just saved a snapshot, and the next morning, pooof. i do have regular snapshots, so i could sort of bisect the session. will try that next.
as soon as i know more, i'll fix the title of this bug, the memory explosion seems to have been justified - it was the playlist length field after all...

nettings

2012-03-12 21:21

manager   ~0012903

<nettings> las: btw, i've just had another session state corruption, happened while copying a range out of a number of selected tracks and moving it backwards in time. standard situation: first note is weak, so cut out one from a few bars into the groove and move it to the beginning.
<nettings> same situation as the first breakage, and it creates a spurious region in an empty track. i'm uploading a screenshot.

this is based on the old session, which was cleaned by hand after the initial corruption.

2012-03-12 21:22

 

nettings

2012-03-12 22:07

manager   ~0012905

it seems the bug is triggered by selecting non-consecutive ranges of tracks.
the bogus regions with negative lengths (which are ultimately causing the crashes) are in those tracks which were _not_ selected for copying.

nettings

2012-03-14 12:00

manager   ~0012920

the root cause of this behaviour was a previously corrupted session file, so i've renamed the bug.

cth103

2012-03-25 14:55

administrator   ~0013032

Do you have a recipe by any chance?

nettings

2012-03-31 15:45

manager   ~0013049

not really. as mentioned above, the following sequence of actions triggered the problem, at least twice:

select a short range, spanning multiple tracks. the selected tracks are not consecutive in the current track order. the tracks were selected using ctrl-leftclick, or a combination of rubberband selection and ctrl-leftclick.
most tracks are mono, but one or two are four-channel.

copy the ranges.

move the edit point back in time.

paste the ranges. now, an error related to negative index numbers in BBT pops up. the session file will now have some ranges with very big length numbers in the playlist section. crossfades and other automation might have spurious negative numbers.

disclaimer: this session might have been dodgy to begin with. as you can see, it's huge (two long days of recording into it), and there was at least one ffado-related jack crash during that time. i'll be on the lookout for similar issues, but unless other people are seeing similar issues, i wouldn't treat it as too urgent...

Issue History

Date Modified Username Field Change
2012-03-09 11:07 nettings New Issue
2012-03-09 11:07 nettings File Added: memory-hogging-backtrace.txt
2012-03-09 11:07 nettings cost => 0.00
2012-03-09 11:09 nettings File Added: Mahadmalila.ardour
2012-03-09 11:23 nettings Note Added: 0012883
2012-03-09 12:51 nettings Note Added: 0012884
2012-03-09 13:11 nettings File Deleted: Mahadmalila.ardour
2012-03-09 13:12 nettings File Added: Mahadmalila-corrupted.ardour
2012-03-09 13:14 nettings File Added: Mahadmalila-edited.ardour
2012-03-09 13:15 nettings Note Added: 0012885
2012-03-09 16:32 paul Status new => assigned
2012-03-09 16:32 paul Assigned To => paul
2012-03-09 16:35 paul Note Added: 0012886
2012-03-09 18:23 nettings Note Added: 0012890
2012-03-09 19:33 cth103 Target Version => 3.0 beta4
2012-03-12 21:21 nettings Note Added: 0012903
2012-03-12 21:22 nettings File Added: ardour3-session_corruption.png
2012-03-12 22:07 nettings Note Added: 0012905
2012-03-14 12:00 nettings Note Added: 0012920
2012-03-14 12:00 nettings Summary A3 terminates after std:bad_alloc when loading a session (runaway memory usage) => session file corruption (negative region lengths in playlist) leading to runaway memory usage
2012-03-25 14:55 cth103 Note Added: 0013032
2012-03-31 15:45 nettings Note Added: 0013049
2012-05-23 15:08 cth103 Target Version 3.0 beta4 => 3.0