Ardour hangs on exit

Hi,

I know there are threads with similar topics, but all claim to have been solved and I see this with current git master, so …

I tested ardour 7 on linux with a notebook and on a server. Everything is fine, until I want to quit the application. Then it just hangs until I kill it (with a TERM signal or similar).

I run on Opensuse Tumbleweed with latest updates.
My glibc is version 2.37 (another thread mentions the hanging exit is fixed with 2.36)
I tested ardour 7.3 coming with the distro, your downloadable demo and a selfcompiled version from git (master as of today). All have the same problem.
What might be different than most other installations is that I use pipewire (with pulseaudio and jack compatibility enabled) as audio backend.

To test it I just start ardour, without plugins, new empty session, then immediately close.
I am asked about saving/discarding the session (my answer doesn’t matter). Then it hangs.

These are the backtraces of all threads while it hangs, maybe you can do something with it:

Backtraces
(gdb) thread apply all bt

Thread 12 (Thread 0x7f5271ffd6c0 (LWP 24280) "pw-ardour"):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007f52b0c6e02c in g_mutex_lock_slowpath (mutex=0x405a688) at ../glib/gthread-posix.c:1388
#2  0x00000000007402cc in Glib::Threads::Mutex::Lock::Lock(Glib::Threads::Mutex&) (this=0x7f5271ffc020, mutex=...) at /usr/include/glibmm-2.4/glibmm/threads.h:687
#3  0x00007f52b2ab1c96 in ARDOUR::AudioEngine::buffer_size_change(unsigned int) (this=0x4059e30, bufsiz=1024) at ../libs/ardour/audioengine.cc:214
#4  0x00007f529277f41f in ARDOUR::JACKAudioBackend::jack_bufsize_callback(unsigned int) (this=0x394ff10, nframes=1024) at ../libs/backends/jack/jack_audiobackend.cc:1057
#5  0x00007f529277f25c in ARDOUR::JACKAudioBackend::_bufsize_callback(unsigned int, void*) (nframes=1024, arg=0x394ff10) at ../libs/backends/jack/jack_audiobackend.cc:1021
#6  0x00007f52926e03fc in do_buffer_frames (loop=<optimized out>, async=<optimized out>, seq=<optimized out>, data=<optimized out>, size=<optimized out>, user_data=0x4448d00) at ../pipewire-jack/src/pipewire-jack.c:1316
#7  0x00007f52926d91a2 in check_buffer_frames (pos=<optimized out>, c=0x4448d00) at ../pipewire-jack/src/pipewire-jack.c:1328
#8  do_update_driver_activation (loop=<optimized out>, async=<optimized out>, seq=<optimized out>, data=<optimized out>, size=<optimized out>, user_data=0x4448d00) at ../pipewire-jack/src/pipewire-jack.c:1653
#9  0x00007f52926f5b6d in update_driver_activation.isra.0 (c=c@entry=0x4448d00) at ../pipewire-jack/src/pipewire-jack.c:1685
#10 0x00007f52926da433 in client_node_set_io (data=0x4448d00, id=7, mem_id=0, offset=<optimized out>, size=1688) at ../pipewire-jack/src/pipewire-jack.c:1723
#11 0x00007f52815623e1 in client_node_demarshal_set_io (data=<optimized out>, msg=<optimized out>) at ../src/modules/module-client-node/protocol-native.c:665
#12 0x00007f5281598179 in process_remote (impl=impl@entry=0x53d5930) at ../src/modules/module-protocol-native.c:946
#13 0x00007f52815987e0 in on_remote_data (data=0x53d5930, fd=22, mask=1) at ../src/modules/module-protocol-native.c:980
#14 0x00007f52926b676e in loop_iterate (object=0x53a9e18, timeout=-1) at ../spa/plugins/support/loop.c:432
#15 0x00007f5283ea78b2 in do_loop (user_data=0x53dcbe0) at ../src/pipewire/thread-loop.c:233
#16 0x00007f52aec92f24 in start_thread (arg=<optimized out>) at pthread_create.c:444
#17 0x00007f52aed19f50 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 11 (Thread 0x7f5273fff6c0 (LWP 24266) "gdbus"):
#0  0x00007f52aed0c08f in __GI___poll (fds=0x7f526c000b90, nfds=2, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
--Type <RET> for more, q to quit, c to continue without paging--c
#1  0x00007f52b0c152ce in g_main_context_poll (priority=<optimized out>, n_fds=2, fds=0x7f526c000b90, timeout=<optimized out>, context=0x3e31770) at ../glib/gmain.c:4584
#2  g_main_context_iterate (context=0x3e31770, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4271
#3  0x00007f52b0c1560f in g_main_loop_run (loop=0x3e3c2e0) at ../glib/gmain.c:4479
#4  0x00007f52b0404a86 in gdbus_shared_thread_func (user_data=0x3dfb130) at ../gio/gdbusprivate.c:284
#5  0x00007f52b0c41a8e in g_thread_proxy (data=0x3df8ba0) at ../glib/gthread.c:831
#6  0x00007f52aec92f24 in start_thread (arg=<optimized out>) at pthread_create.c:444
#7  0x00007f52aed19f50 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 10 (Thread 0x7f5272ffe6c0 (LWP 24265) "gmain"):
#0  0x00007f52aed0c08f in __GI___poll (fds=0x3e2d5d0, nfds=2, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f52b0c152ce in g_main_context_poll (priority=<optimized out>, n_fds=2, fds=0x3e2d5d0, timeout=<optimized out>, context=0x3e2d430) at ../glib/gmain.c:4584
#2  g_main_context_iterate (context=context@entry=0x3e2d430, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4271
#3  0x00007f52b0c153ec in g_main_context_iteration (context=0x3e2d430, may_block=may_block@entry=1) at ../glib/gmain.c:4343
#4  0x00007f52b0c15431 in glib_worker_main (data=<optimized out>) at ../glib/gmain.c:6455
#5  0x00007f52b0c41a8e in g_thread_proxy (data=0x3df4cf0) at ../glib/gthread.c:831
#6  0x00007f52aec92f24 in start_thread (arg=<optimized out>) at pthread_create.c:444
#7  0x00007f52aed19f50 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 9 (Thread 0x7f528294d6c0 (LWP 24264) "pool-spawner"):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007f52b0c6ea8f in g_cond_wait (cond=cond@entry=0x3e001c8, mutex=mutex@entry=0x3e001c0) at ../glib/gthread-posix.c:1475
#2  0x00007f52b0bdf01b in g_async_queue_pop_intern_unlocked (queue=0x3e001c0, wait=1, end_time=-1) at ../glib/gasyncqueue.c:425
#3  0x00007f52b0c420e2 in g_thread_pool_spawn_thread (data=<optimized out>) at ../glib/gthreadpool.c:311
#4  0x00007f52b0c41a8e in g_thread_proxy (data=0x3df8640) at ../glib/gthread.c:831
#5  0x00007f52aec92f24 in start_thread (arg=<optimized out>) at pthread_create.c:444
#6  0x00007f52aed19f50 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 8 (Thread 0x7f52910986c0 (LWP 24238) "DeviceList"):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007f52b0c6ea8f in g_cond_wait (cond=0x405a7e8, mutex=0x405a7f8) at ../glib/gthread-posix.c:1475
#2  0x00007f52b2ab37fe in ARDOUR::AudioEngine::do_devicelist_update() (this=0x4059e30) at ../libs/ardour/audioengine.cc:748
#3  0x00007f52b2ac1acb in boost::_mfi::mf0<void, ARDOUR::AudioEngine>::operator()(ARDOUR::AudioEngine*) const (this=0x4046940, p=0x4059e30) at /usr/local/include/boost/bind/mem_fn_template.hpp:49
#4  0x00007f52b2ac1185 in boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> >::operator()<boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list0>(boost::_bi::type<void>, boost::_mfi::mf0<void, ARDOUR::AudioEngine>&, boost::_bi::list0&, int) (this=0x4046950, f=..., a=...) at /usr/local/include/boost/bind/bind.hpp:259
#5  0x00007f52b2ac07c3 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> > >::operator()() (this=0x4046940) at /usr/local/include/boost/bind/bind.hpp:1294
#6  0x00007f52b2abfd3d in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> > >, void>::invoke(boost::detail::function::function_buffer&) (function_obj_ptr=...) at /usr/local/include/boost/function/function_template.hpp:158
#7  0x0000000000759f72 in boost::function0<void>::operator()() const (this=0x4046938) at /usr/local/include/boost/function/function_template.hpp:763
#8  0x00007f52b0fe53b3 in PBD::Thread::_run(void*) (arg=0x4046910) at ../libs/pbd/pthread_utils.cc:488
#9  0x00007f52aec92f24 in start_thread (arg=<optimized out>) at pthread_create.c:444
#10 0x00007f52aed19f50 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 7 (Thread 0x7f529222f6c0 (LWP 24237) "EngineWatchdog"):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007f52b0c6ea8f in g_cond_wait (cond=0x405a7b8, mutex=0x405a7c8) at ../glib/gthread-posix.c:1475
#2  0x00007f52b2ab35ac in ARDOUR::AudioEngine::do_reset_backend() (this=0x4059e30) at ../libs/ardour/audioengine.cc:712
#3  0x00007f52b2ac1acb in boost::_mfi::mf0<void, ARDOUR::AudioEngine>::operator()(ARDOUR::AudioEngine*) const (this=0x4067270, p=0x4059e30) at /usr/local/include/boost/bind/mem_fn_template.hpp:49
#4  0x00007f52b2ac1185 in boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> >::operator()<boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list0>(boost::_bi::type<void>, boost::_mfi::mf0<void, ARDOUR::AudioEngine>&, boost::_bi::list0&, int) (this=0x4067280, f=..., a=...) at /usr/local/include/boost/bind/bind.hpp:259
#5  0x00007f52b2ac07c3 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> > >::operator()() (this=0x4067270) at /usr/local/include/boost/bind/bind.hpp:1294
#6  0x00007f52b2abfd3d in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf0<void, ARDOUR::AudioEngine>, boost::_bi::list1<boost::_bi::value<ARDOUR::AudioEngine*> > >, void>::invoke(boost::detail::function::function_buffer&) (function_obj_ptr=...) at /usr/local/include/boost/function/function_template.hpp:158
#7  0x0000000000759f72 in boost::function0<void>::operator()() const (this=0x4067268) at /usr/local/include/boost/function/function_template.hpp:763
#8  0x00007f52b0fe53b3 in PBD::Thread::_run(void*) (arg=0x4067240) at ../libs/pbd/pthread_utils.cc:488
#9  0x00007f52aec92f24 in start_thread (arg=<optimized out>) at pthread_create.c:444
#10 0x00007f52aed19f50 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 6 (Thread 0x7f5293fff6c0 (LWP 24235) "Analyzer"):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007f52b0c6ea8f in g_cond_wait (cond=0x7f52b3a5c040 <ARDOUR::Analyser::SourcesToAnalyse>, mutex=0x7f52b3a5c038 <ARDOUR::Analyser::analysis_queue_lock>) at ../glib/gthread-posix.c:1475
#2  0x00007f52b2a6366b in ARDOUR::Analyser::work() () at ../libs/ardour/analyser.cc:95
#3  0x00000000010af90d in sigc::pointer_functor0<void>::operator()() const (this=0x38e9620) at /usr/include/sigc++-2.0/sigc++/functors/ptr_fun.h:77
#4  0x00007f52b2a667f2 in boost::detail::function::void_function_obj_invoker0<sigc::pointer_functor0<void>, void>::invoke(boost::detail::function::function_buffer&) (function_obj_ptr=...) at /usr/local/include/boost/function/function_template.hpp:158
#5  0x0000000000759f72 in boost::function0<void>::operator()() const (this=0x38e9618) at /usr/local/include/boost/function/function_template.hpp:763
#6  0x00007f52b0fe53b3 in PBD::Thread::_run(void*) (arg=0x38e95f0) at ../libs/pbd/pthread_utils.cc:488
#7  0x00007f52aec92f24 in start_thread (arg=<optimized out>) at pthread_create.c:444
#8  0x00007f52aed19f50 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 5 (Thread 0x7f52a5ef46c0 (LWP 24234) "PeakFileBuilder"):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007f52b0c6ea8f in g_cond_wait (cond=0x7f52b3a5f010 <ARDOUR::SourceFactory::PeaksToBuild>, mutex=0x7f52b3a5f020 <ARDOUR::SourceFactory::peak_building_lock>) at ../glib/gthread-posix.c:1475
#2  0x00007f52b333415b in peak_thread_work() () at ../libs/ardour/source_factory.cc:75
#3  0x00007f52b3be4a32 in boost::detail::function::void_function_invoker0<void (*)(), void>::invoke(boost::detail::function::function_buffer&) (function_ptr=...) at /usr/local/include/boost/function/function_template.hpp:117
#4  0x0000000000759f72 in boost::function0<void>::operator()() const (this=0x38e9a08) at /usr/local/include/boost/function/function_template.hpp:763
#5  0x00007f52b0fe53b3 in PBD::Thread::_run(void*) (arg=0x38e99e0) at ../libs/pbd/pthread_utils.cc:488
#6  0x00007f52aec92f24 in start_thread (arg=<optimized out>) at pthread_create.c:444
#7  0x00007f52aed19f50 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 4 (Thread 0x7f52a6ef56c0 (LWP 24233) "PeakFileBuilder"):
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007f52b0c6ea8f in g_cond_wait (cond=0x7f52b3a5f010 <ARDOUR::SourceFactory::PeaksToBuild>, mutex=0x7f52b3a5f020 <ARDOUR::SourceFactory::peak_building_lock>) at ../glib/gthread-posix.c:1475
#2  0x00007f52b333415b in peak_thread_work() () at ../libs/ardour/source_factory.cc:75
#3  0x00007f52b3be4a32 in boost::detail::function::void_function_invoker0<void (*)(), void>::invoke(boost::detail::function::function_buffer&) (function_ptr=...) at /usr/local/include/boost/function/function_template.hpp:117
#4  0x0000000000759f72 in boost::function0<void>::operator()() const (this=0x38e9ea8) at /usr/local/include/boost/function/function_template.hpp:763
#5  0x00007f52b0fe53b3 in PBD::Thread::_run(void*) (arg=0x38e9e80) at ../libs/pbd/pthread_utils.cc:488
#6  0x00007f52aec92f24 in start_thread (arg=<optimized out>) at pthread_create.c:444
#7  0x00007f52aed19f50 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 3 (Thread 0x7f52a7ef66c0 (LWP 24232) "LXVSTEventLoop"):
#0  0x00007f52aecdcb85 in __GI___clock_nanosleep (clock_id=clock_id@entry=0, flags=flags@entry=0, req=req@entry=0x7f52a7ef5500, rem=rem@entry=0x7f52a7ef5510) at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:48
#1  0x00007f52aece1b87 in __GI___nanosleep (req=req@entry=0x7f52a7ef5500, rem=rem@entry=0x7f52a7ef5510) at ../sysdeps/unix/sysv/linux/nanosleep.c:25
#2  0x00007f52b0c4344f in g_usleep (microseconds=<optimized out>) at ../glib/gtimer.c:279
#3  0x000000000157f57b in gui_event_loop(void*) (ptr=0x0) at ../gtk2_ardour/linux_vst_gui_support.cc:468
#4  0x00007f52aec92f24 in start_thread (arg=<optimized out>) at pthread_create.c:444
#5  0x00007f52aed19f50 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 2 (Thread 0x7f52a834b6c0 (LWP 24231) "Trigger Worker"):
#0  0x00007f52aed0c08f in __GI___poll (fds=0x7f52a834a4e4, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f52b0fbe5cc in CrossThreadChannel::poll_for_request() (this=0x38b6b48) at ../libs/pbd/crossthread.posix.cc:108
#2  0x00007f52b0fbe63b in CrossThreadChannel::receive(char&, bool) (this=0x38b6b48, msg=@0x7f52a834a54f: -1 '\377', wait=true) at ../libs/pbd/crossthread.posix.cc:133
#3  0x00007f52b3394f24 in ARDOUR::TriggerBoxThread::thread_work() (this=0x38b6b20) at ../libs/ardour/triggerbox.cc:4851
#4  0x00007f52b3394eb8 in ARDOUR::TriggerBoxThread::_thread_work(void*) (arg=0x38b6b20) at ../libs/ardour/triggerbox.cc:4839
#5  0x00007f52b0fe4870 in fake_thread_start(void*) (arg=0x389d4d0) at ../libs/pbd/pthread_utils.cc:101
#6  0x00007f52aec92f24 in start_thread (arg=<optimized out>) at pthread_create.c:444
#7  0x00007f52aed19f50 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

