View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001985 | ardour | bugs | public | 2007-12-09 12:35 | 2020-04-19 20:12 |
Reporter | timbyr | Assigned To | cth103 | ||
Priority | high | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Summary | 0001985: Cannot reopen session because jack ports are not unregistered on session close | ||||
Description | This bug was reproduced using trunk@2714 but as far as I can tell was introduced in commit 2556: virtualize Port object; clean up automation tracks from track deletion To reproduce: 1. Create a new session 2. Save session. 3. Close session. notice all ports are still registered. 4. Try and reopen same or different session. 5. Session does not load and log window contains: [ERROR]: JACK: cannot deliver port registration request [ERROR]: Unable to create all required ports [ERROR]: Session "/home/timbyr/Sessions/aaa/ (snapshot aaa)" did not load successfully | ||||
Tags | No tags attached. | ||||
|
Output of svn log surrounding the introduction of the bug ------------------------------------------------------------------------ r2558 | drobilla | 2007-10-17 13:09:38 +1000 (Wed, 17 Oct 2007) | 2 lines Fix compilation. ------------------------------------------------------------------------ r2557 | paul | 2007-10-17 12:09:24 +1000 (Wed, 17 Oct 2007) | 1 line added file ------------------------------------------------------------------------ r2556 | paul | 2007-10-17 07:01:12 +1000 (Wed, 17 Oct 2007) | 1 line virtualize Port object; clean up automation tracks from track deletion |
|
drobilla: How about my fix for that issue (see mail to ardour-dev)? |
2008-03-19 04:08
|
bugfix_open_ports_on_session_close.diff (2,404 bytes)
Index: libs/ardour/audioengine.cc =================================================================== --- libs/ardour/audioengine.cc (Revision 3155) +++ libs/ardour/audioengine.cc (Arbeitskopie) @@ -527,7 +527,7 @@ session = 0; } - remove_all_ports (); + //remove_all_ports (); } void @@ -555,6 +555,7 @@ { Port* newport = 0; + cerr << "trying to register port with name " << portname << endl; try { if (dtype == DataType::AUDIO) { newport = new AudioPort (portname, (input ? Port::IsInput : Port::IsOutput), publish, frames_per_cycle()); @@ -564,11 +565,17 @@ throw unknown_type(); } + cerr << "successfully got port " << portname << " with address " << newport << endl; + RCUWriter<Ports> writer (ports); boost::shared_ptr<Ports> ps = writer.get_copy (); + cerr << "Address of ports list: " << ps << endl + << "Ports set size before insert: " << ps->size() << endl; ps->insert (ps->begin(), newport); + cerr << "Ports set size after insert: " << ps->size() << endl; /* writer goes out of scope, forces update */ + return newport; } @@ -608,22 +615,31 @@ { /* caller must hold process lock */ + cerr << "about to unregister Port xx x" << &port << "\n"; + if (!_running) { /* probably happening when the engine has been halted by JACK, in which case, there is nothing we can do here. */ + cerr << "not running\n"; return 0; } { + cerr << "before getcopy\n"; RCUWriter<Ports> writer (ports); boost::shared_ptr<Ports> ps = writer.get_copy (); + cerr << "Ports set size: " << ps.get()->size() << endl; + for (Ports::iterator i = ps->begin(); i != ps->end(); ++i) { + cerr << "before delete" << endl; if ((*i) == &port) { + cerr << "About to delete " << &port << endl; delete *i; ps->erase (i); + cerr << "After erasing ports size: " << ps->size(); break; } } @@ -631,6 +647,7 @@ /* writer goes out of scope, forces update */ } + cerr << "before remove_connections\n"; remove_connections_for (port); return 0; Index: libs/ardour/io.cc =================================================================== --- libs/ardour/io.cc (Revision 3155) +++ libs/ardour/io.cc (Arbeitskopie) @@ -202,6 +202,7 @@ IO::~IO () { + cerr << "In destructor of IO" << endl; Glib::Mutex::Lock guard (m_meter_signal_lock); Glib::Mutex::Lock lm (io_lock); |
|
las, drobilla: This bugfix isnt meant to be applied directly, rather it spots the error location and inserts some debugging output. After I applied it, it worked fine. (All the ports are deregistered correctly and opening new sessions works fine) |
|
this was applied and committed, yes? |
|
No, not yet...... Drobilla said, there was a deeper problem to it, which I dont know about. |
|
What is the current status on this bug? Does it still apply to 2.8 or newer? |
|
This is fixed in 3.0 revision 5621. |
|
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. |
Date Modified | Username | Field | Change |
---|---|---|---|
2007-12-09 12:35 | timbyr | New Issue | |
2007-12-14 22:51 | timbyr | Note Added: 0004604 | |
2008-03-18 07:06 | hansfbaier | Note Added: 0004789 | |
2008-03-19 04:08 | hansfbaier | File Added: bugfix_open_ports_on_session_close.diff | |
2008-03-19 04:10 | hansfbaier | Note Added: 0004790 | |
2008-03-21 13:22 | paul | Note Added: 0004793 | |
2008-03-21 13:22 | paul | Status | new => feedback |
2008-03-24 01:43 | hansfbaier | Note Added: 0004806 | |
2009-07-05 01:43 | seablade | Note Added: 0006278 | |
2009-07-05 01:43 | seablade | Description Updated | |
2009-09-02 22:59 | cth103 | cost | => 0.00 |
2009-09-02 22:59 | cth103 | Note Added: 0006631 | |
2009-09-02 22:59 | cth103 | Status | feedback => resolved |
2009-09-02 22:59 | cth103 | Resolution | open => fixed |
2009-09-02 22:59 | cth103 | Assigned To | => cth103 |
2020-04-19 20:12 | system | Note Added: 0021591 | |
2020-04-19 20:12 | system | Status | resolved => closed |