View Issue Details

IDProjectCategoryView StatusLast Update
0009364ardourbugspublic2023-06-09 21:22
Reporternils Assigned Tox42  
PrioritynormalSeveritycrashReproducibilitysometimes
Status resolvedResolutionduplicate 
Platformx86_64OSFedora LinuxOS Version38
Product Version7.4 
Summary0009364: Removing tracks with a connected input or disconnecting the input will often crash if _GLIBCXX_ASSERTIONS is defined
DescriptionOn a binary built with the _GLIBCXX_ASSERTIONS macro set (e.g. the Fedora RPM package of 7.4.0, a local build from git with `./waf configure ... --arch="-Wp,-D_GLIBCXX_ASSERTIONS"`), Ardour very often crashes if I remove a track with a connected input, or if I attempt to disconnect the input.
Steps To Reproduce1. Build Ardour with _GLIBCXX_ASSERTIONS defined
2. Start Ardour with an empty session
3. Add a track and ensure its input is connected (doesn’t matter if Audio or MIDI track, the latter e.g. connected to the virtual keyboard)
4.1. Right click on the track header in the editor and select "Remove", confirm removal, _or_
4.2. Click the input button in the mixer and select "Disconnect"
Additional InformationRunning Ardour with --gdb set, I get this when removing a track causes it to crash …:

--- 8< ---

[New Thread 0x7fff5e7fc6c0 (LWP 40511)]
[New Thread 0x7fff5dffb6c0 (LWP 40512)]
[Thread 0x7fff5e7fc6c0 (LWP 40511) exited]
[Thread 0x7fff5dffb6c0 (LWP 40512) exited]
[Thread 0x7fff86ffd6c0 (LWP 40389) exited]
/usr/include/c++/13/bits/stl_vector.h:1208: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::front() [with _Tp = std::__cxx11::basic_string<char>; _Alloc = std::allocator<std::__cxx11::basic_string<char> >; reference = std::__cxx11::basic_string<char>&]: Assertion '!this->empty()' failed.

Thread 1 "ArdourGUI" received signal SIGABRT, Aborted.
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6,
    no_tid=no_tid@entry=0) at pthread_kill.c:44
44 return INTERNAL_SYSCALL_ERROR_P (ret) ? INTERNAL_SYSCALL_ERRNO (ret) : 0;
Missing separate debuginfos, use: dnf debuginfo-install ladspa-rev-plugins-0.8.1-1.fc38.x86_64
(gdb) bt
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
0000001 0x00007ffff44b18b3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2 0x00007ffff4460abe in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x00007ffff444987f in __GI_abort () at abort.c:79
0000004 0x00007ffff48df1c0 in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) (file=<optimized out>, line=<optimized out>, function=<optimized out>, condition=<optimized out>)
    at ../../../../../libstdc++-v3/src/c++11/debug.cc:61
0000005 0x00000000009aa361 in IOButtonBase::set_label(IOButtonBase&, ARDOUR::Session&, std::shared_ptr<ARDOUR::Bundle>&, std::shared_ptr<ARDOUR::IO>) ()
#6 0x00000000009aad78 in IOButton::update() ()
#7 0x000000000094ab0c in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<boost::_bi::unspecified, boost::function<void (ARDOUR::IOChange, void*)>, boost::_bi::list2<boost::_bi::value<ARDOUR::IOChange>, boost::_bi::value<void*> > >, void>::invoke(boost::detail::function::function_buffer&) ()
0000008 0x00007ffff6c28dc2 in AbstractUI<Gtkmm2ext::UIRequest>::call_slot(PBD::EventLoop::InvalidationRecord*, boost::function<void ()> const&) () at /home/nils/opt/ardour/lib/ardour7/libgtkmm2ext.so.0
0000009 0x000000000094b174 in PBD::Signal2<void, ARDOUR::IOChange, void*, PBD::OptionalLastValue<void> >::compositor(boost::function<void (ARDOUR::IOChange, void*)>, PBD::EventLoop*, PBD::EventLoop::InvalidationRecord*, ARDOUR::IOChange, void*) ()
0000010 0x000000000094969d in boost::detail::function::void_function_obj_invoker2<boost::_bi::bind_t<void, void (*)(boost::function<void (ARDOUR::IOChange, void*)>, PBD::EventLoop*, PBD::EventLoop::InvalidationRecord*, ARDOUR::IOChange, void*), boost::_bi::list5<boost::_bi::value<boost::function<void (ARDOUR::IOChange, void*)> >, boost::_bi::value<PBD::EventLoop*>, boost::_bi::value<PBD::EventLoop::InvalidationRecord*>, boost::arg<1>, boost::arg<2> > >, void, ARDOUR::IOChange, void*>::invoke(boost::detail::function::function_buffer&, ARDOUR::IOChange, void*) ()
0000011 0x00007ffff747b981 in PBD::Signal2<void, ARDOUR::IOChange, void*, PBD::OptionalLastValue<void> >::operator()(ARDOUR::IOChange, void*) () at /home/nils/opt/ardour/lib/ardour7/libardour.so.3
0000012 0x00007ffff746f8fe in ARDOUR::IO::disconnect(void*) () at /home/nils/opt/ardour/lib/ardour7/libardour.so.3
0000013 0x00007ffff770d985 in ARDOUR::Session::remove_routes(std::shared_ptr<std::__cxx11::list<std::shared_ptr<ARDOUR::Route>, std::allocator<std::shared_ptr<ARDOUR::Route> > > >) ()
    at /home/nils/opt/ardour/lib/ardour7/libardour.so.3