Thread 1 (Thread 0x7f52aa3c7fc0 (LWP 24230) "ArdourGUI"):
#0  0x00007f52aec8f4ce in __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, expected=0, futex_word=0x53dcc5c) at futex-internal.c:57
#1  __futex_abstimed_wait_common (futex_word=futex_word@entry=0x53dcc5c, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0, cancel=cancel@entry=true) at futex-internal.c:87
#2  0x00007f52aec8f56f in __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x53dcc5c, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at futex-internal.c:139
#3  0x00007f52aec92210 in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x53dcc08, cond=0x53dcc30) at pthread_cond_wait.c:503
#4  ___pthread_cond_wait (cond=cond@entry=0x53dcc30, mutex=mutex@entry=0x53dcc08) at pthread_cond_wait.c:618
#5  0x00007f5283ea7ff6 in pw_thread_loop_wait (loop=0x53dcbe0) at ../src/pipewire/thread-loop.c:360
#6  0x00007f52926dff4a in do_sync (client=0x4448d00) at ../pipewire-jack/src/pipewire-jack.c:870
#7  0x00007f52926e76c0 in jack_deactivate (client=0x4448d00) at ../pipewire-jack/src/pipewire-jack.c:3815
#8  0x00007f52926e4eb5 in jack_client_close (client=0x4448d00) at ../pipewire-jack/src/pipewire-jack.c:3561
#9  0x00007f5292777954 in ARDOUR::JackConnection::close() (this=0x418fff0) at ../libs/backends/jack/jack_connection.cc:149
#10 0x00007f529277e465 in ARDOUR::JACKAudioBackend::stop() (this=0x394ff10) at ../libs/backends/jack/jack_audiobackend.cc:600
#11 0x00007f52b2ab53de in ARDOUR::AudioEngine::stop(bool) (this=0x4059e30, for_latency=false) at ../libs/ardour/audioengine.cc:1105
#12 0x00000000007687ce in ARDOUR_UI::finish() (this=0x4083ce0) at ../gtk2_ardour/ardour_ui.cc:1115
#13 0x0000000000799e80 in sigc::bound_mem_functor0<void, ARDOUR_UI>::operator()() const (this=0x3951d80) at /usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1991
#14 0x00000000007922f6 in sigc::adaptor_functor<sigc::bound_mem_functor0<void, ARDOUR_UI> >::operator()() const (this=0x3951d78) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:256
#15 0x00000000007f32ba in sigc::retype_return_functor<void, sigc::bound_mem_functor0<void, ARDOUR_UI> >::operator()() (this=0x3951d70) at /usr/include/sigc++-2.0/sigc++/adaptors/retype_return.h:269
#16 0x00000000007f152e in sigc::internal::slot_call0<sigc::retype_return_functor<void, sigc::bound_mem_functor0<void, ARDOUR_UI> >, void>::call_it(sigc::internal::slot_rep*) (rep=0x3951d40) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:136
#17 0x00007f52b0dc3588 in sigc::slot0<void>::operator()() const (this=0x3986458) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:535
#18 Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*) (self=<optimized out>, data=0x3986450) at ../glib/glibmm/signalproxy.cc:103
#22 0x00007f52b0d2fa5f in <emit signal ??? on instance 0x3956ad0 [gtkmm__GtkAction]> (instance=instance@entry=0x3956ad0, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3612
    #19 0x00007f52b0d154f0 in g_closure_invoke (closure=0x3986590, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7ffc945e5060, invocation_hint=invocation_hint@entry=0x7ffc945e4fe0) at ../gobject/gclosure.c:832
    #20 0x00007f52b0d28c14 in signal_emit_unlocked_R (node=node@entry=0x40f9f80, detail=detail@entry=0, instance=instance@entry=0x3956ad0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffc945e5060) at ../gobject/gsignal.c:3873
    #21 0x00007f52b0d2f8e6 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffc945e51e0) at ../gobject/gsignal.c:3555
