Ardour 8.6.0 freezes when exporting anything other than wav

I’ve been trying to export my project to flac when I noticed it’s freezing with no error messages in the terminal or elsewhere. Then, I tried a bunch of other formats - all the same results. Only wav works. It just freezes with no progress (0%) with the others and the CPU goes way over 100% doing nothing. Interesting how when I export to mp3, ffmpeg kicks in and freezes in the terminal, but ffmpeg works otherwise in all other situations. No errors to give me a hint. Baffling!

I’m on Arch Linux 6.6.9. Lots of system resources in a studio setting. This is a first. This Used to work in Ardour 7.

Any ideas?

Are you running Ardour 8.6.0 from this site or is it Arch’s version?
If the latter you should get the demo version from here and see if it’s still a problem.

Hi. Thanks.

It’s from Arch’s official repo. I’ll give the demo version a try.

What I notice just now is that it’s not actually freezing. When exporting anything other than wav it’s just really, really, really slow. Very weird.

I tried the latest demo. Still the same result. Pauses a long time, then exports super slowly, while cranking the CPU. Wav does not do this. Every other format does - once again.

Here’s what the terminal produced until I cancelled the export:

  ARDOUR::Session::pre_export()
  ARDOUR::Session::start_audio_export(long, bool, bool)
  ARDOUR::ExportHandler::start_timespan()
  ARDOUR::ExportHandler::do_export()
  /opt/Ardour-8.6.318-demo-dbg/bin/ardour-8.6.318(+0xc054d5) [0x5aab8e2054d5]
  /opt/Ardour-8.6.318-demo-dbg/bin/ardour-8.6.318(+0xc1257e) [0x5aab8e21257e]
  /opt/Ardour-8.6.318-demo-dbg/bin/ardour-8.6.318(+0xc11329) [0x5aab8e211329]
  /opt/Ardour-8.6.318-demo-dbg/bin/ardour-8.6.318(+0xc0fcf2) [0x5aab8e20fcf2]
  /opt/Ardour-8.6.318-demo-dbg/bin/ardour-8.6.318(+0xc0eb17) [0x5aab8e20eb17]
  Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*)
  g_closure_invoke
  /opt/Ardour-8.6.318-demo-dbg/lib/libgobject-2.0.so.0(+0x22593) [0x700776022593]
  g_signal_emit_valist
  g_signal_emit
  gtk_button_clicked
  /opt/Ardour-8.6.318-demo-dbg/lib/libytk.so.2(+0x98cf7) [0x70077cc98cf7]
  g_closure_invoke
  /opt/Ardour-8.6.318-demo-dbg/lib/libgobject-2.0.so.0(+0x21e84) [0x700776021e84]
  g_signal_emit_valist
  g_signal_emit
  gtk_button_released
  /opt/Ardour-8.6.318-demo-dbg/lib/libytk.so.2(+0x98a52) [0x70077cc98a52]
  _gtk_marshal_BOOLEAN__BOXED
  g_closure_invoke
  /opt/Ardour-8.6.318-demo-dbg/lib/libgobject-2.0.so.0(+0x228bd) [0x7007760228bd]
  g_signal_emit_valist
  g_signal_emit
  /opt/Ardour-8.6.318-demo-dbg/lib/libytk.so.2(+0x2e903e) [0x70077cee903e]