0000014 0x0000000000846137 in Editor::_remove_tracks() ()
#15 0x0000000000846cc1 in Editor::idle_remove_tracks() ()
0000016 0x00007ffff69683b6 in sigc::slot0<bool>::operator()() const (this=0xe767540) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:535
#17 (anonymous namespace)::glibmm_source_callback(void*) (data=data@entry=0xe767540) at ../glib/glibmm/main.cc:243
0000018 0x00007ffff67b539d in g_idle_dispatch (source=0xcd2e500, callback=0x7ffff6968390 <(anonymous namespace)::glibmm_source_callback(void*)>, user_data=0xe767540) at ../glib/gmain.c:6163
0000019 0x00007ffff67b939c in g_main_dispatch (context=0x1d54ec0) at ../glib/gmain.c:3460
0000020 g_main_context_dispatch (context=0x1d54ec0) at ../glib/gmain.c:4200
0000021 0x00007ffff6817438 in g_main_context_iterate.isra.0 (context=0x1d54ec0, block=1, dispatch=1, self=<optimized out>) at ../glib/gmain.c:4276
0000022 0x00007ffff67b899f in g_main_loop_run (loop=0x22ab190) at ../glib/gmain.c:4479
0000023 0x00007ffff635b0d1 in IA__gtk_main () at /usr/src/debug/gtk2-2.24.33-13.fc38.x86_64/gtk/gtkmain.c:1270
#24 0x00007ffff6c21ec6 in Gtkmm2ext::UI::run(Receiver&) () at /home/nils/opt/ardour/lib/ardour7/libgtkmm2ext.so.0
0000025 0x00000000005bad83 in main ()
(gdb)
--- >8 ---

… and this when disconnecing the input causes the crash:

--- 8< ---

[New Thread 0x7fff5a7fc6c0 (LWP 43163)]
[New Thread 0x7fff5affd6c0 (LWP 43164)]
[Thread 0x7fff5a7fc6c0 (LWP 43163) exited]
[Thread 0x7fff5affd6c0 (LWP 43164) exited]
[Thread 0x7fff8b7fe6c0 (LWP 43057) exited]
/usr/include/c++/13/bits/stl_vector.h:1208: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::front() [with _Tp = std::__cxx11::basic_string<char>; _Alloc = std::allocator<std::__cxx11::basic_string<char> >; reference = std::__cxx11::basic_string<char>&]: Assertion '!this->empty()' failed.

Thread 1 "ArdourGUI" received signal SIGABRT, Aborted.
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
44 return INTERNAL_SYSCALL_ERROR_P (ret) ? INTERNAL_SYSCALL_ERRNO (ret) : 0;
Missing separate debuginfos, use: dnf debuginfo-install ladspa-rev-plugins-0.8.1-1.fc38.x86_64
(gdb) bt
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
0000001 0x00007ffff44b18b3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2 0x00007ffff4460abe in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x00007ffff444987f in __GI_abort () at abort.c:79
0000004 0x00007ffff48df1c0 in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) (file=<optimized out>, line=<optimized out>, function=<optimized out>, condition=<optimized out>)
    at ../../../../../libstdc++-v3/src/c++11/debug.cc:61
