View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0008007 | ardour | bugs | public | 2020-04-11 19:46 | 2023-04-08 09:35 |
Reporter | mauritslamers | Assigned To | zamaudio | ||
Priority | normal | Severity | minor | Reproducibility | sometimes |
Status | feedback | Resolution | open | ||
Platform | x86_64 | OS | Linux | OS Version | Ubuntu 18.04 |
Product Version | 6.0-pre1 | ||||
Summary | 0008007: Importing a Protools file makes Ardour get stuck sometimes | ||||
Description | When importing a protools session using the (version 7.x in my case) using the "Import PT Session" menu option, a bug causes Ardour to get stuck in the import process, specifically when creating the tracks in the session to put the imported sound files. I suspect this to be a race condition, as it does not seem to happen when running in gdb mode. The console reports "Failed to register port "Audio 1/audio_out 2", reason is unknown from here", the application log has a similar message, but tells that it cannot create track Audio 1/audio_out 2, unknown constructor. | ||||
Steps To Reproduce | 1. Start Ardour 2. Create a new session with the same bitrate and samplerate as the PT session to be imported 3. Import the session through "File > Import PT session" | ||||
Additional Information | I have tested this a few times, and originally thought that it happened all the time. It turns out that once in a while it works. I followed the instructions to get a trace, but I haven't managed to get the problematic behavior reproduced when running ardour with the --gdb option. What I eventually did get, where crashes at the same point, which I did not get in the beginning. The stack trace here is: PBD::stacktrace(std::ostream&, int) ARDOUR::Session::realtime_stop(bool, bool) ARDOUR::Session::engine_halted() boost::_mfi::mf0<void, ARDOUR::Session>::operator()(ARDOUR::Session*) const void boost::_bi::list1<boost::_bi::value<ARDOUR::Session*> >::operator()<boost::_mfi::mf0<void, ARDOUR::Session>, boost::_bi::rrlist1<char const*> >(boost::_bi::type<void>, boost::_mfi::mf0<void, ARDOUR::Session>&, boost::_bi::rrlist1<char const*>&, int) void boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::Session>, boost::_bi::list1<boost::_bi::value<ARDOUR::Session*> > >::operator()<char const*>(char const*&&) boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::Session>, boost::_bi::list1<boost::_bi::value<ARDOUR::Session*> > >, void, char const*>::invoke(boost::detail::function::function_buffer&, char const*) boost::function1<void, char const*>::operator()(char const*) const PBD::Signal1<void, char const*, PBD::OptionalLastValue<void> >::operator()(char const*) ARDOUR::AudioEngine::halted_callback(char const*) ARDOUR::JACKAudioBackend::disconnected(char const*) boost::_mfi::mf1<void, ARDOUR::JACKAudioBackend, char const*>::operator()(ARDOUR::JACKAudioBackend*, char const*) const void boost::_bi::list2<boost::_bi::value<ARDOUR::JACKAudioBackend*>, boost::arg<1> >::operator()<boost::_mfi::mf1<void, ARDOUR::JACKAudioBackend, char const*>, boost::_bi::rrlist1<char const*> >(boost::_bi::type<void>, boost::_mfi::mf1<void, ARDOUR::JACKAudioBackend, char const*>&, boost::_bi::rrlist1<char const*>&, int) void boost::_bi::bind_t<void, boost::_mfi::mf1<void, ARDOUR::JACKAudioBackend, char const*>, boost::_bi::list2<boost::_bi::value<ARDOUR::JACKAudioBackend*>, boost::arg<1> > >::operator()<char const*>(char const*&&) boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, ARDOUR::JACKAudioBackend, char const*>, boost::_bi::list2<boost::_bi::value<ARDOUR::JACKAudioBackend*>, boost::arg<1> > >, void, char const*>::invoke(boost::detail::function::function_buffer&, char const*) boost::function1<void, char const*>::operator()(char const*) const PBD::Signal1<void, char const*, PBD::OptionalLastValue<void> >::operator()(char const*) ARDOUR::JackConnection::halted_info_callback(JackStatus, char const*) actually writing state to /home/maurits/Ardour Sessions/test7/test7.tmp /opt/Ardour-6.0.pre1.264-dbg/lib/backends/libjack_audiobackend.so(+0x706cb) [0x7fa1341776cb] /usr/lib/x86_64-linux-gnu/libjack.so.0(+0x10581) [0x7fa12b8b5581] /usr/lib/x86_64-linux-gnu/libjack.so.0(+0x2f017) [0x7fa12b8d4017] /usr/lib/x86_64-linux-gnu/libjack.so.0(+0x2a626) [0x7fa12b8cf626] /lib/x86_64-linux-gnu/libpthread.so.0(+0x76db) [0x7fa1519596db] clone renaming state to /home/maurits/Ardour Sessions/test7/test7.ardour ardour-6.0.pre1.264: /home/ardour/linux-x86_64-v5/gtk/inst/include/boost/smart_ptr/shared_ptr.hpp:734: typename boost::detail::sp_member_access<T>::type boost::shared_ptr<T>::operator->() const [with T = ARDOUR::JackPort; typename boost::detail::sp_member_access<T>::type = ARDOUR::JackPort*]: Assertion `px != 0' failed. saved state in 22.5 ms | ||||
Tags | No tags attached. | ||||
|
Could it be that the session has a lot of tracks, and JACK runs out of ports? Does it work when using Ardour's ALSA backend instead? |
|
I think that it is unlikely that Jack is running out of ports, as the PT sessions I tried to import (one 44KHz 16bit, and one 48KHz 16 bit) each only has two tracks. I have quickly tested one time with each session with alsa as backend and didn't run into issues yet. |
|
mauritslamers: Can you please retest with version 295dbd8e1e8465fb74d94e4eb0cfa35b09761cfc (current master) or later. Eg tomorrow's nightly would be a good test. |
Date Modified | Username | Field | Change |
---|---|---|---|
2020-04-11 19:46 | mauritslamers | New Issue | |
2020-04-11 20:07 | x42 | Note Added: 0021309 | |
2020-04-11 20:17 | mauritslamers | Note Added: 0021310 | |
2023-04-08 06:21 | zamaudio | Note Added: 0027568 | |
2023-04-08 09:35 | x42 | Assigned To | => zamaudio |
2023-04-08 09:35 | x42 | Status | new => feedback |