#23 0x00007f52b067cb4a in _gtk_action_emit_activate (action=0x3956ad0 [gtkmm__GtkAction]) at /usr/src/debug/gtk-2.24.33/gtk/gtkaction.c:795
#27 0x00007f52b0d2fa5f in <emit signal ??? on instance 0x5bb6760 [GtkImageMenuItem]> (instance=instance@entry=0x5bb6760, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3612
    #24 0x00007f52b0d154f0 in g_closure_invoke (closure=closure@entry=0x4114eb0, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7ffc945e5470, invocation_hint=invocation_hint@entry=0x7ffc945e53f0) at ../gobject/gclosure.c:832
    #25 0x00007f52b0d285f5 in signal_emit_unlocked_R (node=node@entry=0x4114f10, detail=detail@entry=0, instance=instance@entry=0x5bb6760, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffc945e5470) at ../gobject/gsignal.c:3732
    #26 0x00007f52b0d2f8e6 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffc945e55f0) at ../gobject/gsignal.c:3555
#28 0x00007f52b0854b24 in IA__gtk_widget_activate (widget=0x5bb6760 [GtkImageMenuItem]) at /usr/src/debug/gtk-2.24.33/gtk/gtkwidget.c:5041
#29 0x00007f52b074e385 in IA__gtk_menu_shell_activate_item (menu_shell=0x5b9d670 [GtkMenu], menu_item=0x5bb6760 [GtkImageMenuItem], force_deactivate=<optimized out>) at /usr/src/debug/gtk-2.24.33/gtk/gtkmenushell.c:1278
#30 0x00007f52b074e698 in gtk_menu_shell_button_release (widget=0x5b9d670 [GtkMenu], event=<optimized out>) at /usr/src/debug/gtk-2.24.33/gtk/gtkmenushell.c:703
#35 0x00007f52b0d2fa5f in <emit signal ??? on instance 0x5b9d670 [GtkMenu]> (instance=instance@entry=0x5b9d670, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3612
    #31 0x00007f52b0738457 in _gtk_marshal_BOOLEAN__BOXED (closure=0x4102720, return_value=0x7ffc945e58f0, n_param_values=<optimized out>, param_values=0x7ffc945e5950, invocation_hint=<optimized out>, marshal_data=<optimized out>) at /usr/src/debug/gtk-2.24.33/gtk/gtkmarshalers.c:84
    #32 0x00007f52b0d154f0 in g_closure_invoke (closure=closure@entry=0x4102720, return_value=return_value@entry=0x7ffc945e58f0, n_param_values=2, param_values=param_values@entry=0x7ffc945e5950, invocation_hint=invocation_hint@entry=0x7ffc945e58d0) at ../gobject/gclosure.c:832
    #33 0x00007f52b0d28a75 in signal_emit_unlocked_R (node=<optimized out>, detail=detail@entry=0, instance=instance@entry=0x5b9d670, emission_return=emission_return@entry=0x7ffc945e5a40, instance_and_params=instance_and_params@entry=0x7ffc945e5950) at ../gobject/gsignal.c:3841
    #34 0x00007f52b0d2f21e in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffc945e5af0) at ../gobject/gsignal.c:3565
