View Issue Details

IDProjectCategoryView StatusLast Update
0004528ardourbugspublic2012-01-27 22:56
Reporternettings Assigned To 
PrioritynormalSeveritycrashReproducibilityalways
Status newResolutionopen 
Target Version3.X 
Summary0004528: crash after recording MIDI timecode to a midi track
Descriptioni know it makes no sense in practise, this is just a test case, so read on:

when i try to record midi timecode in an ardour midi track for about three minutes, ardour will crash soon after the transport is stopped, after being unresponsive for half a minute or so, apparently while doing janitorial tasks that have queued up while recording the midi data.

Steps To Reproduceconnect a source of full-frame MTC to an ardour midi track and record. i used
https://ltcsmpte.svn.sourceforge.net/svnroot/ltcsmpte/libltcsmpte/trunk/.
apart from libltcsmpte itself, you will have to build jtlc (which creates LTC on jack audio ports, depending on the JACK transport state), and ltc2amidi, which takes a jack audio input and will convert it to MTC in lsa midi. to connect this to a3, you will need a2jmidid :)
sorry for the convoluted usecase...

to make sure its not downstream congestion that triggers the bug, i disconnected the ardour MIDI track output.

first try recording a few seconds of MTC. it will work, but you will notice it takes quite a while after you hit "STOP" before the midi region appears. if you zoom in, you will see the MTC full-frame sysexes in little yellow boxes.
then record for three minutes. after stopping, ardour will barf with the messages quoted below.
Additional Informationthe console says this:
MIDI 1-16.mid last write set to 512
Dropping incoming MIDI at time 27; offset=80 limit=256
drop flushed event on the floor, time 27 < 80
drop flushed event on the floor, time 27 < 80

Pango-ERROR **: Unable to open font file /usr/share/fonts/truetype/arial.ttf for font Arial 9.9990234375, exiting

aborting...

[1]+ Aborted ardour3 2012-Life_in_Technicolor_ii.ardour

*.*

it should be noted that ltc2amidi only creates full-frame MTC sysexes, 24 per second. full-fledged MTC includes additional quarter-frame messages, which were not part of this test scenario, but they might trigger the bug even earlier as they come a a vastly higher rate.

TagsNo tags attached.

Activities

nettings

2011-12-02 13:15

manager   ~0012275

