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 678074 - Segfault playing MPEG PS video
Segfault playing MPEG PS video
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal normal
: NONE
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2012-06-14 08:18 UTC by Tvrtko Ursulin
Modified: 2012-11-09 19:42 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Tvrtko Ursulin 2012-06-14 08:18:49 UTC
Code from 0.10 GIT:
gstreamer 11c8ffb6fbd20081c49708cb41e0ec6e2ed09c27
-base 1f6056eafb6c37f4c78ed22b2796a1dcaeb51ee6
-good 50c85392cd0a8824b917790a12d92f237dbd55ce
-bad acf4463f2b9bf7a7cdbac288e50dfb41626fc8b2
-ugly 09284b9862504f73924d88ac00b2c7d08dd7a001
-ffmpeg 9761a6501b518a554fc5e52de8e9acdc4f8ced9a

Plus a patch to -ugly mpeg2dec to set its rank to NONE making -ffmpeg MPEG2 decoder used.

Crash:

: [1] root @ NTB 19122 # gdb gst-launch-0.10
GNU gdb (GDB) Fedora (7.3.50.20110722-13.fc16)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/gst-launch-0.10...Reading symbols from /usr/lib/debug/usr/bin/gst-launch-0.10.debug...done.
done.
(gdb) set args playbin2 uri=file:///data/data/media/Corporate\ SA/MAIN\ ZONE/CrossSpin.mpeg 
(gdb) r
Starting program: /usr/bin/gst-launch-0.10 playbin2 uri=file:///data/data/media/Corporate\ SA/MAIN\ ZONE/CrossSpin.mpeg 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Setting pipeline to PAUSED ...
[New Thread 0x7fffed784700 (LWP 28470)]
Pipeline is PREROLLING ...
[New Thread 0x7fffecf83700 (LWP 28471)]
[New Thread 0x7fffe7127700 (LWP 28472)]
[New Thread 0x7fffe6926700 (LWP 28473)]
[New Thread 0x7fffe6125700 (LWP 28474)]
[New Thread 0x7fffdbbe1700 (LWP 28475)]
[New Thread 0x7fffdab38700 (LWP 28476)]
[New Thread 0x7fffd392a700 (LWP 28477)]
[New Thread 0x7fffcf128700 (LWP 28478)]
[New Thread 0x7fffce927700 (LWP 28479)]
[Thread 0x7fffcf128700 (LWP 28478) exited]
[Thread 0x7fffce927700 (LWP 28479) exited]
[Thread 0x7fffd392a700 (LWP 28477) exited]
[New Thread 0x7fffd392a700 (LWP 28480)]
0:00:00.480827279 28467 0x7fffc4001a00 ERROR                 ffmpeg :0:: ac-tex damaged at 14 1
0:00:00.480926471 28467 0x7fffe800e960 ERROR                 ffmpeg :0:: Warning MVs not available
[New Thread 0x7fffce927700 (LWP 28481)]
0:00:00.582521467 28467 0x7fffc4001a00 ERROR                 ffmpeg :0:: ac-tex damaged at 22 5
0:00:00.582595391 28467 0x7fffe800e960 ERROR                 ffmpeg :0:: Warning MVs not available
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstAudioSinkClock
0:00:00.625050860 28467 0x7fffc4001a00 ERROR                 ffmpeg :0:: ac-tex damaged at 22 3
0:00:00.625150011 28467 0x7fffe800e960 ERROR                 ffmpeg :0:: Warning MVs not available
Redistribute latency...

** (gst-launch-0.10:28467): CRITICAL **: gst_video_codec_frame_unref: assertion `frame->ref_count > 0' failed

** (gst-launch-0.10:28467): CRITICAL **: gst_video_codec_frame_unref: assertion `frame->ref_count > 0' failed

** (gst-launch-0.10:28467): CRITICAL **: gst_video_codec_frame_unref: assertion `frame->ref_count > 0' failed

** (gst-launch-0.10:28467): CRITICAL **: gst_video_codec_frame_unref: assertion `frame->ref_count > 0' failed

(gst-launch-0.10:28467): GStreamer-CRITICAL **: gst_caps_is_fixed: assertion `GST_IS_CAPS (caps)' failed
0:00:00.646462844 28467 0x7fffc4001a00 ERROR                 ffmpeg :0:: ac-tex damaged at 24 7

** (gst-launch-0.10:28467): CRITICAL **: gst_video_codec_frame_unref: assertion `frame->ref_count > 0' failed

