View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0010016 | ardour | bugs | public | 2025-09-28 17:35 | 2025-09-30 18:11 |
Reporter | concretny | Assigned To | x42 | ||
Priority | normal | Severity | crash | Reproducibility | always |
Status | resolved | Resolution | duplicate | ||
Platform | Arch | OS | Linux | OS Version | (any) |
Product Version | 8.12 | ||||
Summary | 0010016: Pressing space bar crashes ardour | ||||
Description | When using the keyboard shortcut "space", ardour always crashes. This happens even on a new empty session without any plugins. If I change the keybinding for stop/start to e.g. ctrl+shift+space, the program works normally. Also mouse control of transport works without any issues. | ||||
Steps To Reproduce | 1. Launch ardour 2. Start a new session or open an existing one 3. Press spacebar 4. Crash | ||||
Additional Information | This is what I got from gdb (I used AI to help debug this cuz I am no programmer): (gdb) run /usr/include/c++/15.1.1/bits/stl_list.h:1650: std::__cxx11::list<_Tp, _Allocator>::reference std::__cxx11::list<_Tp, _Allocator>::front() [with _Tp = ARDOUR::TimelineRange; _Alloc = std::allocator<ARDOUR::TimelineRange>; reference = ARDOUR::TimelineRange&]: Assertion '!this->empty()' failed. Thread 1 "ArdourGUI" received signal SIGABRT, Aborted. Downloading 4.48 K source file /usr/src/debug/glibc/glibc/nptl/pthread_kill.c __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; (gdb) bt full #0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44 tid = <optimized out> ret = 0 pd = <optimized out> old_mask = {__val = {140737319422832}} ret = <optimized out> 0000001 0x00007ffff5098a13 in __pthread_kill_internal (threadid=<optimized out>, signo=6) at pthread_kill.c:89 No locals. #2 0x00007ffff503e410 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 ret = <optimized out> #3 0x00007ffff502557a in __GI_abort () at abort.c:77 act = {__sigaction_handler = {sa_handler = 0x672, sa_sigaction = 0x672}, sa_mask = {__val = { 93825007453392, 205, 140737488343168, 26388279071744, 0, 140737488343376, 140737319538244, 206158430232, 93825018845152, 93825018845160, 93825018845168, 0, 2, 140737488343376, 140737319469022, 140737488343744}}, sa_flags = 0, sa_restorer = 0x7fffffffd0f0} 0000004 0x00007ffff569a41f in std::__glibcxx_assert_fail ( file=file@entry=0x5555563d8090 "/usr/include/c++/15.1.1/bits/stl_list.h", line=line@entry=1650, function=function@entry=0x5555563d84d0 "std::__cxx11::list<_Tp, _Allocator>::reference std::__cxx11::list<_Tp, _Allocator>::front() [with _Tp = ARDOUR::TimelineRange; _Alloc = std::allocator<ARDOUR::TimelineRange>; reference = ARDOUR::Timel"..., condition=condition@entry=0x5555563b7470 "!this->empty()") at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/assert_fail.cc:41 No locals. 0000005 0x000055555583ae72 in std::__cxx11::list<ARDOUR::TimelineRange, std::allocator<ARDOUR::TimelineRange> >::front (this=<optimized out>) at /usr/include/c++/15.1.1/bits/stl_list.h:1650 __PRETTY_FUNCTION__ = <optimized out> #6 ARDOUR_UI::toggle_roll (this=0x555556e5c590, with_abort=<optimized out>, roll_out_of_bounded_mode=<optimized out>) at ../gtk2_ardour/ardour_ui.cc:1952 range = <optimized out> rolling = <optimized out> #7 ARDOUR_UI::toggle_roll (this=0x555556e5c590, with_abort=<optimized out>, roll_out_of_bounded_mode=<optimized out>) at ../gtk2_ardour/ardour_ui.cc:1891 rolling = <optimized out> range = <optimized out> 0000008 0x00007ffff616c5d5 in sigc::slot0<void>::operator() (this=0x555557125b58) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:540 No locals. 0000009 Glib::SignalProxyNormal::slot0_void_callback (self=<optimized out>, data=0x555557125b50) at ../glibmm/glib/glibmm/signalproxy.cc:103 slot = 0x555557125b58 0000010 0x00007ffff5edf97c in g_closure_invoke (closure=0x555557125c80, return_value=0x0, n_param_values=1, param_values=0x7fffffffd390, invocation_hint=0x7fffffffd2e0) at ../glib/gobject/gclosure.c:916 marshal = 0x7ffff5ee4b70 <g_cclosure_marshal_VOID__VOID> marshal_data = 0x0 in_marshal = 0 reffed_flags = {flags = {ref_count = 2, meta_marshal_nouse = 0, n_guards = 0, n_fnotifiers = 1, n_inotifiers = 0, in_inotify = 0, floating = 0, derivative_flag = 0, in_marshal = 0, is_invalid = 0}, closure = {ref_count = 2, meta_marshal_nouse = 0, n_guards = 0, n_fnotifiers = 1, n_inotifiers = 0, in_inotify = 0, floating = 0, derivative_flag = 0, in_marshal = 0, is_invalid = 0, marshal = 0x7ffff6b70971 <Gtk::Action_Class::activate_callback(_GtkAction*)+49>, data = 0x0, notifiers = 0x0}, atomic_int = 131074} real_closure = 0x555557125c60 __func__ = "g_closure_invoke" 0000011 0x00007ffff5eff097 in signal_emit_unlocked_R (node=node@entry=0x7fffffffd4a0, detail=detail@entry=0, instance=instance@entry=0x5555571259f0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffd390) at ../glib/gobject/gsignal.c:3976 tmp = <optimized out> handler = 0x555557125c20 accumulator = <optimized out> emission = {next = 0x7fffffffd9e0, instance = 0x5555571259f0, ihint = {signal_id = 213, detail = 0, run_type = (G_SIGNAL_RUN_LAST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 4} class_closure = <optimized out> hlist = <optimized out> handler_list = 0x555557125c20 return_accu = <optimized out> accu = {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}} signal_id = <optimized out> max_sequential_handler_number = <optimized out> return_value_altered = <optimized out> n_params = <optimized out> EMIT_RESTART = <optimized out> __func__ = <optimized out> 0000012 0x00007ffff5f00b0f in signal_emit_valist_unlocked (instance=instance@entry=0x5555571259f0, signal_id=signal_id@entry=213, detail=detail@entry=0, var_args=var_args@entry=0x7fffffffd600) at ../glib/gobject/gsignal.c:3535 instance_and_params = <optimized out> param_values = <optimized out> node = <optimized out> i = <optimized out> --Type <RET> for more, q to quit, c to continue without paging--c node_copy = <optimized out> __func__ = "signal_emit_valist_unlocked" 0000013 0x00007ffff5f00d89 in g_signal_emit_valist (instance=0x5555571259f0, signal_id=213, detail=0, var_args=var_args@entry=0x7fffffffd600) at ../glib/gobject/gsignal.c:3278 No locals. 0000014 0x00007ffff5f00e44 in g_signal_emit (instance=instance@entry=0x5555571259f0, signal_id=<optimized out>, detail=detail@entry=0) at ../glib/gobject/gsignal.c:3598 var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffd6e0, reg_save_area = 0x7fffffffd620}} #15 0x00007ffff6470168 in _gtk_action_emit_activate (action=0x5555571259f0) at ../libs/tk/ytk/gtkaction.c:795 group = 0x555557124770 0000016 0x00007ffff6e399a9 in Gtkmm2ext::Bindings::activate (this=<optimized out>, kb=..., op=op@entry=Gtkmm2ext::Bindings::Press) at ../libs/gtkmm2ext/bindings.cc:511 kbm = <optimized out> unshifted = {_val = 32} k = <optimized out> action = {pCppObject_ = 0x555557125900} #17 0x0000555555abd2f1 in ARDOUR_UI::key_press_focus_accelerator_handler (this=this@entry=0x555556e5c590, window=..., ev=ev@entry=0x5555699749a0, top_level_bindings=0x555557024230) at ../gtk2_ardour/ardour_ui_keys.cc:246 k = {_val = 32} win = 0x555556ec8050 focus = <optimized out> special_handling_of_unmodified_accelerators = <optimized out> mask = <optimized out> cutcopypaste = <optimized out> 0000018 0x0000555555abd5ff in ARDOUR_UI::key_event_handler (this=0x555556e5c590, ev=0x5555699749a0, event_window=0x555556e5c8c8) at ../gtk2_ardour/ardour_ui_keys.cc:103 bindings = <optimized out> window = <optimized out> 0000019 0x00007ffff6c3124b in (anonymous namespace)::Widget_signal_key_press_event_callback(_GtkWidget*, _GdkEventKey*, void*) [clone .lto_priv.0] () at ../libs/tk/ytkmm/widget.cc:1481 Gtk::Widget::widget_class_ = {<Glib::Class> = {gtype_ = 0, class_init_func_ = 0x0}, <No data fields>} 0000020 0x00007ffff657edfc in _gtk_marshal_BOOLEAN__BOXED (closure=0x555558f92fd0, return_value=0x7fffffffda10, n_param_values=<optimized out>, param_values=0x7fffffffdaa0, invocation_hint=<optimized out>, marshal_data=<optimized out>) at ../libs/tk/ytk/gtkmarshalers.c:84 cc = 0x555558f92fd0 data1 = <optimized out> data2 = <optimized out> callback = <optimized out> v_return = <optimized out> __func__ = "_gtk_marshal_BOOLEAN__BOXED" 0000021 0x00007ffff5edf97c in g_closure_invoke (closure=0x555558f92fd0, return_value=0x7fffffffda10, n_param_values=2, param_values=0x7fffffffdaa0, invocation_hint=0x7fffffffd9f0) at ../glib/gobject/gclosure.c:916 marshal = 0x7ffff657eda0 <_gtk_marshal_BOOLEAN__BOXED> marshal_data = 0x0 in_marshal = 0 reffed_flags = {flags = {ref_count = 2, meta_marshal_nouse = 0, n_guards = 0, n_fnotifiers = 1, n_inotifiers = 0, in_inotify = 0, floating = 0, derivative_flag = 0, in_marshal = 0, is_invalid = 0}, closure = {ref_count = 2, meta_marshal_nouse = 0, n_guards = 0, n_fnotifiers = 1, n_inotifiers = 0, in_inotify = 0, floating = 0, derivative_flag = 0, in_marshal = 0, is_invalid = 0, marshal = 0x7ffff5ee4b00 <g_type_class_meta_marshal>, data = 0x7fffffffda10, notifiers = 0x0}, atomic_int = 131074} real_closure = 0x555558f92fb0 __func__ = "g_closure_invoke" 0000022 0x00007ffff5efeaab in signal_emit_unlocked_R (node=node@entry=0x7fffffffdbd0, detail=detail@entry=0, instance=instance@entry=0x555556ec8050, emission_return=emission_return@entry=0x7fffffffdc50, instance_and_params=instance_and_params@entry=0x7fffffffdaa0) at ../glib/gobject/gsignal.c:3903 tmp = <optimized out> handler = 0x555558f922a0 accumulator = <optimized out> emission = {next = 0x0, instance = 0x555556ec8050, ihint = {signal_id = 42, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type = 4} class_closure = <optimized out> hlist = <optimized out> handler_list = 0x555558f921b0 return_accu = <optimized out> accu = {g_type = 20, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}} signal_id = <optimized out> max_sequential_handler_number = <optimized out> return_value_altered = <optimized out> n_params = <optimized out> EMIT_RESTART = <optimized out> __func__ = <optimized out> 0000023 0x00007ffff5f002db in signal_emit_valist_unlocked (instance=instance@entry=0x555556ec8050, signal_id=signal_id@entry=42, detail=detail@entry=0, var_args=var_args@entry=0x7fffffffdd30) at ../glib/gobject/gsignal.c:3548 return_value = {g_type = 20, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}} error = 0x0 rtype = 20 static_scope = 0 instance_and_params = <optimized out> param_values = <optimized out> node = <optimized out> i = <optimized out> node_copy = <optimized out> __func__ = "signal_emit_valist_unlocked" #24 0x00007ffff5f00d89 in g_signal_emit_valist (instance=0x555556ec8050, signal_id=42, detail=0, var_args=var_args@entry=0x7fffffffdd30) at ../glib/gobject/gsignal.c:3278 No locals. 0000025 0x00007ffff5f00e44 in g_signal_emit (instance=instance@entry=0x555556ec8050, signal_id=<optimized out>, detail=detail@entry=0) at ../glib/gobject/gsignal.c:3598 var_args = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7fffffffde10, reg_save_area = 0x7fffffffdd50}} 0000026 0x00007ffff672f65f in gtk_widget_event_internal (widget=0x555556ec8050, event=0x5555699749a0) at ../libs/tk/ytk/gtkwidget.c:5010 signal_num = <optimized out> return_val = 0 0000027 0x00007ffff6583c44 in IA__gtk_propagate_event (widget=0x555556ec8050, event=0x5555699749a0) at ../libs/tk/ytk/gtkmain.c:2420 window = 0x555556ec8050 handled_event = <optimized out> __func__ = <optimized out> _g_boolean_var_19 = <optimized out> __inst = <optimized out> __t = <optimized out> __r = <optimized out> _g_boolean_var_20 = <optimized out> 0000028 IA__gtk_propagate_event (widget=widget@entry=0x555556ec8050, event=event@entry=0x5555699749a0) at ../libs/tk/ytk/gtkmain.c:2383 handled_event = <optimized out> __func__ = "IA__gtk_propagate_event" window = <optimized out> __inst = <optimized out> __t = <optimized out> __r = <optimized out> __inst = <optimized out> __t = <optimized out> __r = <optimized out> tmp = <optimized out> 0000029 0x00007ffff65884cb in IA__gtk_main_do_event (event=0x5555699749a0) at ../libs/tk/ytk/gtkmain.c:1641 event_widget = <optimized out> grab_widget = 0x555556ec8050 window_group = 0x555556b4c910 rewritten_event = <optimized out> tmp_list = <optimized out> __func__ = <optimized out> 0000030 0x00007ffff69a18d2 in gdk_event_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>) at ../libs/tk/ydk/x11/gdkevents-x11.c:2425 display = <optimized out> event = 0x5555699749a0 0000031 0x00007ffff6229f4d in g_main_dispatch (context=0x55555683d8c0) at ../glib/glib/gmain.c:3565 user_data = 0x0 callback = 0x0 gaig_temp = <optimized out> gaig_temp = <optimized out> cb_data = 0x0 need_destroy = <optimized out> dispatch = 0x7ffff69a1880 <gdk_event_dispatch> prev_source = 0x0 was_in_call = 0 cb_funcs = 0x0 begin_time_nsec = 6155239964094 source = 0x5555568e4220 current = 0x555556b4a8d0 i = 0 __func__ = "g_main_dispatch" 0000032 0x00007ffff622b617 in g_main_context_dispatch_unlocked (context=0x55555683d8c0) at ../glib/glib/gmain.c:4425 No locals. 0000033 g_main_context_iterate_unlocked (context=0x55555683d8c0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4490 max_priority = 2147483647 timeout_usec = 9468 some_ready = 1 nfds = 3 allocated_nfds = <optimized out> fds = 0x555556bb74e0 begin_time_nsec = <optimized out> 0000034 0x00007ffff622b9d7 in g_main_loop_run (loop=0x555556d52b40) at ../glib/glib/gmain.c:4695 self = <optimized out> __func__ = "g_main_loop_run" 0000035 0x00007ffff65878c3 in IA__gtk_main () at ../libs/tk/ytk/gtkmain.c:1213 tmp_list = 0x0 functions = 0x0 init = <optimized out> loop = 0x555556d52b40 0000036 0x00007ffff6e51ffc in Gtkmm2ext::UI::run (this=this@entry=0x555556e5c590, old_receiver=...) at ../libs/gtkmm2ext/gtk_ui.cc:305 No locals. 0000037 0x00005555559eb829 in main (argc=<optimized out>, argv=<optimized out>) at ../gtk2_ardour/main.cc:471 No locals. | ||||
Tags | spacebar | ||||
|
Just to share another data point, I'm seeing the exact same crash on Arch Linux with Ardour 8.12-3 from the Arch repository (everything else updated as of now, Sep 28, 2025 at 19:15 UTC). Playback, when initiated through the play button, works fine, and interestingly, so does pausing with Space, but hitting Space to (re)start playback immediately crashes. |
|
Is this a duplicate of 0009949 & 0009973? |
|
Ah, thanks, colinf. Indeed, x42's suggestion (https://tracker.ardour.org/view.php?id=9973#c29382) to disable "Follow range" (it's in the Transport menu) seems to work-around this. |
|
Fixed in Ardour/git 9.0-pre0-1230-g49ff88fd75 |
Date Modified | Username | Field | Change |
---|---|---|---|
2025-09-28 17:35 | concretny | New Issue | |
2025-09-28 17:35 | concretny | Tag Attached: spacebar | |
2025-09-28 19:16 | moll | Note Added: 0029458 | |
2025-09-28 21:45 | colinf | Note Added: 0029462 | |
2025-09-29 04:38 | moll | Note Added: 0029465 | |
2025-09-29 08:06 | colinf | Relationship added | duplicate of 0009973 |
2025-09-30 18:11 | x42 | Assigned To | => x42 |
2025-09-30 18:11 | x42 | Status | new => resolved |
2025-09-30 18:11 | x42 | Resolution | open => duplicate |
2025-09-30 18:11 | x42 | Note Added: 0029466 |