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 502966 - GStreamer segfaults when videobox is introduced into a specific chain
GStreamer segfaults when videobox is introduced into a specific chain
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
0.10.7
Other All
: Normal critical
: 0.10.7
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2007-12-11 02:06 UTC by Andrew Sayers
Modified: 2007-12-11 16:53 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Andrew Sayers 2007-12-11 02:06:59 UTC
Steps to reproduce:
$ gst-launch v4lsrc device=/dev/video1 ! ffmpegcolorspace ! videobox left=1 ! fakesink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Caught SIGSEGV accessing address (nil)
Killed
$

Stack trace:
I've been unable to get gdb to produce a backtrace.  Suggestions welcome for what I'm doing wrong.

I'm running Debian, and I've installed libgstreamer0.10-0-dbg, gstreamer0.10-plugins-base-dbg, and gstreamer0.10-plugins-good-dbg.  I've done 'export GST_REGISTRY_FORK=no', and yet gdb won't give me the names of any useful functions.

This might be useful though:

$ gst-launch --gst-debug-level=5 v4lsrc device=/dev/video1 ! ffmpegcolorspace ! videobox left=1 ! fakesink
<thousands of lines>
0:00:02.785875000 13222 0x80faf98 LOG        GST_REFCOUNTING gstcaps.c:373:gst_caps_ref: 0x80f2fc0 1->2
0:00:02.785942000 13222 0x80faf98 DEBUG        basetransform gstbasetransform.c:1035:gst_base_transform_get_unit_size:<videobox0> caching 306240 in second cache
0:00:02.786014000 13222 0x80faf98 DEBUG        basetransform gstbasetransform.c:516:gst_base_transform_transform_size:<videobox0> transformed size to 306240
0:00:02.786087000 13222 0x80faf98 LOG        GST_REFCOUNTING gstcaps.c:373:gst_caps_ref: 0x80f2fc0 2->3
0:00:02.786157000 13222 0x80faf98 DEBUG             GST_PADS gstpad.c:2702:gst_pad_alloc_buffer_full:<videobox0:src> offset 0, size 306240
0:00:02.786232000 13222 0x80faf98 LOG        GST_REFCOUNTING gstobject.c:325:gst_object_ref:<fakesink0:sink> 0x80e2bd0 ref 1->2
0:00:02.786306000 13222 0x80faf98 DEBUG             GST_PADS gstpad.c:2638:gst_pad_buffer_alloc_unchecked:<fakesink0:sink> calling bufferallocfunc &gst_base_sink_pad_buffer_alloc (@0xb7a440e0) of for size 306240 offset 0
0:00:02.786398000 13222 0x80faf98 LOG        GST_REFCOUNTING gstobject.c:325:gst_object_ref:<fakesink0> 0x80f8138 ref 2->3
0:00:02.786471000 13222 0x80faf98 LOG        GST_REFCOUNTING gstobject.c:352:gst_object_unref:<fakesink0> 0x80f8138 unref 3->2
0:00:02.786545000 13222 0x80faf98 DEBUG             GST_PADS gstpad.c:2680:gst_pad_buffer_alloc_unchecked:<fakesink0:sink> fallback buffer alloc
0:00:02.786624000 13222 0x80faf98 LOG             GST_BUFFER gstbuffer.c:270:gst_buffer_init: init 0x80fb740
0:00:02.786691000 13222 0x80faf98 LOG             GST_BUFFER gstbuffer.c:293:gst_buffer_new: new 0x80fb740
0:00:02.786787000 13222 0x80faf98 LOG             GST_BUFFER gstbuffer.c:326:gst_buffer_new_and_alloc: new 0x80fb740 of size 306240
0:00:02.787344000 13222 0x80faf98 LOG        GST_REFCOUNTING gstcaps.c:373:gst_caps_ref: 0x80f2fc0 3->4
0:00:02.787470000 13222 0x80faf98 LOG        GST_REFCOUNTING gstobject.c:352:gst_object_unref:<fakesink0:sink> 0x80e2bd0 unref 2->1
0:00:02.787552000 13222 0x80faf98 LOG             GST_BUFFER gstbuffer.c:214:gst_buffer_copy_metadata: copy 0x80fb6f0 to 0x80fb740
0:00:02.787625000 13222 0x80faf98 LOG        GST_REFCOUNTING gstcaps.c:396:gst_caps_unref: 0x80f2fc0 4->3
Caught SIGSEGV accessing address (nil)
Killed
$

I can send the complete log if required.

Other information:
I'm using a slightly modified version of the SQ905 driver from http://sqcam.sourceforge.net/, and I've been unable to test this with any other V4L source (/dev/video0 is a TV card that GStreamer constantly reports as busy).  My driver changes are relatively minor, and are documented at http://sourceforge.net/mailarchive/forum.php?thread_name=20071205171539.GA26310%40nautilus&forum_name=sqcam-devel

This bug doesn't occur if you replace the v4lsrc with testvideosrc, or if you remove videobox from the chain.  My meagre debugging abilities aren't sufficient to rule out this being a driver issue, but it seems unlikely to me at this point.
Comment 1 Wim Taymans 2007-12-11 16:53:17 UTC
I think this was fixed by this commit, which will be in gst-plugins-good-0.10.7:

http://webcvs.freedesktop.org/gstreamer/gst-plugins-good/gst/videobox/gstvideobox.c?r1=1.34&r2=1.35

This is also likely the reason you can't get a decent backtrace.