View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0010111 | ardour | bugs | public | 2026-01-09 20:01 | 2026-01-10 01:01 |
| Reporter | tnaugle | Assigned To | paul | ||
| Priority | normal | Severity | crash | Reproducibility | always |
| Status | resolved | Resolution | fixed | ||
| Platform | Microsoft | OS | Windows | OS Version | 11 |
| Product Version | 9.0-rc | ||||
| Summary | 0010111: Importing a MIDI file that only contains a Tempo map, crashes the program | ||||
| Description | Importing a MIDI file that only contains a Tempo map, crashes the program | ||||
| Steps To Reproduce | New session import select the attached midi file and click the "Use MIDI Tempo Map" check box click the import button boom | ||||
| Additional Information | ** (ardour-9.0.rc1.8.exe:175552): WARNING **: 13:34:49.251: SMF warning: The track did not finish with the End of Track event. [Thread 175552.0x2aabc exited with code 0] [Thread 175552.0x2867c exited with code 0] #0 0x00007ffbf6399483 in KERNELBASE!DebugBreak () from C:\WINDOWS\System32\KernelBase.dll 0000001 0x00007ffbf7e6f961 in msvcrt!_assert () from C:\WINDOWS\System32\msvcrt.dll #2 0x00007ffa9131b80c in _assert ( message=0x7ffa9132d910 <Temporal::ticks_per_beat+1496> "_tempos.empty() || _tempos.back().sclock() < tp.sclock()", file=0x7ffa9132d4fd <Temporal::ticks_per_beat+453> "../libs/temporal/tempo.cc", line=1577) from C:\Users\ToddNaugle\src\ardour\build\libs\temporal\temporal.dll #3 0x00007ffa912e5f7e in Temporal::TempoMap::smf_add (this=0x3ef19690, tp=...) at ../libs/temporal/tempo.cc:1577 0000004 0x00007ffb09a14f16 in Evoral::SMF::tempo_map (this=0x14daa0, provided=@0x14d95f: false) at ../libs/evoral/SMF.cc:882 0000005 0x00007ff60ecde044 in Editor::import_smf_tempo_map (this=0x13c02dd0, smf=..., pos=...) at ../gtk2_ardour/editor_audio_import.cc:272 #6 0x00007ff60ecde450 in Editor::do_import (this=0x13c02dd0, paths=std::vector of length 1, capacity 1 = {...}, disposition=Editing::ImportDistinctFiles, mode=Editing::ImportAsTrack, quality=ARDOUR::SrcBest, midi_track_name_source=ARDOUR::SMFTrackNumber, smf_tempo_disposition=ARDOUR::SMFTempoUse, pos=..., instrument=std::shared_ptr<ARDOUR::PluginInfo> (use count 10, weak count 1) = {...}, track=std::shared_ptr<ARDOUR::Track> (empty) = {...}, with_markers=false) at ../gtk2_ardour/editor_audio_import.cc:344 #7 0x00007ff60f80fbac in SoundFileOmega::do_something (this=0x3ec297c0, action=-5) at ../gtk2_ardour/sfdb_ui.cc:2265 0000008 0x00007ff60f81ad06 in sigc::bound_mem_functor1<void, SoundFileBrowser, int>::operator() ( this=0x3e353450, _A_a1=@0x14e15c: -5) at C:/msys64/mingw64/include/sigc++-2.0/sigc++/functors/mem_fun.h:2066 0000009 0x00007ff60f819e2d in sigc::adaptor_functor<sigc::bound_mem_functor1<void, SoundFileBrowser, int> >::operator()<Gtk::ResponseType&> (this=0x3e353448, _A_arg1=@0x3e353470: Gtk::RESPONSE_OK) at C:/msys64/mingw64/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:89 --Type <RET> for more, q to quit, c to continue without paging-- 0000010 0x00007ff60f818e62 in sigc::bind_functor<-1, sigc::bound_mem_functor1<void, SoundFileBrowser, int>, Gtk::ResponseType, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::operator() ( this=0x3e353440) at C:/msys64/mingw64/include/sigc++-2.0/sigc++/adaptors/bind.h:1124 0000011 0x00007ff60f817494 in sigc::internal::slot_call0<sigc::bind_functor<-1, sigc::bound_mem_functor1<void, SoundFileBrowser, int>, Gtk::ResponseType, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>, void>::call_it (rep=0x3e353410) at C:/msys64/mingw64/include/sigc++-2.0/sigc++/functors/slot.h:136 0000012 0x00007ffb823c352c in ?? () from C:\msys64\mingw64\bin\libglibmm-2.4-1.dll 0000013 0x00007ffb731a9db6 in g_cclosure_marshal_VOID__VOID (closure=0x3e3535e0, return_value=<optimized out>, n_param_values=<optimized out>, param_values=<optimized out>, invocation_hint=0x14e3e0, marshal_data=<optimized out>) at ../glib-2.86.3/gobject/gmarshal.c:117 0000014 0x00007ffb731a80e2 in g_closure_invoke (closure=0x3e3535e0, return_value=0x0, n_param_values=n_param_values@entry=1, param_values=param_values@entry=0x14e4d0, invocation_hint=invocation_hint@entry=0x14e3e0) at ../glib-2.86.3/gobject/gclosure.c:916 #15 0x00007ffb731b970c in signal_emit_unlocked_R (node=node@entry=0x14e540, detail=<optimized out>, detail@entry=0, instance=instance@entry=0x3ec61b20, emission_return=emission_return@entry=0x0, instance_and_params=<optimized out>) at ../glib-2.86.3/gobject/gsignal.c:3976 0000016 0x00007ffb731ba47b in signal_emit_valist_unlocked (instance=instance@entry=0x3ec61b20, signal_id=signal_id@entry=128, detail=detail@entry=0, var_args=<optimized out>, var_args@entry=0x14e708 "") at ../glib-2.86.3/gobject/gsignal.c:3535 #17 0x00007ffb731be12d in g_signal_emit_valist (instance=0x3ec61b20, signal_id=128, detail=0, var_args=var_args@entry=0x14e708 "") at ../glib-2.86.3/gobject/gsignal.c:3278 0000018 0x00007ffb731be16e in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../glib-2.86.3/gobject/gsignal.c:3598 0000019 0x00007ffa618e7173 in gtk_button_clicked (button=0x3ec61b20) at ../libs/tk/ytk/gtkbutton.c:1115 0000020 0x00007ffa618e8721 in gtk_real_button_released (button=0x3ec61b20) at ../libs/tk/ytk/gtkbutton.c:1712 0000021 0x00007ffa62658f12 in Gtk::Button_Class::released_callback (self=0x3ec61b20) at ../libs/tk/ytkmm/button.cc:238 0000022 0x00007ffb731a9db6 in g_cclosure_marshal_VOID__VOID (closure=0x393e7d0, return_value=<optimized out>, n_param_values=<optimized out>, param_values=<optimized out>, invocation_hint=0x14e9d0, marshal_data=<optimized out>) at ../glib-2.86.3/gobject/gmarshal.c:117 0000023 0x00007ffb731a67a4 in g_type_class_meta_marshal (closure=0x393e7d0, return_value=0x0, n_param_values=1, param_values=0x14eac0, invocation_hint=0x14e9d0, marshal_data=0x358) at ../glib-2.86.3/gobject/gclosure.c:1118 #24 0x00007ffb731a80e2 in g_closure_invoke (closure=closure@entry=0x393e7d0, return_value=0x0, n_param_values=n_param_values@entry=1, param_values=param_values@entry=0x14eac0, invocation_hint=invocation_hint@entry=0x14e9d0) at ../glib-2.86.3/gobject/gclosure.c:916 0000025 0x00007ffb731b9554 in signal_emit_unlocked_R (node=node@entry=0x14eb30, detail=<optimized out>, detail@entry=0, instance=instance@entry=0x3ec61b20, emission_return=emission_return@entry=0x0, instance_and_params=<optimized out>) at ../glib-2.86.3/gobject/gsignal.c:3736 0000026 0x00007ffb731ba47b in signal_emit_valist_unlocked (instance=instance@entry=0x3ec61b20, signal_id=signal_id@entry=127, detail=detail@entry=0, var_args=<optimized out>, var_args@entry=0x14ecf8 "") at ../glib-2.86.3/gobject/gsignal.c:3535 0000027 0x00007ffb731be12d in g_signal_emit_valist (instance=0x3ec61b20, signal_id=127, detail=0, var_args=var_args@entry=0x14ecf8 "") at ../glib-2.86.3/gobject/gsignal.c:3278 0000028 0x00007ffb731be16e in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../glib-2.86.3/gobject/gsignal.c:3598 0000029 0x00007ffa618e70ba in gtk_button_released (button=0x3ec61b20) at ../libs/tk/ytk/gtkbutton.c:1107 0000030 0x00007ffa618e8468 in gtk_button_button_release (widget=0x3ec61b20, event=0x3e380120) at ../libs/tk/ytk/gtkbutton.c:1604 0000031 0x00007ffa62740c2f in Gtk::Widget_Class::button_release_event_callback (self=0x3ec61b20, p0=0x3e380120) at ../libs/tk/ytkmm/widget.cc:4345 0000032 0x00007ffa619d6fc5 in _gtk_marshal_BOOLEAN__BOXED (closure=0x38b73e0, return_value=0x14f010, n_param_values=2, param_values=0x14f0e0, invocation_hint=0x14eff0, marshal_data=0x7ffa62740b3e <Gtk::Widget_Class::button_release_event_callback(_GtkWidget*, _GdkEventButton*)>) at ../libs/tk/ytk/gtkmarshalers.c:84 0000033 0x00007ffb731a67a4 in g_type_class_meta_marshal (closure=0x38b73e0, return_value=0x14f010, n_param_values=2, param_values=0x14f0e0, invocation_hint=0x14eff0, marshal_data=0x160) at ../glib-2.86.3/gobject/gclosure.c:1118 0000034 0x00007ffb731a80e2 in g_closure_invoke (closure=closure@entry=0x38b73e0, return_value=0x14f010, n_param_values=n_param_values@entry=2, param_values=param_values@entry=0x14f0e0, invocation_hint=invocation_hint@entry=0x14eff0) at ../glib-2.86.3/gobject/gclosure.c:916 0000035 0x00007ffb731b9637 in signal_emit_unlocked_R (node=node@entry=0x14f160, detail=<optimized out>, detail@entry=0, instance=instance@entry=0x3ec61b20, emission_return=emission_return@entry=0x14f1e0, instance_and_params=<optimized out>) at ../glib-2.86.3/gobject/gsignal.c:3943 0000036 0x00007ffb731ba402 in signal_emit_valist_unlocked (instance=instance@entry=0x3ec61b20, signal_id=signal_id@entry=36, detail=detail@entry=0, var_args=<optimized out>, var_args@entry=0x14f328 " \0018>") at ../glib-2.86.3/gobject/gsignal.c:3548 0000037 0x00007ffb731be12d in g_signal_emit_valist (instance=0x3ec61b20, signal_id=36, detail=0, var_args=var_args@entry=0x14f328 " \0018>") at ../glib-2.86.3/gobject/gsignal.c:3278 0000038 0x00007ffb731be16e in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../glib-2.86.3/gobject/gsignal.c:3598 0000039 0x00007ffa61b6f801 in gtk_widget_event_internal (widget=0x3ec61b20, event=0x3e380120) at ../libs/tk/ytk/gtkwidget.c:5058 0000040 0x00007ffa61b6f0dc in gtk_widget_event (widget=0x3ec61b20, event=0x3e380120) at ../libs/tk/ytk/gtkwidget.c:4846 0000041 0x00007ffa619d4cd9 in gtk_propagate_event (widget=0x3ec61b20, event=0x3e380120) at ../libs/tk/ytk/gtkmain.c:2457 0000042 0x00007ffa619d35a5 in gtk_main_do_event (event=0x3e380120) at ../libs/tk/ytk/gtkmain.c:1646 0000043 0x00007ffae6e1dfd0 in gdk_event_dispatch (source=0x3c084c0, callback=0x0, user_data=0x0) at ../libs/tk/ydk/win32/gdkevents-win32.c:3990 0000044 0x00007ffb0a1cb453 in g_main_dispatch (context=0x310e090) at ../glib-2.86.3/glib/gmain.c:3565 0000045 0x00007ffb0a1cb51e in g_main_context_dispatch_unlocked (context=context@entry=0x310e090) at ../glib-2.86.3/glib/gmain.c:4425 0000046 0x00007ffb0a1cdc24 in g_main_context_iterate_unlocked (context=0x310e090, block=block@entry=1, dispatch=dispatch@entry=1, self=self@entry=0xf8b2d20) at ../glib-2.86.3/glib/gmain.c:4490 0000047 0x00007ffb0a1ce47f in g_main_loop_run (loop=0xdbc4550) at ../glib-2.86.3/glib/gmain.c:4695 0000048 0x00007ffa619d2961 in gtk_main () at ../libs/tk/ytk/gtkmain.c:1213 0000049 0x00007ffa626b209b in Gtk::Main::run_impl (this=0x33337f0) at ../libs/tk/ytkmm/main.cc:537 0000050 0x00007ffa626b1e97 in Gtk::Main::run () at ../libs/tk/ytkmm/main.cc:480 0000051 0x00007ffa65726357 in Gtkmm2ext::UI::run (this=0x31b5740, old_receiver=...) at ../libs/gtkmm2ext/gtk_ui.cc:319 0000052 0x00007ff60f137844 in main (argc=1, argv=0x22a30f0) at ../gtk2_ardour/main.cc:467 | ||||
| Tags | No tags attached. | ||||
|
|
|
|
|
This file is illegal ... the Time Signature SMF events have zero for both the number of MIDI clocks per metronome tick and the number of 32nd notes per quarter note. The specification does not mention the possibility of zero for either value. I will fix things so that we do not crash, but the tempo map is not suitable for import. What is its origin? |
|
|
fixed in commit c207080229 with successful import (used the meter denominator if the 32nds-per-quarter note field is zero. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2026-01-09 20:01 | tnaugle | New Issue | |
| 2026-01-09 20:01 | tnaugle | File Added: Virginia Plain - Tempo Map.mid | |
| 2026-01-10 00:36 | paul | Note Added: 0029700 | |
| 2026-01-10 01:01 | paul | Assigned To | => paul |
| 2026-01-10 01:01 | paul | Status | new => resolved |
| 2026-01-10 01:01 | paul | Resolution | open => fixed |
| 2026-01-10 01:01 | paul | Note Added: 0029701 |