0000005 0x00000000009aa361 in IOButtonBase::set_label(IOButtonBase&, ARDOUR::Session&, std::shared_ptr<ARDOUR::Bundle>&, std::shared_ptr<ARDOUR::IO>) ()
#6 0x00000000009aad78 in IOButton::update() ()
#7 0x000000000094ab0c in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<boost::_bi::unspecified, boost::function<void (ARDOUR::IOChange, void*)>, boost::_bi::list2<boost::_bi::value<ARDOUR::IOChange>, boost::_bi::value<void*> > >, void>::invoke(boost::detail::function::function_buffer&) ()
0000008 0x00007ffff6c28dc2 in AbstractUI<Gtkmm2ext::UIRequest>::call_slot(PBD::EventLoop::InvalidationRecord*, boost::function<void ()> const&) () at /home/nils/opt/ardour/lib/ardour7/libgtkmm2ext.so.0
0000009 0x000000000094b174 in PBD::Signal2<void, ARDOUR::IOChange, void*, PBD::OptionalLastValue<void> >::compositor(boost::function<void (ARDOUR::IOChange, void*)>, PBD::EventLoop*, PBD::EventLoop::InvalidationRecord*, ARDOUR::IOChange, void*) ()
0000010 0x000000000094969d in boost::detail::function::void_function_obj_invoker2<boost::_bi::bind_t<void, void (*)(boost::function<void (ARDOUR::IOChange, void*)>, PBD::EventLoop*, PBD::EventLoop::InvalidationRecord*, ARDOUR::IOChange, void*), boost::_bi::list5<boost::_bi::value<boost::function<void (ARDOUR::IOChange, void*)> >, boost::_bi::value<PBD::EventLoop*>, boost::_bi::value<PBD::EventLoop::InvalidationRecord*>, boost::arg<1>, boost::arg<2> > >, void, ARDOUR::IOChange, void*>::invoke(boost::detail::function::function_buffer&, ARDOUR::IOChange, void*) ()
0000011 0x00007ffff747b981 in PBD::Signal2<void, ARDOUR::IOChange, void*, PBD::OptionalLastValue<void> >::operator()(ARDOUR::IOChange, void*) () at /home/nils/opt/ardour/lib/ardour7/libardour.so.3
0000012 0x00007ffff746f8fe in ARDOUR::IO::disconnect(void*) () at /home/nils/opt/ardour/lib/ardour7/libardour.so.3
0000013 0x00000000009a466a in IOButton::disconnect() ()
0000014 0x00007ffff696d654 in sigc::slot0<void>::operator()() const (this=0xd0a5bc8) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:535
#15 Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*) (self=<optimized out>, data=0xd0a5bc0) at ../glib/glibmm/signalproxy.cc:103
0000016 0x00007ffff68ba4ea in g_closure_invoke (closure=0xf9786b0, return_value=0x0, n_param_values=1, param_values=0x7fffffffc320, invocation_hint=0x7fffffffc2a0) at ../gobject/gclosure.c:832
#17 0x00007ffff68e915d in signal_emit_unlocked_R.isra.0
    (node=node@entry=0x1dc7650, detail=detail@entry=0, instance=instance@entry=0xeb54390, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffc320)
    at ../gobject/gsignal.c:3883