locate to 0 took 1682 usecs for 2 tracks = 841 per track
-- Stacktrace Thread: ArdourGUI
  PBD::stacktrace(std::ostream&, int, unsigned long)
  ARDOUR::Session::realtime_stop(bool, bool)
  ARDOUR::Session::stop_audio_export()
  ARDOUR::Session::finalize_audio_export(ARDOUR::TransportRequestSource)
  boost::_mfi::mf1<void, ARDOUR::Session, ARDOUR::TransportRequestSource>::operator()(ARDOUR::Session*, ARDOUR::TransportRequestSource) const
  void boost::_bi::list2<boost::_bi::value<ARDOUR::Session*>, boost::arg<1> >::operator()<boost::_mfi::mf1<void, ARDOUR::Session, ARDOUR::TransportRequestSource>, boost::_bi::rrlist1<ARDOUR::TransportRequestSource> >(boost::_bi::type<void>, boost::_mfi::mf1<void, ARDOUR::Session, ARDOUR::TransportRequestSource>&, boost::_bi::rrlist1<ARDOUR::TransportRequestSource>&, int)
  void boost::_bi::bind_t<void, boost::_mfi::mf1<void, ARDOUR::Session, ARDOUR::TransportRequestSource>, boost::_bi::list2<boost::_bi::value<ARDOUR::Session*>, boost::arg<1> > >::operator()<ARDOUR::TransportRequestSource>(ARDOUR::TransportRequestSource&&)
  boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, ARDOUR::Session, ARDOUR::TransportRequestSource>, boost::_bi::list2<boost::_bi::value<ARDOUR::Session*>, boost::arg<1> > >, void, ARDOUR::TransportRequestSource>::invoke(boost::detail::function::function_buffer&, ARDOUR::TransportRequestSource)
  boost::function1<void, ARDOUR::TransportRequestSource>::operator()(ARDOUR::TransportRequestSource) const
  PBD::Signal1<void, ARDOUR::TransportRequestSource, PBD::OptionalLastValue<void> >::operator()(ARDOUR::TransportRequestSource)
  ARDOUR::ExportStatus::finish(ARDOUR::TransportRequestSource)
  /opt/Ardour-8.6.318-demo-dbg/bin/ardour-8.6.318(+0xc058bc) [0x5aab8e2058bc]
  /opt/Ardour-8.6.318-demo-dbg/bin/ardour-8.6.318(+0xc054e4) [0x5aab8e2054e4]
  /opt/Ardour-8.6.318-demo-dbg/bin/ardour-8.6.318(+0xc1257e) [0x5aab8e21257e]
  /opt/Ardour-8.6.318-demo-dbg/bin/ardour-8.6.318(+0xc11329) [0x5aab8e211329]
  /opt/Ardour-8.6.318-demo-dbg/bin/ardour-8.6.318(+0xc0fcf2) [0x5aab8e20fcf2]
  /opt/Ardour-8.6.318-demo-dbg/bin/ardour-8.6.318(+0xc0eb17) [0x5aab8e20eb17]
  Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*)
  g_closure_invoke
  /opt/Ardour-8.6.318-demo-dbg/lib/libgobject-2.0.so.0(+0x22593) [0x700776022593]
  g_signal_emit_valist
  g_signal_emit
  gtk_button_clicked
  /opt/Ardour-8.6.318-demo-dbg/lib/libytk.so.2(+0x98cf7) [0x70077cc98cf7]
  g_closure_invoke
  /opt/Ardour-8.6.318-demo-dbg/lib/libgobject-2.0.so.0(+0x21e84) [0x700776021e84]
  g_signal_emit_valist
  g_signal_emit
  gtk_button_released
  /opt/Ardour-8.6.318-demo-dbg/lib/libytk.so.2(+0x98a52) [0x70077cc98a52]
