View Issue Details

IDCategoryLast Update
0008007bugs2020-04-11 20:17
ReportermauritslamersAssigned To 
Reproducibilitysometimes 
Status newResolutionopen 
Platformx86_64OSLinuxOS VersionUbuntu 18.04
Product Version6.0-pre1 
Fixed in Version 
Summary0008007: Importing a Protools file makes Ardour get stuck sometimes
DescriptionWhen 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 Reproduce1. 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 InformationI 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
TagsNo tags attached.

Activities

x42

2020-04-11 20:07

administrator   ~0021309

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?

mauritslamers

2020-04-11 20:17

reporter   ~0021310

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.

Issue History

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