GNOME Bugzilla – Bug 563729
segfault in various elements
Last modified: 2009-04-29 16:02:42 UTC
Trying this pipeline: gst-launch-0.10 -v filesrc location=/home/cschalle/Videos/sincity.mp4 ! decodebin name="decode" decode. ! ffmpegcolorspace ! x264enc ! queue ! flvmux name=mux ! gnomevfssink location=file:///tmp/test8.flv decode. ! audioconvert ! lame ! queue ! mux. Getting this error output: FREEING pipeline ... Caught SIGSEGV accessing address 0x40 ./any-to-flv: line 1: 32609 Killed gst-launch-0.10 -v filesrc location=/home/cschalle/Videos/sincity.mp4 ! decodebin name="decode" decode. ! ffmpegcolorspace ! x264enc ! queue ! flvmux
Could you get a backtrace of this crash? :)
Btw, h264 muxing seems to be quite broken ATM
The weird thing is that this gives me a selinux related backtrace
+ Trace 210613
Thread 1 (Thread 0xb7fe48d0 (LWP 615))
Hm... I remember seeing someone in #gnome-hackers complaining about random stuff segfaulting with a similar backtrace. Could you try if this also happens with selinux disabled?
This is with selinux disabled....
I can't reproduce this here and flvmux is valgrind clean (x264 isn't though). Can you still reproduce it and does this work: gst-launch-0.10 -v videotestsrc num-buffers=100 ! ffmpegcolorspace ! x264enc ! queue ! mux.video flvmux name=mux ! filesink location=test.flv audiotestsrc num-buffers=500 ! audioconvert ! lame ! queue ! mux.audio Could you get a new backtrace and maybe a valgrind log?
The new pipeline also segfaults, although it do create a file and when viewing it I notice that video dies before audio. So this might be a x264 issue. Here is the console output: gst-launch-0.10 -v videotestsrc num-buffers=100 ! ffmpegcolorspace ! x264enc ! queue ! mux.video flvmux name=mux ! filesink location=test.flv audiotestsrc num-buffers=500 ! audioconvert ! lame ! queue ! mux.audio Setting pipeline to PAUSED ... /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)YUY2, width=(int)320, height=(int)240, framerate=(fraction)30/1 /GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)I420, framerate=(fraction)30/1, width=(int)320, height=(int)240 /GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = video/x-raw-yuv, format=(fourcc)YUY2, width=(int)320, height=(int)240, framerate=(fraction)30/1 /GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:src: caps = video/x-h264, width=(int)320, height=(int)240, framerate=(fraction)30/1, codec_data=(buffer)014d4015ffe10017674d401592540a0fd80880000003008000001e478b175001000468ee3c80 /GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:sink: caps = video/x-raw-yuv, format=(fourcc)I420, framerate=(fraction)30/1, width=(int)320, height=(int)240 /GstPipeline:pipeline0/GstAudioTestSrc:audiotestsrc0.GstPad:src: caps = audio/x-raw-float, endianness=(int)1234, width=(int)64, rate=(int)44100, channels=(int)1 Pipeline is PREROLLING ... /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)1 /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps = audio/x-raw-float, endianness=(int)1234, width=(int)64, rate=(int)44100, channels=(int)1 /GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-h264, width=(int)320, height=(int)240, framerate=(fraction)30/1, codec_data=(buffer)014d4015ffe10017674d401592540a0fd80880000003008000001e478b175001000468ee3c80 /GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = video/x-h264, width=(int)320, height=(int)240, framerate=(fraction)30/1, codec_data=(buffer)014d4015ffe10017674d401592540a0fd80880000003008000001e478b175001000468ee3c80 /GstPipeline:pipeline0/GstFlvMux:mux.GstPad:video: caps = video/x-h264, width=(int)320, height=(int)240, framerate=(fraction)30/1, codec_data=(buffer)014d4015ffe10017674d401592540a0fd80880000003008000001e478b175001000468ee3c80 /GstPipeline:pipeline0/GstLame:lame0.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)3, channels=(int)1, rate=(int)44100 /GstPipeline:pipeline0/GstLame:lame0.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)44100, channels=(int)1 /GstPipeline:pipeline0/GstQueue:queue1.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)3, channels=(int)1, rate=(int)44100 /GstPipeline:pipeline0/GstQueue:queue1.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)3, channels=(int)1, rate=(int)44100 /GstPipeline:pipeline0/GstFlvMux:mux.GstPad:audio: caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)3, channels=(int)1, rate=(int)44100 /GstPipeline:pipeline0/GstFlvMux:mux.GstPad:src: caps = video/x-flv /GstPipeline:pipeline0/GstFileSink:filesink0.GstPad:sink: caps = video/x-flv Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstSystemClock Got EOS from element "pipeline0". Execution ended after 844619359 ns. Setting pipeline to PAUSED ... Setting pipeline to READY ... /GstPipeline:pipeline0/GstFileSink:filesink0.GstPad:sink: caps = NULL /GstPipeline:pipeline0/GstFlvMux:mux.GstPad:video: caps = NULL /GstPipeline:pipeline0/GstFlvMux:mux.GstPad:audio: caps = NULL /GstPipeline:pipeline0/GstFlvMux:mux.GstPad:src: caps = NULL /GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = NULL /GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = NULL /GstPipeline:pipeline0/GstQueue:queue1.GstPad:src: caps = NULL /GstPipeline:pipeline0/GstQueue:queue1.GstPad:sink: caps = NULL /GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:src: caps = NULL /GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:sink: caps = NULL /GstPipeline:pipeline0/GstLame:lame0.GstPad:src: caps = NULL /GstPipeline:pipeline0/GstLame:lame0.GstPad:sink: caps = NULL /GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = NULL /GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = NULL /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = NULL /GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps = NULL /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = NULL /GstPipeline:pipeline0/GstAudioTestSrc:audiotestsrc0.GstPad:src: caps = NULL Setting pipeline to NULL ... Freeing pipeline ... Caught SIGSEGV accessing address 0x48 Killed
Created attachment 133211 [details] valgrind log
Something went wrong there it seems... Please retry with G_SLICE=always-malloc valgrind --trace-children=yes gst-launch-0.10 -v videotestsrc num-buffers=100 ! ffmpegcolorspace ! x264enc ! queue ! mux.video flvmux name=mux ! filesink location=test.flv audiotestsrc num-buffers=500 ! audioconvert ! lame ! queue ! mux.audio &> log If you're in an uninstalled GIT environment replace gst-launch-0.10 with /path/to/gitclones/gstreamer/tools/.libs/gst-launch-0.10
Created attachment 133246 [details] updated log
Created attachment 133251 [details] test using mpegtsmux
Ok, so essentially this is a crash that happens when decoding and encoding your video... Does it also crash if: a) You don't use a muxer and instead link the encoders to fakesinks? b) If you don't encode but simply link the two decodebin pads to fakesinks?
Hmm, ser ut til at denne pipelinen ogsaa crasher, gst-launch-0.10 -v videotestsrc num-buffers=100 ! ffmpegcolorspace ! x264enc ! mux fakesink name=mux ! filesink location=test.flv audiotestsrc num-buffers=500 ! audioconvert ! lame ! mux 0:00:00.103808723 4475 0x8cfc050 ERROR GST_PIPELINE ./grammar.y:571:_gst_parse_yyparse: no element "mux" 0:00:00.113843448 4475 0x8cfc050 ERROR GST_PIPELINE ./grammar.y:571:_gst_parse_yyparse: no element "mux" 0:00:00.157609835 4475 0x8cfc050 ERROR GST_PIPELINE ./grammar.y:524:gst_parse_perform_link: could not link mux to filesink0 WARNING: erroneous pipeline: no element "mux" Caught SIGSEGV accessing address 0x48 Killed
Essentially that means that x264 is broken for you. I bet you'll get the same crash if you use ffmpeg or mencoder to encode something with x264... can you confirm this and close the bug as NOTGNOME then? :)
Hmm, I actually get this segfault with gst-inspect also with all ffmpeg plugins in addition to x264. All other plugins I randomly tested are fine though. It is worth pointing out that these plugins do work when I use them in Transmageddon.
this is likely to be x264 and ffmpeg doing weird assembly stuff making the selinux library unhappy. Closing as notgnome aka notgstreamer :)