#36 0x00007f52b08583cc in gtk_widget_event_internal (widget=0x5b9d670 [GtkMenu], event=0x3d8f420) at /usr/src/debug/gtk-2.24.33/gtk/gtkwidget.c:5010
#37 0x00007f52b073c774 in IA__gtk_propagate_event (widget=0x5b9d670 [GtkMenu], event=0x3d8f420) at /usr/src/debug/gtk-2.24.33/gtk/gtkmain.c:2503
#38 0x00007f52b073dc9b in IA__gtk_main_do_event (event=0x3d8f420) at /usr/src/debug/gtk-2.24.33/gtk/gtkmain.c:1698
#39 IA__gtk_main_do_event (event=<optimized out>) at /usr/src/debug/gtk-2.24.33/gtk/gtkmain.c:1503
#40 0x00007f52b0b5d1de in gdk_event_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>) at x11/gdkevents-x11.c:2425
#41 0x00007f52b0c14f96 in g_main_dispatch (context=0x4095860) at ../glib/gmain.c:3460
#42 g_main_context_dispatch (context=context@entry=0x4095860) at ../glib/gmain.c:4200
#43 0x00007f52b0c15358 in g_main_context_iterate (context=0x4095860, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4276
#44 0x00007f52b0c1560f in g_main_loop_run (loop=loop@entry=0x44dcad0) at ../glib/gmain.c:4479
#45 0x00007f52b0737b17 in IA__gtk_main () at /usr/src/debug/gtk-2.24.33/gtk/gtkmain.c:1270
#46 0x00007f52b118d381 in Gtkmm2ext::UI::run(Receiver&) (this=0x4083ce0, old_receiver=...) at ../libs/gtkmm2ext/gtk_ui.cc:309
#47 0x0000000000d9980f in main(int, char**) (argc=1, argv=0x7ffc945e6438) at ../gtk2_ardour/main.cc:469
(gdb)

