GNOME Bugzilla – Bug 631681
bayer2rgb crash on bad 0.10.20
Last modified: 2011-01-03 00:05:29 UTC
I've found a crash in bayer2rgb plugins from gst-plugins-bad-0.20 that was not present in previous release. I'm capturing a bayer stream from an embedded device HD size (1280 x 720). I can save the stream in a file or stream it using tcp plugins. In both conditions bayer2rgb plugin from bad-0.20 crashes while for example bad-0.19 is working flawlessly. This is a cut of the output with GST_DEBUG=3 -------------------------------------------------------------------- 0:00:00.282103829 31512 0x9fe7050 INFO filesrc gstfilesrc.c:984:gst_file_src_start:<filesrc0> opening file /dev/urandom 0:00:00.282209229 31512 0x9fe7050 INFO GST_EVENT gstevent.c:605:gst_event_new_new_segment_full: creating newsegment update 0, rate 1,000000, format bytes, start 0, stop -1, position 0 0:00:00.282424828 31512 0x9fe7050 INFO GST_STATES gstelement.c:2236:gst_element_continue_state:<filesrc0> completed state change to PAUSED 0:00:00.282475028 31512 0x9fe7050 INFO GST_STATES gstelement.c:2249:gst_element_continue_state:<filesrc0> posting state-changed READY to PAUSED 0:00:00.282518428 31512 0x9fe7050 INFO GST_STATES gstbin.c:2443:gst_bin_change_state_func:<pipeline0> child 'filesrc0' changed state to 3(PAUSED) successfully La pipeline è in PREROLLING ... 0:00:00.508963840 31512 0xa172b40 INFO GST_PADS gstpad.c:3471:gst_pad_event_default_dispatch:<ivantest0:sink> Sending event 0xa1661b8 (newsegment) to all internally linked pads Caught SIGSEGV accessing address (nil) Killed Example pipelines: On the embedded device: gst-launch \ v4l2src \ ! video/x-raw-bayer,width=1280,height=720,framerate=\(fraction\)1/1 \ ! queue \ ! tcpserversink host=192.168.101.37 protocol=1 port=5432 On PC gst-launch \ tcpclientsrc host=192.168.101.37 port=5432 protocol=1 \ ! queue \ ! bayer2rgb \ ! ffmpegcolorspace \ ! ximagesink sync=false Or gst-launch \ filesrc location=mytest.yuv \ ! video/x-raw-bayer,width=1280,height=720,framerate=\(fraction\)1/1 \ ! queue \ ! bayer2rgb \ ! ffmpegcolorspace \ ! ximagesink sync=false mytest.yuv is a file saved by embedded device or it is possible to use /dev/urandom instead of it. I'm using UBUNTU 10.04 fully update. The workaround is to remove the gst-plugins-bad-0.20 and replace it with gst-plugins-bad-0.19 using the same pipeline. Ivan
In the cut of the output you may read gstpad.c:3471:gst_pad_event_default_dispatch:<ivantest0:sink> Sending event 0xa1661b8 (newsegment) to all internally linked pads ivantest is mine plugin that is derived from identity plugin that I use for debug my streams, by printing some custom information on the screen. Of course the problem persist even without it... Ivan
This is not reproducible with gst-plugins-bad in git. Part of your problem is that the buffers received by bayer2rgb are not the correct size. To get the correct buffer sizes from filesrc, use the blocksize property on filesrc, or use a videoparse element after it. For tcpclientsrc, use a videoparse element, or use some kind of payloading (like gdppay) on both the client and server to indicate what the buffer size is.