Segmentation Fault

Krzysztof Konopko krzysztof.konopko at youview.com
Sat Jan 5 05:50:33 PST 2013


Hi Ian,

When everything else fails I usually RTFM :) :

gst-inspect-1.0 capsfilter
...

 caps                : Restrict the possible allowed capabilities (NULL
means ANY). Setting this property takes a reference to the supplied
GstCaps object.
                        flags: readable, writable
                           ANY

The 'caps' property takes *a reference to the supplied GstCaps object*,
not a string pointer. I guess gst-launch-1.0 converts the string from
the command line into a GstCaps object. And you should do so [1].

[1]
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstCaps.html#gst-caps-from-string

Kris

On 05/01/13 13:44, Ian Davidson wrote:
> Hi Kris,
> 
> I made the change as you suggested - but it still core dumped.
> 
> Below is what I got out of gdb.
> 
> I can see that it shows I went into capsfilter_set_property - but then
> goes into debug stuff.  Is there something wrong with what I am trying
> to set? (It seemed OK from the command line as part of gst-launch.)
> 
> 
> [ian at localhost GSTstuff]$ gdb --core=core.2517 ./SBCRecord
> GNU gdb (GDB) Fedora (7.5.1-32.fc18)
> Copyright (C) 2012 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 "x86_64-redhat-linux-gnu".
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>...
> Reading symbols from /home/ian/GSTstuff/SBCRecord...(no debugging
> symbols found)...done.
> [New LWP 2517]
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib64/libthread_db.so.1".
> Core was generated by `./SBCRecord --gst-debug-level=9 test.avi'.
> Program terminated with signal 11, Segmentation fault.
> #0  0x000000364ec51a73 in gst_debug_print_object () from
> /lib64/libgstreamer-1.0.so.0
> Missing separate debuginfos, use: debuginfo-install
> alsa-lib-1.0.26-2.fc18.x86_64 glib2-2.34.2-1.fc18.x86_64
> glibc-2.16-28.fc18.x86_64 gstreamer1-1.0.4-1.fc18.x86_64
> gstreamer1-plugins-base-1.0.4-1.fc18.x86_64
> gstreamer1-plugins-good-1.0.4-1.fc18.x86_64 libffi-3.0.10-3.fc18.x86_64
> libjpeg-turbo-1.2.1-3.fc18.x86_64 libv4l-0.8.8-3.fc18.x86_64
> orc-0.4.16-6.fc18.x86_64 zlib-1.2.7-9.fc18.x86_64
> (gdb) bt
> #0  0x000000364ec51a73 in gst_debug_print_object () from
> /lib64/libgstreamer-1.0.so.0
> #1  0x000000364ec523b4 in _gst_info_printf_extension_ptr () from
> /lib64/libgstreamer-1.0.so.0
> #2  0x00000035ef44887d in vfprintf () from /lib64/libc.so.6
> #3  0x00000035ef50a0e1 in __vasprintf_chk () from /lib64/libc.so.6
> #4  0x00000035f1c845ab in g_vasprintf () from /lib64/libglib-2.0.so.0
> #5  0x00000035f1c640cd in g_strdup_vprintf () from /lib64/libglib-2.0.so.0
> #6  0x000000364ec5267d in gst_debug_message_get () from
> /lib64/libgstreamer-1.0.so.0
> #7  0x000000364ec538a0 in gst_debug_log_default () from
> /lib64/libgstreamer-1.0.so.0
> #8  0x000000364ec524ec in gst_debug_log_valist () from
> /lib64/libgstreamer-1.0.so.0
> #9  0x000000364ec52657 in gst_debug_log () from /lib64/libgstreamer-1.0.so.0
> #10 0x00007f00173dc3c4 in gst_capsfilter_set_property () from
> /usr/lib64/gstreamer-1.0/libgstcoreelements.so
> #11 0x00000035f2816df4 in g_object_set_valist () from
> /lib64/libgobject-2.0.so.0
> #12 0x00000035f2817607 in g_object_set () from /lib64/libgobject-2.0.so.0
> #13 0x00000000004012d6 in main ()
> 
> 
> 
> On 05/01/2013 11:53, Krzysztof Konopko wrote:
>> Hi Ian,
>>
>> To me the caps value passed as a constant (a literal) looks suspicious.
>> Try something like this:
>>
>> gchar caps_value[] = "your value goes here";
>>
>> and then
>>
>> g_object_set (G_OBJECT (vcapsfilter), "caps", caps_value, NULL);
>>
>> That's just my guess as OTH passing a literal value should result in a
>> pointer pointing to some location in the DATA section which should be
>> fine. Hm...
>>
>> To find out what actually happened use:
>>
>> gdb --core=<core file> <your app>
>>
>> and then in GDB:
>> bt
>>
>> If you don't actually get a core file, use (before you run your crashing
>> app):
>> ulimit -c unlimited
>>
>> HTH,
>> Kris
>>
>> On 05/01/13 09:12, Ian Davidson wrote:
>>> I am trying to write a GStreamer app where I  use a caps filter.  I have
>>>
>>>   vcapsfilter  = gst_element_factory_make ("capsfilter", "vid-caps");
>>>
>>> which appears to have been successful.
>>>
>>> Then I tried
>>>
>>>   g_object_set (G_OBJECT (vcapsfilter), "caps",
>>> "video/x-raw,format=(string)I420,width=320,height=240,framerate=(fraction)25/1",
>>> NULL);
>>>
>>> When my program comes to execute that line I get a "Segmentation fault
>>> (core dumped)" message.  I suspect that I must be doing something wrong
>>> <grin>, but I don't know what I should be doing.  I have tried to wind
>>> up the debug level to 9 but absolutely nothing gets logged.
>>>
>>> Ian
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
> 
> -- 
> --
> Ian Davidson
> /239 Streetsbrook Road, Solihull, West Midlands, B91 1HE/
> --
> Facts used in this message may or may not reflect an underlying
> objective reality. Facts are supplied for personal use only.
> Recipients quoting supplied information do so at their own risk. Facts
> supplied may vary in whole or part from widely accepted standards.
> While painstakingly researched, facts may or may not be indicative of
> actually occurring events or natural phenomena.
> The author accepts no responsibility for personal loss or injury
> resulting from memorisation and subsequent use.



More information about the gstreamer-devel mailing list