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 562086 - mpeg2 stream crashes something in gstreamer
mpeg2 stream crashes something in gstreamer
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-ugly
git master
Other All
: Normal blocker
: 0.10.11
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2008-11-24 03:13 UTC by Simon Holm Thøgersen
Modified: 2008-12-01 14:39 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Valgrind log (7.66 KB, text/x-log)
2008-11-24 22:03 UTC, palfrey
Details

Description Simon Holm Thøgersen 2008-11-24 03:13:47 UTC
Please describe the problem:
The stream available at

https://trac.videolan.org/libmpeg2/browser/streams/twilight_zone/walken/chroma_444/stream?format=raw

crashes

gst-launch-0.10 playbin uri=https://trac.videolan.org/libmpeg2/browser/streams/twilight_zone/walken/chroma_444/stream?format=raw

producing

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
WARNING: from element /GstPlayBin:playbin0/GstBin:vbin/GstAutoVideoSink:videosink/GstXvImageSink:videosink-actual-sink-xvimage: Internal data flow problem.
Additional debug info:
gstbasesink.c(2854): gst_base_sink_chain_unlocked (): /GstPlayBin:playbin0/GstBin:vbin/GstAutoVideoSink:videosink/GstXvImageSink:videosink-actual-sink-xvimage:
Received buffer without a new-segment. Assuming timestamps start from 0.
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
*** glibc detected *** /usr/bin/gst-launch-0.10: free(): invalid pointer: 0xb5b55008 ***
======= Backtrace: =========

Steps to reproduce:


Actual results:


Expected results:


Does this happen every time?


Other information:
The backtrace from gdb

  • #0 __kernel_vsyscall
  • #1 *__GI_raise
    at ../nptl/sysdeps/unix/sysv/linux/raise.c line 64
  • #2 *__GI_abort
    at abort.c line 88
  • #3 __libc_message
    at ../sysdeps/unix/sysv/linux/libc_fatal.c line 170
  • #4 malloc_printerr
  • #5 *__GI___libc_free
    at malloc.c line 3625
  • #6 IA__g_free
    at gmem.c line 190
  • #7 gst_buffer_finalize
    at gstbuffer.c line 190
  • #8 gst_mini_object_unref
    at gstminiobject.c line 320
  • #9 gst_mini_object_replace
    at gstminiobject.c line 395
  • #10 handoff
    at gstplaybin.c line 781
  • #11 marshal_VOID__MINIOBJECT
    at gstidentity.c line 169
  • #12 IA__g_closure_invoke
    at gclosure.c line 767
  • #13 signal_emit_unlocked_R
    at gsignal.c line 3244
  • #14 IA__g_signal_emit_valist
    at gsignal.c line 2977
  • #15 IA__g_signal_emit
    at gsignal.c line 3034
  • #16 gst_identity_transform_ip
    at gstidentity.c line 604
  • #17 gst_base_transform_handle_buffer
    at gstbasetransform.c line 1816
  • #18 gst_base_transform_chain
    at gstbasetransform.c line 1921
  • #19 gst_pad_chain_unchecked
    at gstpad.c line 3890
  • #20 gst_pad_push
    at gstpad.c line 4057
  • #21 gst_proxy_pad_do_chain
    at gstghostpad.c line 188
  • #22 gst_pad_chain_unchecked
    at gstpad.c line 3890
  • #23 gst_pad_push
    at gstpad.c line 4057
  • #24 gst_queue_loop
    at gstqueue.c line 1047
  • #25 gst_task_func
    at gsttask.c line 192
  • #26 g_thread_pool_thread_proxy
    at gthreadpool.c line 265
  • #27 g_thread_create_proxy
    at gthread.c line 635
  • #28 start_thread
    at pthread_create.c line 297
  • #29 clone
    from /lib/libc.so.6