0000018 0x00007ffff68d9cbd in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffc4c0) at ../gobject/gsignal.c:3565
0000019 0x00007ffff68d9f33 in g_signal_emit (instance=instance@entry=0xeb54390, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3622
0000020 0x00007ffff64a6a3c in IA__gtk_widget_activate (widget=0xeb54390) at /usr/src/debug/gtk2-2.24.33-13.fc38.x86_64/gtk/gtkwidget.c:5048
0000021 0x00007ffff6373cad in IA__gtk_menu_shell_activate_item (menu_shell=0xd867770, menu_item=0xeb54390, force_deactivate=<optimized out>) at /usr/src/debug/gtk2-2.24.33-13.fc38.x86_64/gtk/gtkmenushell.c:1305
0000022 0x00007ffff63763b1 in gtk_menu_shell_button_release (widget=0xd867770, event=<optimized out>) at /usr/src/debug/gtk2-2.24.33-13.fc38.x86_64/gtk/gtkmenushell.c:730
0000023 0x00007ffff635d3ee in _gtk_marshal_BOOLEAN__BOXED
    (closure=0x1db8da0, return_value=0x7fffffffc810, n_param_values=<optimized out>, param_values=0x7fffffffc870, invocation_hint=<optimized out>, marshal_data=<optimized out>)
    at /usr/src/debug/gtk2-2.24.33-13.fc38.x86_64/gtk/gtkmarshalers.c:84
#24 0x00007ffff68ba4ea in g_closure_invoke (closure=0x1db8da0, return_value=0x7fffffffc810, n_param_values=2, param_values=0x7fffffffc870, invocation_hint=0x7fffffffc7f0) at ../gobject/gclosure.c:832
0000025 0x00007ffff68e9315 in signal_emit_unlocked_R.isra.0
    (node=<optimized out>, detail=detail@entry=0, instance=instance@entry=0xd867770, emission_return=emission_return@entry=0x7fffffffc980, instance_and_params=instance_and_params@entry=0x7fffffffc870)
    at ../gobject/gsignal.c:3851
0000026 0x00007ffff68d97e2 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffca30) at ../gobject/gsignal.c:3575
0000027 0x00007ffff68d9f33 in g_signal_emit (instance=instance@entry=0xd867770, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3622
0000028 0x00007ffff64a8bf4 in gtk_widget_event_internal (widget=0xd867770, event=0xfbbed20) at /usr/src/debug/gtk2-2.24.33-13.fc38.x86_64/gtk/gtkwidget.c:5017
0000029 0x00007ffff635ffb3 in IA__gtk_propagate_event (widget=0xd867770, event=0xfbbed20) at /usr/src/debug/gtk2-2.24.33-13.fc38.x86_64/gtk/gtkmain.c:2503
0000030 0x00007ffff6361c7b in IA__gtk_main_do_event (event=0xfbbed20) at /usr/src/debug/gtk2-2.24.33-13.fc38.x86_64/gtk/gtkmain.c:1698
0000031 IA__gtk_main_do_event (event=<optimized out>) at /usr/src/debug/gtk2-2.24.33-13.fc38.x86_64/gtk/gtkmain.c:1503
0000032 0x00007ffff61a318e in gdk_event_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>) at x11/gdkevents-x11.c:2425
0000033 0x00007ffff67b939c in g_main_dispatch (context=0x1d46b90) at ../glib/gmain.c:3460
0000034 g_main_context_dispatch (context=0x1d46b90) at ../glib/gmain.c:4200
0000035 0x00007ffff6817438 in g_main_context_iterate.isra.0 (context=0x1d46b90, block=1, dispatch=1, self=<optimized out>) at ../glib/gmain.c:4276
0000036 0x00007ffff67b899f in g_main_loop_run (loop=0x21dea70) at ../glib/gmain.c:4479
0000037 0x00007ffff635b0d1 in IA__gtk_main () at /usr/src/debug/gtk2-2.24.33-13.fc38.x86_64/gtk/gtkmain.c:1270
0000038 0x00007ffff6c21ec6 in Gtkmm2ext::UI::run(Receiver&) () at /home/nils/opt/ardour/lib/ardour7/libgtkmm2ext.so.0
0000039 0x00000000005bad83 in main ()
(gdb)
--- >8 ---
TagsNo tags attached.

Relationships

duplicate of 0009355 closedx42 On certain projects, crash when attempting to delete a midi track 

Activities

x42

2023-06-09 17:20

administrator   ~0027723

Fixed in 7.4-241-g9486b4e6cb, please test.

nils

2023-06-09 21:22

reporter   ~0027727

Works for me now. Thanks for the quick fix!

Issue History

Date Modified Username Field Change
2023-06-09 12:52 nils New Issue
2023-06-09 17:01 x42 Relationship added duplicate of 0009355
2023-06-09 17:20 x42 Assigned To => x42
2023-06-09 17:20 x42 Status new => resolved
2023-06-09 17:20 x42 Resolution open => duplicate
2023-06-09 17:20 x42 Note Added: 0027723
2023-06-09 21:22 nils Note Added: 0027727