After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 741783 - qtmux: crash when trying to mux ALAC
qtmux: crash when trying to mux ALAC
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: High critical
: 1.5.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
: 745619 (view as bug list)
Depends on:
Reported: 2014-12-19 19:47 UTC by Gautier Portet
Modified: 2015-03-04 16:25 UTC
See Also:
GNOME target: ---
GNOME version: ---

Description Gautier Portet 2014-12-19 19:47:08 UTC
I'm trying to encode with ALAC codec, I think the pipeline should be something like "avenc_alac ! mp4mux", but it crashes GStreamer :  

[cerbero-linux-x86_64]:~/cerbero$ gst-launch-1.0 filesrc location=/tmp/blow.flac ! decodebin ! avenc_alac ! mp4mux ! filesink location=/tmp/blow.flac.m4a

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...

(gst-launch-1.0:211): GStreamer-CRITICAL **: gst_buffer_extract: assertion 'dest != NULL' failed
Spinning.  Please run 'gdb gst-launch-1.0 211' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.

I've tested on Ubuntu 14.04, Fedora 21 and git gstreamer, same crash.
Comment 1 Thiago Sousa Santos 2014-12-24 15:49:05 UTC
Thanks for taking the time to report this bug.
Without a stack trace from the crash it's very hard to determine what caused it.
Can you get us a stack trace? Please see for more information on how to do so. Thanks in advance!

You can also use G_DEBUG=fatal_criticals to get the stack trace at the moment of that assertion
Comment 2 Tim-Philipp Müller 2014-12-25 21:44:14 UTC
Thanks for the bug report. Should be fixed in git master now:

commit aa94fc6beb95ef6b811bec53696403fe47fa1f42
Author: Tim-Philipp Müller <>
Date:   Thu Dec 25 21:32:40 2014 +0000

    qtmux: fix ALAC muxing
    Actually copy the codec data instead of copying nothing
    and then bombing out because there's no data.
    Fixes: gst-launch-1.0 audiotestsrc ! avenc_alac ! qtmux ! fakesink
Comment 3 Tim-Philipp Müller 2014-12-25 21:46:18 UTC
For the record, here's the stack trace:

0:00:00.471982545  9698 0x7fffec04d0a0 DEBUG                  qtmux gstqtmux.c:2669:gst_qt_mux_audio_sink_set_caps:<mp4mux0> mp4mux0:audio_0, caps=audio/x-alac, channels=(int)2, rate=(int)44100, channel-mask=(bitmask)0x0000000000000003, samplesize=(int)0, codec_data=(buffer)00000024616c616300000000000010000010280a0e02000000004004001588800000ac44

(gst-launch-1.0:9698): GStreamer-CRITICAL **: gst_buffer_extract: assertion 'dest != NULL' failed

Program received signal SIGTRAP, Trace/breakpoint trap.

Thread 140737250060032 (LWP 9704)

  • #0 g_logv
    at gmessages.c line 1046
  • #1 g_log
    at gmessages.c line 1079
  • #2 g_return_if_fail_warning
    at gmessages.c line 1088
  • #3 gst_buffer_extract
    at gstbuffer.c line 1698
  • #4 atom_data_new_from_gst_buffer
    at atoms.c line 213
  • #5 build_codec_data_extension
    at atoms.c line 4537
  • #6 gst_qt_mux_audio_sink_set_caps
    at gstqtmux.c line 2885
  • #7 gst_qt_mux_sink_event
    at gstqtmux.c line 3378

data->data was NULL because the codec_config GstBuffer had a length of 0, so nothing got allocated, and it was 0 because no data was copied because of flags=NONE passed to gst_buffer_copy_region().
Comment 4 Stephane Cerveau 2015-03-04 16:25:24 UTC
*** Bug 745619 has been marked as a duplicate of this bug. ***