interesting. this time, after provoking the crash, ardour cannot start the session any more. it barfs with the same error. a post-mortem on the corefile indicates this:
Core was generated by `/usr/local/lib/ardour3/ardour-3.0 2012-Life_in_Technicolor_ii.ardour'.
Program terminated with signal 6, Aborted.
#0 0x00007ff8e495dab5 in raise () from /lib64/libc.so.6
(gdb) thread apply all bt

<snip>

Thread 1 (Thread 8514):
#0 0x00007ff8e495dab5 in raise () from /lib64/libc.so.6
0000001 0x00007ff8e495efb6 in abort () from /lib64/libc.so.6
#2 0x00007ff8eb845b4a in g_logv () from /lib64/libglib-2.0.so.0
#3 0x00007ff8eb845bd3 in g_log () from /lib64/libglib-2.0.so.0
0000004 0x00007ff8ea793be8 in pango_ft2_font_get_face () from /usr/lib64/libpangoft2-1.0.so.0
0000005 0x00007ff8ea78f034 in pango_fc_font_create_base_metrics_for_context () from /usr/lib64/libpangoft2-1.0.so.0
#6 0x00007ff8ea78f428 in ?? () from /usr/lib64/libpangoft2-1.0.so.0
#7 0x00007ff8e99f5ba9 in ?? () from /usr/lib64/libpango-1.0.so.0
0000008 0x00007ff8e99f86f8 in pango_layout_line_get_extents () from /usr/lib64/libpango-1.0.so.0
0000009 0x00007ff8e99f87f7 in ?? () from /usr/lib64/libpango-1.0.so.0
0000010 0x00007ff8e99f9eb9 in ?? () from /usr/lib64/libpango-1.0.so.0
0000011 0x00007ff8e99fa1fe in pango_layout_get_pixel_extents () from /usr/lib64/libpango-1.0.so.0
0000012 0x00007ff8e99fa24e in pango_layout_get_pixel_size () from /usr/lib64/libpango-1.0.so.0
0000013 0x00007ff8e74fc4cd in gnome_canvas_text_set_property (object=0x7ff8afb8ce00, param_id=3, value=0x7fffd6475700, pspec=0x2136e30) at ../libs/gnomecanvas/libgnomecanvas/gnome-canvas-text.c:1089
0000014 0x00007ff8ec112072 in g_object_set_valist () from /lib64/libgobject-2.0.so.0
#15 0x00007ff8e74dc7ae in gnome_canvas_item_set_valist (item=0x7ff8afb8ce00, first_arg_name=0x7ff8e77431c5 "x", args=0x7fffd64757d0) at ../libs/gnomecanvas/libgnomecanvas/gnome-canvas.c:559
0000016 0x00007ff8e7739544 in Gnome::Canvas::Item::set(char const*, ...) () from /usr/lib64/libgnomecanvasmm-2.6.so.1
#17 0x00007ff8e773ee70 in Gnome::Canvas::Text::Text(Gnome::Canvas::Group&, double, double, Glib::ustring const&) () from /usr/lib64/libgnomecanvasmm-2.6.so.1
0000018 0x00000000005ff1e0 in Gnome::Canvas::CanvasFlag::set_text(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) ()
0000019 0x000000000060e971 in Gnome::Canvas::CanvasSysEx::CanvasSysEx(MidiRegionView&, Gnome::Canvas::Group&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, double, double, double) ()
0000020 0x0000000000886ef3 in MidiRegionView::display_sysexes() ()
0000021 0x000000000088f0d1 in MidiRegionView::redisplay_model() ()
0000022 0x00000000008aae7a in MidiStreamView::display_region(MidiRegionView*, bool) ()
0000023 0x00000000008adb21 in MidiStreamView::add_region_view_internal(boost::shared_ptr<ARDOUR::Region>, bool, bool) ()
#24 0x0000000000af8782 in StreamView::add_region_view(boost::weak_ptr<ARDOUR::Region>) ()
0000025 0x00000000008aea81 in boost::detail::function::void_function_obj_invoker1<sigc::retype_return_functor<void, sigc::bound_mem_functor1<void, MidiStreamView, boost::weak_ptr<ARDOUR::Region> > >, void, boost::shared_ptr<ARDOUR::Region> >::invoke(boost::detail::function::function_buffer&, boost::shared_ptr<ARDOUR::Region>) ()
0000026 0x00007ff8ee95c172 in ARDOUR::Playlist::foreach_region(boost::function<void ()(boost::shared_ptr<ARDOUR::Region>)>) () from /usr/local/lib/ardour3/libardour.so.3
0000027 0x00000000008ac6fa in MidiStreamView::redisplay_track() ()
0000028 0x0000000000afbea8 in StreamView::playlist_switched(boost::weak_ptr<ARDOUR::Track>) ()
0000029 0x0000000000afad3c in StreamView::display_track(boost::shared_ptr<ARDOUR::Track>) ()
0000030 0x0000000000afaf2a in StreamView::attach() ()
0000031 0x000000000064cf8d in Editor::first_idle() ()
0000032 0x0000000000523cdf in ARDOUR_UI::first_idle() ()
0000033 0x00007ff8ec390e62 in ?? () from /usr/lib64/libglibmm-2.4.so.1
0000034 0x00007ff8eb83cbd3 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
---Type <return> to continue, or q <return> to quit---
0000035 0x00007ff8eb83d3b0 in ?? () from /lib64/libglib-2.0.so.0
0000036 0x00007ff8eb83d650 in g_main_context_iteration () from /lib64/libglib-2.0.so.0
0000037 0x00007ff8eb2f69f1 in gtk_main_iteration () from /usr/lib64/libgtk-x11-2.0.so.0
0000038 0x00000000006be13d in Editor::set_horizontal_position(double) ()
0000039 0x0000000000646a59 in Editor::idle_visual_changer() ()
0000040 0x00007ff8eb83cbd3 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
0000041 0x00007ff8eb83d3b0 in ?? () from /lib64/libglib-2.0.so.0
0000042 0x00007ff8eb83d650 in g_main_context_iteration () from /lib64/libglib-2.0.so.0
0000043 0x00007ff8eb2f69f1 in gtk_main_iteration () from /usr/lib64/libgtk-x11-2.0.so.0
0000044 0x00007ff8eda45395 in Gtkmm2ext::UI::flush_pending() () from /usr/local/lib/ardour3/libgtkmm2ext.so.0
0000045 0x000000000056087e in ARDOUR_UI::goto_editor_window() ()
0000046 0x0000000000527cae in ARDOUR_UI::load_session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >) ()
0000047 0x00000000005351bc in ARDOUR_UI::get_session_parameters ()
0000048 0x0000000000535a91 in ARDOUR_UI::startup() ()
0000049 0x000000000051a022 in sigc::internal::signal_emit0<void, sigc::nil>::emit(sigc::internal::signal_impl*) ()
0000050 0x00007ff8eda45170 in Gtkmm2ext::UI::run(Receiver&) () from /usr/local/lib/ardour3/libgtkmm2ext.so.0
0000051 0x0000000000860945 in main ()
(gdb)


so maybe it's not an ardour issue after all, but some pango bug?

nettings

2011-12-03 01:42

manager   ~0012284

partly fixed for me as of 10875.
the new option "never display periodic midi messages", which defaults to off, allows the problem session to be opened again.
however, the pango crash can still be provoked by disabling it and zooming in afterwards - i guess this is to be expected, i'm just mentioning it for the record.

nettings

2011-12-03 01:46

manager   ~0012285

update: paul, it's unlikely to be an out-of-memory situation like you wondered on IRC - i have 4g of ram, 3 of which are memlockable, and the crash occurs at less than 50% of system memory usage (unless there is a very short, very strong spike of memory allocation that does not show up in gnome-system-monitor).

Issue History

Date Modified Username Field Change
2011-12-02 13:07 nettings New Issue
2011-12-02 13:07 nettings cost => 0.00
2011-12-02 13:09 nettings Steps to Reproduce Updated
2011-12-02 13:15 nettings Note Added: 0012275
2011-12-02 13:35 cth103 Target Version => 3.0-beta2
2011-12-03 01:42 nettings Note Added: 0012284
2011-12-03 01:46 nettings Note Added: 0012285
2012-01-10 20:46 cth103 Target Version 3.0-beta2 => 3.0-beta3
2012-01-27 22:56 paul Target Version 3.0-beta3 => 3.X