View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0006564 | ardour | bugs | public | 2015-09-07 13:10 | 2015-09-07 13:59 |
Reporter | rock_theory | Assigned To | |||
Priority | normal | Severity | major | Reproducibility | always |
Status | new | Resolution | open | ||
Summary | 0006564: v4.2.0 GUI out of memory | ||||
Description | Simply 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. | ||||
Tags | No tags attached. | ||||
2015-09-07 13:10
|
|
|
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 |
|
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*/ |
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 |