Edit:

Console
bind txt domain [gtk2_ardour7] to /usr/local/share/ardour7/locale
Ardour7.3.0 (built using 7.3 and GCC version 13.0.1 20230314 (experimental) [revision 42630fadbe248717859d61c0244c821c32b4e52c])
Ardour: [INFO]: Your system is configured to limit Ardour to 100000 open files
Ardour: [INFO]: Loading system configuration file /home/joachim/git/ardour/system_config
Ardour: [INFO]: Loading user configuration file /home/joachim/.config/ardour7/config
Ardour: [INFO]: CPU vendor: GenuineIntel
Ardour: [INFO]: AVX capable processor
Ardour: [INFO]: AVX with FMA capable processor
Ardour: [INFO]: CPU brand: Intel(R) Core(TM) i5-4670 CPU @ 3.40GHz
Ardour: [INFO]: Using AVX and FMA optimized routines
Ardour: [INFO]: Loading plugin meta data file /home/joachim/git/ardour/share/plugin_metadata/plugin_tags
Ardour: [INFO]: Loading plugin statistics file /home/joachim/.config/ardour7/plugin_metadata/plugin_stats
Ardour: [INFO]: add_lrdf_data '/home/joachim/.config/ardour7/rdf:/home/joachim/git/ardour/share/rdf:/home/joachim/git/ardour/build/rdf:/home/joachim/git/ardour/gtk2_ardour/rdf:/home/joachim/git/ardour/build/gtk2_ardour/rdf:/usr/local/share/ladspa/rdf:/usr/share/ladspa/rdf'
Ardour: [INFO]: read rdf_file 'file:///usr/share/ladspa/rdf/ladspa.rdfs'
Ardour: [INFO]: read rdf_file 'file:///usr/share/ladspa/rdf/tap_reverb.rdf'
Ardour: [INFO]: read rdf_file 'file:///usr/share/ladspa/rdf/guitarix.rdf'
Ardour: [INFO]: read rdf_file 'file:///usr/share/ladspa/rdf/swh-aux.rdf'
Ardour: [INFO]: read rdf_file 'file:///usr/share/ladspa/rdf/swh-plugins.rdf'
Ardour: [INFO]: read rdf_file 'file:///usr/share/ladspa/rdf/cmt.rdf'
Ardour: [INFO]: read rdf_file 'file:///usr/share/ladspa/rdf/blop.rdf'
Ardour: [INFO]: read rdf_file 'file:///usr/share/ladspa/rdf/tap-plugins.rdf'
Ardour: [INFO]: read rdf_file 'file:///usr/share/ladspa/rdf/guitarix_amp.rdf'
Ardour: [INFO]: read rdf_file 'file:///usr/share/ladspa/rdf/swh-scales.rdf'
Ardour: [INFO]: Loading 454 MIDI patches from /home/joachim/git/ardour/share/patchfiles
Ardour: [INFO]: Loading default ui configuration file /home/joachim/git/ardour/build/gtk2_ardour/default_ui_config
Ardour: [INFO]: Loading user ui configuration file /home/joachim/.config/ardour7/ui_config
Ardour: [INFO]: Loading color file /home/joachim/git/ardour/gtk2_ardour/themes/dark-ardour.colors
Ardour: [INFO]: Loading ui configuration file /home/joachim/git/ardour/build/gtk2_ardour/clearlooks.rc
Ardour: [INFO]: Loading bindings from /home/joachim/git/ardour/build/gtk2_ardour/ardour.keys
Loading ui configuration file /home/joachim/git/ardour/build/gtk2_ardour/clearlooks.rc
Found nothing along /home/joachim/.config/ardour7/templates:/home/joachim/git/ardour/share/templates:/home/joachim/git/ardour/build/templates:/home/joachim/git/ardour/gtk2_ardour/templates:/home/joachim/git/ardour/build/gtk2_ardour/templates
Set cursor set to default
locate to 0 took 124 usecs for 1 tracks = 124 per track
locate to 0 took 269 usecs for 1 tracks = 269 per track
Butler drops pool trash
Graph::drop_threads() sema-counts: 0, 0, 1
-- List Of Registered Controllables
CTRL: transport auto loop
CTRL: transport goto end
CTRL: transport goto start
CTRL: transport stop
CTRL: transport roll
CTRL: transport play selection
CTRL: transport rec-enable
Total number of registered controllables: 7