** (gst-launch-0.10:28467): CRITICAL **: gst_video_codec_frame_unref: assertion `frame->ref_count > 0' failed

Program received signal SIGSEGV, Segmentation fault.

Thread 140737169078016 (LWP 28471)

  • #0 g_slice_alloc
    at gslice.c line 833
  • #1 g_slice_alloc0
    at gslice.c line 854
  • #2 gst_video_decoder_new_frame
    at gstvideodecoder.c line 1769
  • #3 gst_video_decoder_have_frame_2
    at gstvideodecoder.c line 2319
  • #4 gst_video_decoder_chain_forward
    at gstvideodecoder.c line 1435
  • #5 gst_video_decoder_chain
    at gstvideodecoder.c line 1674
  • #6 gst_pad_push
    at gstpad.c line 4710
  • #7 gst_single_queue_push_one
    at gstmultiqueue.c line 1094
  • #8 gst_multi_queue_loop
    at gstmultiqueue.c line 1328
  • #9 gst_task_func
    at gsttask.c line 328
  • #10 g_thread_pool_thread_proxy
    at gthreadpool.c line 319
  • #11 g_thread_create_proxy
    at gthread.c line 1962
  • #12 start_thread
    at pthread_create.c line 309
  • #13 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 115

Comment 1 Tvrtko Ursulin 2012-06-14 08:25:19 UTC
Another failure mode with a different file:

(gdb) set args playbin2 uri=file:///data/data/media/Corporate\ SA/MAIN\ ZONE/640x480.mpg
(gdb) r
Starting program: /usr/bin/gst-launch-0.10 playbin2 uri=file:///data/data/media/Corporate\ SA/MAIN\ ZONE/640x480.mpg
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Setting pipeline to PAUSED ...
[New Thread 0x7fffec29f700 (LWP 28855)]
Pipeline is PREROLLING ...
[New Thread 0x7fffeba9e700 (LWP 28856)]
[New Thread 0x7fffeb29d700 (LWP 28857)]
[New Thread 0x7fffe9b0d700 (LWP 28858)]
[New Thread 0x7fffe8a64700 (LWP 28859)]
0:00:00.269101910 28854 0x7fffe0001800 ERROR                 ffmpeg :0:: ac-tex damaged at 25 16
0:00:00.269645015 28854       0x87af60 ERROR                 ffmpeg :0:: Warning MVs not available
0:00:00.273024835 28854       0x87af60 ERROR                 ffmpeg :0:: warning: first frame is no keyframe
0:00:00.273986512 28854       0x87af60 ERROR                 ffmpeg :0:: warning: first frame is no keyframe
0:00:00.274351785 28854       0x87af60 ERROR                 ffmpeg :0:: Warning MVs not available
Redistribute latency...
0:00:00.279706161 28854 0x7fffd4001a00 ERROR                 ffmpeg :0:: ac-tex damaged at 12 2
0:00:00.279898058 28854       0x87af60 ERROR                 ffmpeg :0:: Warning MVs not available
0:00:00.301993694 28854 0x7fffd4001a00 ERROR                 ffmpeg :0:: ac-tex damaged at 35 8
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:00.305457896 28854 0x7fffd4001a00 ERROR                 ffmpeg :0:: ac-tex damaged at 34 0
0:00:00.314742531 28854       0x87af60 ERROR                 ffmpeg :0:: get_buffer() failed (-1 2 (nil))

Program received signal SIGSEGV, Segmentation fault.

Thread 140737155561216 (LWP 28855)

  • #0 gst_ffmpegviddec_video_frame
    at gstffmpegviddec.c line 1092
  • #1 gst_ffmpegviddec_frame
    at gstffmpegviddec.c line 1198
  • #2 gst_ffmpegviddec_handle_frame
    at gstffmpegviddec.c line 1309
  • #3 gst_video_decoder_have_frame_2
    at gstvideodecoder.c line 2310
  • #4 gst_video_decoder_chain_forward
    at gstvideodecoder.c line 1435
  • #5 gst_video_decoder_chain
    at gstvideodecoder.c line 1674
  • #6 gst_pad_push
    at gstpad.c line 4710
  • #7 gst_type_find_element_chain
    at gsttypefindelement.c line 771
  • #8 gst_pad_push
    at gstpad.c line 4710
  • #9 gst_pad_push
    at gstpad.c line 4710
  • #10 gst_base_src_loop
    at gstbasesrc.c line 2567
  • #11 gst_task_func
    at gsttask.c line 328
  • #12 g_thread_pool_thread_proxy
    at gthreadpool.c line 319
  • #13 g_thread_create_proxy
    at gthread.c line 1962
  • #14 start_thread
    at pthread_create.c line 309
  • #15 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 115

Comment 2 Tvrtko Ursulin 2012-06-14 08:27:52 UTC
First crash is in -base, second in -ffmpeg but maybe it is the same thing?

Movie samples are at least 4Mb so I can't attach them here. I am happy to email them so just ask.
Comment 3 Vincent Penquerc'h 2012-06-14 11:01:59 UTC
Looks like it could be the same as https://bugzilla.gnome.org/show_bug.cgi?id=677187.
Comment 4 Tim-Philipp Müller 2012-10-23 15:48:51 UTC
Tvrtko Ursulin : could you send me the sample file please ?
Comment 5 Edward Hervey 2012-11-09 15:30:40 UTC
Both those files works fine with current master and 0.10, both with mpeg2dec and {ff|av}dec_mpeg2video. Closing bug
Comment 6 Tim-Philipp Müller 2012-11-09 19:42:37 UTC
There were special circumstances here btw: "Note that we are using ffmpeg's MPEG2 decoder (because it is
multi-threaded)  which is what crashes for at least 640x480.mpg and CrossSpin.mpeg. Not sure if you are interested in this setup." 

I haven't been able to reproduce this yet though (with 1.0.x), on a core duo with threads=2.