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 562950 - [ppc] ffdec_mpeg4 segfaults with direct rendering enabled
[ppc] ffdec_mpeg4 segfaults with direct rendering enabled
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-libav
git master
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2008-12-02 09:50 UTC by Alessandro Decina
Modified: 2018-01-23 11:20 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Alessandro Decina 2008-12-02 09:50:36 UTC
gdb --args gst-launch-0.10 filesrc location=file.avi ! avidemux ! identity error-after=3 ! ffdec_mpeg4 ! fakesink
GNU gdb 6.8-debian
Copyright (C) 2008 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 "powerpc-linux-gnu"...
(gdb) r
Starting program:
/home/alessandro/src/gstreamer/head/install/bin/gst-launch-0.10 filesrc
location=file.avi \! avidemux \! identity error-after=3 \! ffdec_mpeg4 \! fakesink
[Thread debugging using libthread_db enabled]
[New Thread 0x48023310 (LWP 6456)]
Setting pipeline to PAUSED ...
[New Thread 0x489564d0 (LWP 6460)]
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstIdentity:identity0: Failed after iterations as requested.
Additional debug info:
gstidentity.c(549): gst_identity_transform_ip (): /GstPipeline:pipeline0/GstIdentity:identity0
Execution ended after 1169000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
*** glibc detected *** /home/alessandro/src/gstreamer/head/install/bin/gst-launch-0.10: double free or corruption (out): 0x489d3008 ***
======= Backtrace: =========
/lib/libc.so.6[0xfa2fba8]
/lib/libc.so.6(cfree+0xcc)[0xfa31b5c]
/usr/lib/libglib-2.0.so.0(g_free+0x58)[0xfc00448]
/home/alessandro/src/gstreamer/head/install/lib/libgstreamer-0.10.so.0[0xff2132c]
/home/alessandro/src/gstreamer/head/install/lib/libgstreamer-0.10.so.0[0xff53a70]
/home/alessandro/src/gstreamer/head/install/lib/libgstreamer-0.10.so.0(gst_mini_object_unref+0x19c)[0xff53cc4]
/home/alessandro/src/gstreamer/head/install/lib/gstreamer-0.10/libgstffmpeg.so[0xeea8f80]
/home/alessandro/src/gstreamer/head/install/lib/gstreamer-0.10/libgstffmpeg.so[0xeffd564]
/home/alessandro/src/gstreamer/head/install/lib/gstreamer-0.10/libgstffmpeg.so[0xf031740]
/home/alessandro/src/gstreamer/head/install/lib/gstreamer-0.10/libgstffmpeg.so[0xef45de0]
/home/alessandro/src/gstreamer/head/install/lib/gstreamer-0.10/libgstffmpeg.so[0xee99490]
/home/alessandro/src/gstreamer/head/install/lib/gstreamer-0.10/libgstffmpeg.so[0xeea77d8]
/home/alessandro/src/gstreamer/head/install/lib/gstreamer-0.10/libgstffmpeg.so[0xeeb1630]
/home/alessandro/src/gstreamer/head/install/lib/libgstreamer-0.10.so.0(gst_element_change_state+0x90)[0xff3a594]
/home/alessandro/src/gstreamer/head/install/lib/libgstreamer-0.10.so.0[0xff3a3c8]
/home/alessandro/src/gstreamer/head/install/lib/libgstreamer-0.10.so.0(gst_element_set_state+0xfc)[0xff39f34]
/home/alessandro/src/gstreamer/head/install/lib/libgstreamer-0.10.so.0[0xff1adac]
/home/alessandro/src/gstreamer/head/install/lib/libgstreamer-0.10.so.0[0xff1cab4]
/home/alessandro/src/gstreamer/head/install/lib/libgstreamer-0.10.so.0[0xff67960]
/home/alessandro/src/gstreamer/head/install/lib/libgstreamer-0.10.so.0(gst_element_change_state+0x90)[0xff3a594]
/home/alessandro/src/gstreamer/head/install/lib/libgstreamer-0.10.so.0[0xff3a3c8]
/home/alessandro/src/gstreamer/head/install/lib/libgstreamer-0.10.so.0(gst_element_set_state+0xfc)[0xff39f34]
/home/alessandro/src/gstreamer/head/install/bin/gst-launch-0.10[0x1000540c]
/lib/libc.so.6[0xf9cdb24]
/lib/libc.so.6[0xf9cdce0]
======= Memory map: ========
00100000-00103000 r-xp 00100000 00:00 0          [vdso]
0ee3f000-0ee51000 r-xp 00000000 03:04 3014833    /lib/libbz2.so.1.0.4
0ee51000-0ee60000 ---p 00012000 03:04 3014833    /lib/libbz2.so.1.0.4
0ee60000-0ee61000 r--p 00011000 03:04 3014833    /lib/libbz2.so.1.0.4
0ee61000-0ee62000 rw-p 00012000 03:04 3014833    /lib/libbz2.so.1.0.4
0ee72000-0f2f8000 r-xp 00000000 03:04 5017572    /home/alessandro/src/gstreamer/head/install/lib/gstreamer-0.10/libgstffmpeg.so
0f2f8000-0f307000 ---p 00486000 03:04 5017572    /home/alessandro/src/gstreamer/head/install/lib/gstreamer-0.10/libgstffmpeg.so
0f307000-0f316000 r--p 00485000 03:04 5017572    /home/alessandro/src/gstreamer/head/install/lib/gstreamer-0.10/libgstffmpeg.so
0f316000-0f320000 rw-p 00494000 03:04 5017572    /home/alessandro/src/gstreamer/head/install/lib/gstreamer-0.10/libgstffmpeg.so
0f320000-0f5c4000 rw-p 0f320000 00:00 0 
0f5d4000-0f5e4000 r-xp 00000000 03:04 5017544    /home/alessandro/src/gstreamer/head/install/lib/libgsttag-0.10.so.0.15.0
0f5e4000-0f5f3000 ---p 00010000 03:04 5017544    /home/alessandro/src/gstreamer/head/install/lib/libgsttag-0.10.so.0.15.0
0f5f3000-0f5f4000 r--p 0000f000 03:04 5017544    /home/alessandro/src/gstreamer/head/install/lib/libgsttag-0.10.so.0.15.0
0f5f4000-0f5f5000 rw-p 00010000 03:04 5017544    /home/alessandro/src/gstreamer/head/install/lib/libgsttag-0.10.so.0.15.0
0f605000-0f612000 r-xp 00000000 03:04 5016945    /home/alessandro/src/gstreamer/head/install/lib/libgstinterfaces-0.10.so.0.15.0
0f612000-0f622000 ---p 000
Program received signal SIGABRT, Aborted.

