View Issue Details

IDProjectCategoryView StatusLast Update
0006564ardourbugspublic2015-09-07 13:59
Reporterrock_theory Assigned To 
PrioritynormalSeveritymajorReproducibilityalways
Status newResolutionopen 
Summary0006564: v4.2.0 GUI out of memory
DescriptionSimply opening this project causes it to crash. Works fine in 3.5.x, does not open in 4.2.0. I have one or two other projects that do this.
TagsNo tags attached.

Activities

2015-09-07 13:10

 

Apex_Rising_MASTER.ardour (3,718,164 bytes)

x42

2015-09-07 13:37

administrator   ~0017152

This is relevant when loading large sessions only (the attached Apex_Rising.ardour needs 544 bytes rt-messages)

Loading a session enqueues a lot of rt messages (for each location and for every route solo/mute).
A workaround for this (which makes above session load) is in Ardour-4.2-193-g6ade16b (increase memory pool to 4k). One solution might be to not send these messages while state_of_the_state() is Loading or to process them directly during session-load..


  * frame #0: Pool::alloc(this=0x000000010b9d5ff0) + 30 at pool.cc:71
    frame 0000001: CrossThreadPool::alloc(this=0x000000010b9d5ff0) + 34 at pool.cc:274
    frame #2: ARDOUR::SessionEvent::operator new((null)=192) + 57 at session_events.cc:79
    frame #3: ARDOUR::SessionEventManager::clear_events(this=0x00000001070f5970, type=AutoLoop) + 38 at session_events.cc:134
    frame 0000004: ARDOUR::Session::auto_loop_changed(this=0x00000001070f5800, location=0x0000000107a84800) + 646 at session.cc:1462
    frame 0000005: ARDOUR::Session::set_auto_loop_location(this=0x00000001070f5800, location=0x0000000107a84800) + 2082 at session.cc:1589
    frame #6: ARDOUR::Session::location_added(this=0x00000001070f5800, location=0x0000000107a84800) + 106 at session.cc:1697
    frame #7: ARDOUR::Session::_locations_changed(this=0x00000001070f5800, locations=0x00007fff5fbfb510) + 188 at session.cc:1773
    frame 0000008: void ARDOUR::Locations::apply<ARDOUR::Session>(this=0x000000011300d2e0, obj=0x00000001070f5800, method=0x000000010343b0d0)(std::list<ARDOUR::Location*, std::allocator<ARDOUR::Location*> > const&)) const + 353 at location.h:224
    frame 0000009: ARDOUR::Session::locations_changed(this=0x00000001070f5800) + 57 at session.cc:1758
    frame 0000010: ARDOUR::Session::set_state(this=0x00000001070f5800, node=0x000000011135a6d0, version=3001) + 4044 at session_state.cc:1325


  * frame #0: CrossThreadPool::alloc(this=0x000000010b9d5ff0) + 16 at pool.cc:272
    frame 0000001: ARDOUR::SessionEvent::operator new((null)=192) + 57 at session_events.cc:79
    frame #2: ARDOUR::SessionEvent* ARDOUR::Session::get_rt_event<bool>(this=0x00000001070f5800, rl=shared_ptr<std::list<boost::shared_ptr<ARDOUR::Route>, std::allocator<boost::shared_ptr<ARDOUR::Route> > > > at 0x00007fff5fbfa6d0, targ=false, after=ARDOUR::SessionEvent::RTeventCallback at 0x00007fff5fbfa6b0, group_override=false, method=0x00000001034e9240)>, bool, void (ARDOUR::Session::*)(boost::shared_ptr<std::list<boost::shared_ptr<ARDOUR::Route>, std::allocator<boost::shared_ptr<ARDOUR::Route> > > >, bool, bool)) + 95 at session.h:1767
    frame #3: ARDOUR::Session::set_solo(this=0x00000001070f5800, rl=<unavailable>, yn=false, after=ARDOUR::SessionEvent::RTeventCallback at 0x00007fff5fbfa788, group_override=false)>, bool) + 179 at session_rtevents.cc:59
    frame 0000004: ARDOUR::Route::SoloControllable::set_value(this=0x0000000118511600, val=0) + 775 at route.cc:3739
    frame 0000005: PBD::Controllable::set_state(this=0x0000000118511600, node=0x0000000111cf6950, (null)=3001) + 608 at controllable.cc:146
    frame #6: ARDOUR::Route::set_state(this=0x00000001075a1600, node=0x0000000111cc8740, version=3001) + 8583 at route.cc:2497
    frame #7: ARDOUR::Session::XMLRouteFactory(this=0x00000001070f5800, node=0x0000000111cc8740, version=3001) + 2160 at session_state.cc:1531
    frame 0000008: ARDOUR::Session::load_routes(this=0x00000001070f5800, node=0x0000000111cc86a0, version=3001) + 741 at session_state.cc:1457
    frame 0000009: ARDOUR::Session::set_state(this=0x00000001070f5800, node=0x000000011135a6d0, version=3001) + 6582 at session_state.cc:1381

x42

2015-09-07 13:59

administrator   ~0017153

PS. simple hack to track things down more easily:

diff --git a/libs/pbd/pool.cc b/libs/pbd/pool.cc
index ccdb85b..a6a949d 100644
--- a/libs/pbd/pool.cc
+++ b/libs/pbd/pool.cc
@@ -68,6 +68,8 @@ Pool::alloc ()
 {
        void *ptr;
 
+ cerr << "Pool " << _name << " free: " << free_list.read_space() << endmsg;
+
        if (free_list.read (&ptr, 1) < 1) {
                fatal << "CRITICAL: " << _name << " POOL OUT OF MEMORY - RECOMPILE WITH LARGER SIZE!!" << endmsg;
                abort(); /*NOTREACHED*/

Issue History

Date Modified Username Field Change
2015-09-07 13:10 rock_theory New Issue
2015-09-07 13:10 rock_theory File Added: Apex_Rising_MASTER.ardour
2015-09-07 13:37 x42 Note Added: 0017152
2015-09-07 13:59 x42 Note Added: 0017153