[gst-devel] segmentation fault creating a cap
Tim Müller
t.i.m at zen.co.uk
Wed Jan 3 10:45:29 CET 2007
On Tue, 2007-01-02 at 23:36 +0100, 25fps 48kHz wrote:
Hi,
> (...) So, i put my hands on punching some keys and modify the app
> to apply those properties to the cap. That led me to the segmentation
> fault I mentioned in the subject. I have attached below the code of
> the app (I can trace the segfault with gdb if desired). I can override
> the segmentation fault if, instead of using gst_caps_new_simple(), i
> create the cap with gst_caps_new_full().
> ...
> (..), and i get this error in stdout:
> GStreamer-CRITICAL **: gst_pad_set_caps: assertion `caps == NULL ||
> gst_caps_is_fixed (caps)' failed ) .
> ...
> So, the execution of the following piece of code printed in stdout
>
> GLib-GObject-WARNING **: can't peek value table for type `(null)'
> which is not currently referenced
>
> GLib-GObject-WARNING **: gvalue.c:96: cannot initialize GValue with
> type `(null)', this type has no GTypeValueTable implementation
>
> GLib-GObject-WARNING **: gtype.c:3337: type id `0' is invalid
>
> GLib-GObject-WARNING **: can't peek value table for type `<invalid>'
> which is not currently referenced
> Segmentation fault
The easiest thing to track this down is to make GLib abort on warnings,
with
$ export G_DEBUG=fatal_warnings
then it will break automatically in gdb and you can see exactly where
the warning comes from.
Some quick notes on your code:
- the "framerate" field should be a GST_TYPE_FRACTION in 0.10
(used to be a double in 0.8),
- that link_with_filter() function doesn't really look right - you
shouldn't
just set caps on a pad from an application. You should insert a
capsfilter
element and set your filtercaps on that to force a particular format.
The GStreamer function gst_element_link_filtered () will do this for
you.
Also, return values are always good to check, especially when linking
elements.
- a GMainLoop is not a GObject or a GstObject, you need to unref
it with g_main_loop_unref().
Cheers
-Tim
More information about the gstreamer-devel
mailing list