Ardour crashes when trying to disconnect from Jack
Ardour tip crashes when I try to disconnect from the jack server. I am running 0.3.58. The stack trace is:
#0 __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:44
#1 __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#2 __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#3 0x00007ffff343bc46 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#4 0x00007ffff34227fc in __GI_abort () at ./stdlib/abort.c:79
#5 0x00007ffff342271b in __assert_fail_base
(fmt=0x7fffef6039b5 "%s%s%s:%u: %s%sZusicherung »%s« nicht erfüllt.\n%n", assertion=0x7fffd7fe1614 "px != 0", file=0x7fffd7fe15e8 "/usr/include/boost/smart_ptr/shared_ptr.hpp", line=728, function=<optimized out>) at ./assert/assert.c:92
#6 0x00007ffff3433596 in __GI___assert_fail
(assertion=0x7fffd7fe1614 "px != 0", file=0x7fffd7fe15e8 "/usr/include/boost/smart_ptr/shared_ptr.hpp", line=728, function=0x7fffd7fe1620 "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*]") at ./assert/assert.c:101
#7 0x00007fffd7fd34fc in boost::shared_ptr<ARDOUR::JackPort>::operator->() const (this=0x7fffffffb410)
at /usr/include/boost/smart_ptr/shared_ptr.hpp:728
#8 0x00007fffd7fd0883 in ARDOUR::JACKAudioBackend::get_port_name[abi:cxx11](boost::shared_ptr<ARDOUR::ProtoPort> const&) const
(this=0x555557804280, port=...) at ../libs/backends/jack/jack_portengine.cc:125
#9 0x00007ffff744b2a4 in ARDOUR::PortManager::get_port_by_name(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (this=0x555557595bf0, portname="ardour:Master/audio_in 1") at ../libs/ardour/port_manager.cc:507
#10 0x00007ffff6dd9fc3 in ARDOUR::Bundle::connected_to(boost::shared_ptr<ARDOUR::Bundle>, ARDOUR::AudioEngine&, ARDOUR::DataType, bool)
(this=0x55555f2f6800, other=..., engine=..., type=..., exclusive=true) at ../libs/ardour/bundle.cc:483
#11 0x000055555627a9af in IOButtonBase::set_label(IOButtonBase&, ARDOUR::Session&, boost::shared_ptr<ARDOUR::Bundle>&, boost::shared_ptr<ARDOUR::IO>)
(self=..., session=..., bndl=..., io=...) at ../gtk2_ardour/io_button.cc:258
#12 0x00005555562801b3 in IOButton::update() (this=0x55557775d140) at ../gtk2_ardour/io_button.cc:703
#13 0x000055555628c369 in boost::_mfi::mf0<void, IOButton>::operator()(IOButton*) const (this=0x7fffcdec0958, p=0x55557775d140)
at /usr/include/boost/bind/mem_fn_template.hpp:49
#14 0x000055555628aa47 in boost::_bi::list1<boost::_bi::value<IOButton*> >::operator()<boost::_mfi::mf0<void, IOButton>, boost::_bi::rrlist2<ARDOUR::IOChange, void*> >(boost::_bi::type<void>, boost::_mfi::mf0<void, IOButton>&, boost::_bi::rrlist2<ARDOUR::IOChange, void*>&, int)
(this=0x7fffcdec0968, f=..., a=...) at /usr/include/boost/bind/bind.hpp:259
#15 0x0000555556288e85 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, IOButton>, boost::_bi::list1<boost::_bi::value<IOButton*> > >::operator()<ARDOUR::IOChange, void*>(ARDOUR::IOChange&&, void*&&) (this=0x7fffcdec0958, a1=..., a2=@0x7fffffffbe00: 0x55555792d400)
at /usr/include/boost/bind/bind.hpp:1318
#16 0x00005555562871a4 in boost::detail::function::void_function_obj_invoker2<boost::_bi::bind_t<void, boost::_mfi::mf0<void, IOButton>, boost::_bi::list1<boost::_bi::value<IOButton*> > >, void, ARDOUR::IOChange, void*>::invoke(boost::detail::function::function_buffer&, ARDOUR::IOChange, void*)
(function_obj_ptr=..., a0=..., a1=0x55555792d400) at /usr/include/boost/function/function_template.hpp:158
#17 0x00005555561e76db in boost::function2<void, ARDOUR::IOChange, void*>::operator()(ARDOUR::IOChange, void*) const
I like to further debug this but trying out the latest pipewire from source with make run
fails with:
[E][01473.763083] mod.protocol-native | [module-protocol-: 731 lock_socket()] server 0x557700ae4ff0: unable to lock lockfile '/run/user/1000/pipewire-0.lock': Die Ressource ist zur Zeit nicht verfügbar (maybe another daemon is running)
[E][01473.763292] pw.conf | [ conf.c: 594 load_module()] 0x557700ac5f40: could not load mandatory module "libpipewire-module-protocol-native": Die Ressource ist zur Zeit nicht verfügbar
[E][01473.763664] default | [ pipewire.c: 125 main()] failed to create context: Die Ressource ist zur Zeit nicht verfügbar
Maybe make run
could disable an existing running pipewire?
Anyway, after a systemctl --user stop pipewire.socket
I get the following errors after make run
:
[E][01611.591613] pw.module | [ impl-module.c: 279 pw_context_load_module()] No module "libpipewire-module-x11-bell" was found
Using build directory: /home/gonsolo/src/pipewire/builddir/subprojects/wireplumber
[W][01621.594919] mod.protocol-pulse | [ server.c: 607 start_unix_server()] server 0x564d19339590: socket '/run/user/1000/pulse/native' is in use
[W][01621.595061] mod.protocol-pulse | [ server.c: 1036 servers_create_and_start()] pulse-server 0x564d19338c30: failed to start server on 'unix:/run/user/1000/pulse/native': Die Adresse wird bereits verwendet
[E][01621.595071] mod.protocol-pulse | [ pulse-server.c: 5621 pw_protocol_pulse_new()] 0x564d19338c30: no servers could be started: Die Adresse wird bereits verwendet
[E][01621.595120] pw.conf | [ conf.c: 594 load_module()] 0x564d19313cf0: could not load mandatory module "libpipewire-module-protocol-pulse": Die Adresse wird bereits verwendet
[E][01621.595490] default | [ pipewire.c: 125 main()] failed to create context: Die Adresse wird bereits verwendet
M 11:15:21.478076 m-lua-scripting ../subprojects/wireplumber/modules/module-lua-scripting/api/config.c:80:load_components: Failed to open module /home/gonsolo/src/pipewire/builddir/subprojects/wireplumber/modules/libwireplumber-module-logind: /home/gonsolo/src/pipewire/builddir/subprojects/wireplumber/modules/libwireplumber-module-logind.so: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden
C 11:15:21.480108 GLib (null):(null):(null): Failed to set scheduler settings: Vorgang nicht zulässig
M 11:15:21.483198 wp-device ../subprojects/wireplumber/lib/wp/device.c:619:wp_spa_device_new_from_spa_factory: SPA handle 'api.libcamera.enum.manager' could not be loaded; is it installed?
M 11:15:21.483219 script/libcamera libcamera.lua:168:chunk: PipeWire's libcamera SPA missing or broken. libcamera not supported.
M 11:15:21.493756 wp-device ../subprojects/wireplumber/lib/wp/device.c:619:wp_spa_device_new_from_spa_factory: SPA handle 'api.bluez5.enum.dbus' could not be loaded; is it installed?
M 11:15:21.493778 script/bluez bluez.lua:167:createMonitor: PipeWire's BlueZ SPA missing or broken. Bluetooth not supported.
I'm running Wayland. I am just trying to debug the first issue with latest Ardour and Pipewire. Is there an easy way to do this? I didn't find any documentation for this.