GNOME Bugzilla – Bug 562950
[ppc] ffdec_mpeg4 segfaults with direct rendering enabled
Last modified: 2018-01-23 11:20:25 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.
+ Trace 210408
Thread 1208103696 (LWP 6456)
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.
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.
Anyone with a PPC machine can check if this is still an issue ?
I can test this.
Let's close this :)