Edit2:
If I use Alsa backend instead of JACK, exit is no problem.

P.S.: Thank you for making this otherwise really great program!

This issue is caused by pipewire. A buffersize callback is emitted for a client that is being closed. - I believe this issue was already fixed in pipewire, updating pipewire may solve this.

This issue is unrelated to jackd/glibc.

PS. Note that pipewire is not ready for pro-audio use and still has various issues.

1 Like

thanks for the answer, good to know it will most probably fix itself by just waiting until tumbleweed updates pipewire (which usually happens fast).

And thanks for the warning. I‘m not a pro, just did audio editing for the first time and never thought about audio backends before. So I can live with some bumps on the way. I first tried to add jack to pulseaudio, but pipewire felt easier to do. I think I watch it mature from the first row :slight_smile:

Yes, that was fixed on March 31, in 0.3.67-206, so unless you’re comfortable with compiling and installing things yourself you’ll have to wait for Tumbleweed to catch up.

2 Likes

Thanks for the link. I am usually not afraid to compile stuff myself, but Tumbleweed is already at 0.3.67 so I guess it won’t take long (probably less than it takes me to figure out how to replace Tumbleweed pipewire packages with my self compiled stuff and iron out errors I do while trying…). I’m better off letting Ardour run and practice more… :wink:

Anyways, cool stuff, Ardour & Pipewire! I love the flexible plumbing of audio streams and the phenomenally low latency I can achieve on relatively average hardware.

If you look elsewhere on this forum you’ll see Pipewire 0.3.67 is also broken with Ardour… :roll_eyes:

1 Like

To round this up: I updated Tumbleweed yesterday and got pipewire 0.3.68.

As you predicted, ardour exits now every time without fail.

Regarding other brokenness of pipewire wrt ardour: I created a new empty session, imported an mp3 which got assigned my m-audio inputs (admittedly unnecessary). In the mixer panel I could easily cut this off. I also could create a new input track and assign it an m-audio input which was promptly reflected in qpwgraph.
If I unplug the usb source, replug it and reload the project, all connections are restored.

Seems like it is also solved and working as I expect.

For all other “deficiencies” you may refer to: I wouldn’t know if they are pipewire related or ardour related or even working as designed. I’m just too new to the game. Happy for any hints.

For now I’m just happy with what I can do with all this!

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