-- Stacktrace Thread: ArdourGUI
  PBD::stacktrace(std::ostream&, int, unsigned long)
  ARDOUR::Session::flush_all_inserts()
  ARDOUR::Session::stop_audio_export()
  ARDOUR::Session::finalize_audio_export(ARDOUR::TransportRequestSource)
  boost::_mfi::mf1<void, ARDOUR::Session, ARDOUR::TransportRequestSource>::operator()(ARDOUR::Session*, ARDOUR::TransportRequestSource) const
  void boost::_bi::list2<boost::_bi::value<ARDOUR::Session*>, boost::arg<1> >::operator()<boost::_mfi::mf1<void, ARDOUR::Session, ARDOUR::TransportRequestSource>, boost::_bi::rrlist1<ARDOUR::TransportRequestSource> >(boost::_bi::type<void>, boost::_mfi::mf1<void, ARDOUR::Session, ARDOUR::TransportRequestSource>&, boost::_bi::rrlist1<ARDOUR::TransportRequestSource>&, int)
  void boost::_bi::bind_t<void, boost::_mfi::mf1<void, ARDOUR::Session, ARDOUR::TransportRequestSource>, boost::_bi::list2<boost::_bi::value<ARDOUR::Session*>, boost::arg<1> > >::operator()<ARDOUR::TransportRequestSource>(ARDOUR::TransportRequestSource&&)
  boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, ARDOUR::Session, ARDOUR::TransportRequestSource>, boost::_bi::list2<boost::_bi::value<ARDOUR::Session*>, boost::arg<1> > >, void, ARDOUR::TransportRequestSource>::invoke(boost::detail::function::function_buffer&, ARDOUR::TransportRequestSource)
  boost::function1<void, ARDOUR::TransportRequestSource>::operator()(ARDOUR::TransportRequestSource) const
  PBD::Signal1<void, ARDOUR::TransportRequestSource, PBD::OptionalLastValue<void> >::operator()(ARDOUR::TransportRequestSource)
  ARDOUR::ExportStatus::finish(ARDOUR::TransportRequestSource)
  /opt/Ardour-8.6.318-demo-dbg/bin/ardour-8.6.318(+0xc058bc) [0x5aab8e2058bc]
  /opt/Ardour-8.6.318-demo-dbg/bin/ardour-8.6.318(+0xc054e4) [0x5aab8e2054e4]
  /opt/Ardour-8.6.318-demo-dbg/bin/ardour-8.6.318(+0xc1257e) [0x5aab8e21257e]
  /opt/Ardour-8.6.318-demo-dbg/bin/ardour-8.6.318(+0xc11329) [0x5aab8e211329]
  /opt/Ardour-8.6.318-demo-dbg/bin/ardour-8.6.318(+0xc0fcf2) [0x5aab8e20fcf2]
  /opt/Ardour-8.6.318-demo-dbg/bin/ardour-8.6.318(+0xc0eb17) [0x5aab8e20eb17]
  Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*)
  g_closure_invoke
  /opt/Ardour-8.6.318-demo-dbg/lib/libgobject-2.0.so.0(+0x22593) [0x700776022593]
  g_signal_emit_valist
  g_signal_emit
  gtk_button_clicked
  /opt/Ardour-8.6.318-demo-dbg/lib/libytk.so.2(+0x98cf7) [0x70077cc98cf7]
  g_closure_invoke
  /opt/Ardour-8.6.318-demo-dbg/lib/libgobject-2.0.so.0(+0x21e84) [0x700776021e84]
  g_signal_emit_valist
  g_signal_emit
  gtk_button_released
  /opt/Ardour-8.6.318-demo-dbg/lib/libytk.so.2(+0x98a52) [0x70077cc98a52]
Graph::drop_threads() sema-counts: 0, 0, 

What audio backend do you use (Ardour > Menu > Window > Audio / MIDI setup)

Some versions of jack2 and Pipewire are known to cause issues

Hi.

I use pipewire-jack, which simply shows up as jack in Audio-Midi Setup. The versions is as follows:

pipewire-jack-1:1.2.1-1

By the way, I can sort of get it to work if I stop it when it lags, wait a moment and start it again. If it lags or freezes again, I can repeat the process until it catches and renders. This is really unusable in this fashion. So, if there’s any info on jack2/pipewire workarounds, please let me know.

Thanks!

You can isolate whether that is the issue by using the ALSA backend to export.

The release notes for pipewire 1.2.1 has this note:
Ardour Export Issues: The update addresses a regression in Ardour’s export functionality caused by mishandled synchronization groups.

It is always possible that the error in 1.2.0 was not fully corrected in 1.2.1. Using the ALSA backend should help confirm if that is likely the cause.

There is a chance it is related to Pipewire rather than Ardour. The original poster in this thread started having export issues after updating Arch’s Pipewire packages to 1.2.1-1:

https://linuxmusicians.com/viewtopic.php?t=27274

Edit: I see Chris beat me to this and had better information to share.

A workaround is of course to export to wav and then manually compressing it to flac or mp3 or whatever you like.

It would appear to be a quirk of pipewire. Indeed, when stopping jack and starting ALSA in the session, exporting works as expected.

I guess that’s the workaround, for now.

What an amazing group of users the Ardour community has. Thanks for all the help!

1 Like

Also RealTime export should work.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.