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 686008 - qtdemux: crashes in push mode with gst_qtdemux_guess_bitrate: assertion failed: (size >= qtdemux->header_size)
qtdemux: crashes in push mode with gst_qtdemux_guess_bitrate: assertion faile...
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal critical
: 1.0.2
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2012-10-12 07:19 UTC by Bastien Nocera
Modified: 2012-10-12 23:09 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Bastien Nocera 2012-10-12 07:19:55 UTC
Trying to stream a video from a local rygel instance crashes qtdemux.

ERROR:qtdemux.c:7648:gst_qtdemux_guess_bitrate: assertion failed: (size >= qtdemux->header_size)

Program received signal SIGABRT, Aborted.

Thread 140736630433536 (LWP 22567)

  • #0 raise
    from /lib64/libc.so.6
  • #1 abort
    from /lib64/libc.so.6
  • #2 g_assertion_message
    at gtestutils.c line 1877
  • #3 g_assertion_message_expr
    at gtestutils.c line 1888
  • #4 gst_qtdemux_guess_bitrate
    at qtdemux.c line 7648
  • #5 qtdemux_expose_streams
    at qtdemux.c line 7787
  • #6 gst_qtdemux_chain
    at qtdemux.c line 4236
  • #7 gst_pad_chain_data_unchecked
    at gstpad.c line 3642
  • #8 gst_pad_push_data
    at gstpad.c line 3859
  • #9 gst_pad_chain_data_unchecked
  • #10 gst_pad_push_data
  • #11 gst_pad_push
    at gstpad.c line 3962
  • #12 gst_proxy_pad_chain_default
    at gstghostpad.c line 128
  • #13 gst_pad_chain_data_unchecked
  • #14 gst_pad_push_data
  • #15 gst_pad_push
    at gstpad.c line 3962
  • #16 gst_queue2_push_one
    at gstqueue2.c line 2448
  • #17 gst_queue2_loop
    at gstqueue2.c line 2541
  • #18 gst_task_func
    at gsttask.c line 316
  • #19 g_thread_pool_thread_proxy
    at gthreadpool.c line 309
  • #20 g_thread_proxy
    at gthread.c line 797
  • #21 start_thread
    from /lib64/libpthread.so.0
  • #22 clone
    from /lib64/libc.so.6
  • #4 gst_qtdemux_guess_bitrate
    at qtdemux.c line 7648
$1 = -1
(gdb) p qtdemux->header_size
$2 = 1845995
(gdb) list
7643	  }
7644	
7645	  /* Subtract the header size */
7646	  GST_DEBUG_OBJECT (qtdemux, "Total size %" G_GINT64_FORMAT ", header size %u",
7647	      size, qtdemux->header_size);
7648	  g_assert (size >= qtdemux->header_size);
7649	  size = size - qtdemux->header_size;
7650	
7651	  if (!gst_qtdemux_get_duration (qtdemux, &duration) ||
7652	      duration == GST_CLOCK_TIME_NONE) {
(gdb)
Comment 1 Bastien Nocera 2012-10-12 07:23:13 UTC
http://people.gnome.org/~hadess/bug686008.mp4

$ cat bug686008.mp4 | gst-launch-1.0 playbin uri=fd://0
Shows the problem

Doesn't crash over HTTP with this URL (I guess that seeking capabilities are different).
Comment 2 Tim-Philipp Müller 2012-10-12 23:09:32 UTC
Also happens with 0.10 git, fwiw, but not releases.

commit e9682b938a56e52c168143d481f69028e5cf1f74
Author: Tim-Philipp Müller <tim@centricular.net>
Date:   Sat Oct 13 00:03:29 2012 +0100

    qtdemux: don't assert if upstream size is not available when guessing bitrates
    
    Fixes abort in push mode where the source is not seekable and the
    size of the file is not available, as with
    
      cat foo.mp4 | gst-launch-1.0 playbin uri=fd://0
    
    Less noticable with releases, since we disable all
    g_assert() there.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=686008