Comment 1 palfrey 2008-11-24 20:17:47 UTC
Could be another instance of bug 327350. Are you running on a PPC machine?
Comment 2 Simon Holm Thøgersen 2008-11-24 20:50:21 UTC
(In reply to comment #1)
> Could be another instance of bug 327350. Are you running on a PPC machine?

Nope, I'm on x86.

Comment 3 palfrey 2008-11-24 21:50:20 UTC
Using the Debian 0.10.21-5 packages, I can reproduce this crash (so marking as NEW), but my error output is a little different. 

WARNING: from element /GstPlayBin:playbin0/GstBin:vbin/GstAutoVideoSink:videosink/GstXvImageSink:videosink-actual-sink-xvimage: Internal data flow problem.
Additional debug info:
gstbasesink.c(2689): gst_base_sink_chain_unlocked (): /GstPlayBin:playbin0/GstBin:vbin/GstAutoVideoSink:videosink/GstXvImageSink:videosink-actual-sink-xvimage:
Received buffer without a new-segment. Assuming timestamps start from 0.
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Got EOS from element "playbin0".
Execution ended after 6139028703 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
*** glibc detected *** /usr/bin/gst-launch-0.10: free(): invalid pointer: 0xb4af5008 ***

  • #0 raise
    from /lib/libc.so.6
  • #1 abort
    from /lib/libc.so.6
  • #2 __libc_message
    from /lib/libc.so.6
  • #3 malloc_printerr
    from /lib/libc.so.6
  • #4 free
    from /lib/libc.so.6
  • #5 IA__g_free
    at /tmp/buildd/glib2.0-2.18.2/glib/gmem.c line 190
  • #6 gst_buffer_finalize
    at gstbuffer.c line 189
  • #7 gst_mini_object_unref
    at gstminiobject.c line 320
  • #8 clear_buffers
    at gstmpeg2dec.c line 703
  • #9 gst_mpeg2dec_change_state
    at gstmpeg2dec.c line 1802
  • #10 gst_element_change_state
    at gstelement.c line 2427
  • #11 gst_element_set_state_func
    at gstelement.c line 2377
  • #12 gst_element_set_state
    at gstelement.c line 2280
  • #13 gst_decode_bin_change_state
    at gstdecodebin.c line 1743
  • #14 gst_element_change_state
    at gstelement.c line 2427
  • #15 gst_element_set_state_func
    at gstelement.c line 2377
  • #16 gst_element_set_state
    at gstelement.c line 2280
  • #17 gst_bin_change_state_func
    at gstbin.c line 1932
  • #18 gst_pipeline_change_state
    at gstpipeline.c line 463
  • #19 gst_play_base_bin_change_state
    at gstplaybasebin.c line 2724
  • #20 gst_play_bin_change_state
    at gstplaybin.c line 1838
  • #21 gst_element_change_state
    at gstelement.c line 2427
  • #22 gst_element_set_state_func
    at gstelement.c line 2377
  • #23 gst_element_set_state
    at gstelement.c line 2280
  • #24 ??
  • #25 ??
  • #26 ??
  • #27 ??
  • #28 ??
  • #29 ??

Comment 4 palfrey 2008-11-24 22:03:23 UTC
Created attachment 123346 [details]
Valgrind log

Just ran this through Valgrind. Full log is attached, but here's the first error (using libmpeg2-4 version 0.5.1-1): 

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
==17621== Thread 2:
==17621== Invalid write of size 8
==17621==    at 0x703B668: mpeg2_idct_copy_sse2 (in /usr/lib/libmpeg2.so.0.1.0)
==17621==  Address 0x8b7f170 is 691,208 bytes inside a block of size 691,215 alloc'd
==17621==    at 0x4023D6E: malloc (vg_replace_malloc.c:207)
==17621==    by 0x416D973: g_malloc (gmem.c:131)
==17621==    by 0x405F46B: gst_buffer_new_and_alloc (gstbuffer.c:328)
==17621==    by 0x701256A: gst_mpeg2dec_chain (gstmpeg2dec.c:474)
==17621==    by 0x4085E88: gst_pad_chain_unchecked (gstpad.c:3877)
==17621==    by 0x40870C9: gst_pad_push (gstpad.c:4045)
==17621==    by 0x4AB8BF7: stop_typefinding (gsttypefindelement.c:476)
==17621==    by 0x4AB9678: gst_type_find_element_chain (gsttypefindelement.c:692)
==17621==    by 0x4085E88: gst_pad_chain_unchecked (gstpad.c:3877)
==17621==    by 0x40870C9: gst_pad_push (gstpad.c:4045)
==17621==    by 0x4077CA9: gst_proxy_pad_do_chain (gstghostpad.c:207)
==17621==    by 0x4085E88: gst_pad_chain_unchecked (gstpad.c:3877)
Comment 5 David Schleef 2008-11-25 03:44:05 UTC
The gstreamer element doesn't support 4:4:4 video.  Well, now it does:



2008-11-24  David Schleef  <ds@schleef.org>

        * ext/mpeg2dec/gstmpeg2dec.c:
        * ext/mpeg2dec/gstmpeg2dec.h:
          Add support for 4:4:4 video.  Fixes #562086

Comment 6 Sebastian Dröge (slomo) 2008-11-29 20:38:39 UTC
This patch breaks playback of http://gstreamer.freedesktop.org/media/incoming/mxf/opencubetech.com/op1a-mpeg2-wave_hd.mxf and other files.

Without the patch they play fine, with the patch mpeg2dec believes that they're 444 files and ffmpegcolorspace complains about wrong buffer sizes:

** (gst-launch-0.10:20094): WARNING **: vconv: size 6266880 is not a multiple of unit size 6220800
Comment 7 Sebastian Dröge (slomo) 2008-12-01 14:39:27 UTC
2008-12-01  Sebastian Dröge  <sebastian.droege@collabora.co.uk>

        * ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_negotiate_format):
        Last change introduced a regression that made mpeg2dec handle
        some 4:2:2 videos as 4:4:4. Fixes bug #562086.