Thread 1208103696 (LWP 6456)

  • #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 g_free
    from /usr/lib/libglib-2.0.so.0
  • #6 gst_buffer_finalize
    at gstbuffer.c line 190
  • #7 gst_mini_object_free
    at gstminiobject.c line 320
  • #8 gst_mini_object_unref
    at gstminiobject.c line 355
  • #9 gst_ffmpegdec_release_buffer
    at gstffmpegdec.c line 958
  • #10 MPV_common_end
    at libavcodec/mpegvideo.c line 257
  • #11 ff_h263_decode_end
    at libavcodec/h263dec.c line 126
  • #12 avcodec_close
    at libavcodec/utils.c line 989
  • #13 gst_ffmpeg_avcodec_close
    at gstffmpeg.c line 64
  • #14 gst_ffmpegdec_close
    at gstffmpegdec.c line 498
  • #15 gst_ffmpegdec_change_state
    at gstffmpegdec.c line 2410
  • #16 gst_element_change_state
    at gstelement.c line 2427
  • #17 gst_element_set_state_func
    at gstelement.c line 2377
  • #18 gst_element_set_state
    at gstelement.c line 2280
  • #19 gst_bin_element_set_state
    at gstbin.c line 2018
  • #20 gst_bin_change_state_func
    at gstbin.c line 2304
  • #21 gst_pipeline_change_state
    at gstpipeline.c line 465
  • #22 gst_element_change_state
    at gstelement.c line 2427
  • #23 gst_element_set_state_func
    at gstelement.c line 2377
  • #24 gst_element_set_state
    at gstelement.c line 2280
  • #25 main
    at gst-launch.c line 799

I tried to track down the problem a bit. With identity error-after=2 it
doesn't segfault. Overriding g_try_malloc and g_free with LD_PRELOAD
and breaking at gst_mini_object_unref and gst_buffer_finalize I can see
that the sequence of calls in gstreamer is correct.
Comment 1 Edward Hervey 2008-12-06 16:08:37 UTC
Alessandro was running into this on his powerpc machine. It might be ppc-specific, in which case we could maybe deactivate direct-rendering on ppc.
Comment 2 Edward Hervey 2013-07-17 08:38:38 UTC
Anyone with a PPC machine can check if this is still an issue ?
Comment 3 Tim-Philipp Müller 2013-07-18 10:37:04 UTC
I can test this.
Comment 4 Tim-Philipp Müller 2018-01-23 11:20:25 UTC
Let's close this :)