[gst-devel] Gdb - help with debbug

Wim Taymans wim.taymans at gmail.com
Thu May 7 10:33:11 CEST 2009


On Thu, 2009-05-07 at 00:09 -0300, Guilherme wrote:

Guilherme,

Your code does not make sense, you pass unitialized data to a library
function that is usually not used from an application.

You also seem to construct a pipeline that is not doing very much. What
is it that you are trying to do?

I would suggest to read the documentation here and get back to us with
what is not clear enough about it:

http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/index.html

Wim

> Antoine, I have the whole profile of the problem now.
> Plz, if you could give me a help with that.
> 
> (gdb) run
> Starting program: /home/guilherme/EBA
> [Thread debugging using libthread_db enabled]
> [New Thread 0xb7ad09b0 (LWP 3585)]
> 
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 0xb7ad09b0 (LWP 3585)]
> 0xb7e9e582 in g_type_check_instance_cast () from 
> /usr/lib/libgobject-2.0.so.0
> (gdb) backtrace
> #0  0xb7e9e582 in g_type_check_instance_cast () from 
> /usr/lib/libgobject-2.0.so.0
> #1  0x08048a5b in main ()
> (gdb) valgrind
> Undefined command: "valgrind".  Try "help".
> (gdb) bt
> #0  0xb7e9e582 in g_type_check_instance_cast () from 
> /usr/lib/libgobject-2.0.so.0
> #1  0x08048a5b in main ()
> (gdb)
> 
> 
> And my code:
> 
> #include<gst/gst.h>
> #include<glib.h>
> #include<gst/fft/gstffts16.h>
> 
> static gboolean bus_call(GstBus *bus, GstMessage *msg, gpointer data);
> 
> int main(int argc, char *argv[])
> {
>     GMainLoop *loop;
>    
>     GstElement *pipeline, *source, *filesink;
>     GstBus *bus;
>     GstFFTS16 *fft;
>  
>       gint16 td;
>     gint16 *timedata = &td;
>    
>     gint16 bufferin;
>     gint16 *in = &bufferin;
>        
>     GstFFTS16Complex fq;
>     GstFFTS16Complex *freq = &fq;
>    
>        
>     /*const gint16 *in;*/
>     /*GstFFTS16Complex *freq;*/
>      
>    
>     gst_init(&argc, &argv);
>    
>     loop = g_main_loop_new (NULL, FALSE);
>    
>     /*creating elements*/
>     pipeline      = gst_pipeline_new          ("audio-player");
>     source        = gst_element_factory_make  ("audiotestsrc", 
> "file-source");
>     fft           = gst_fft_s16_new           (128, FALSE);
>     filesink      = gst_element_factory_make  ("alsasink",     
> "audio-output");
>    
>    
>    
>     if (!pipeline || !source || !fft || !filesink) {
>         g_printerr ("One element could not be created. Exiting.\n");
>         return -1;
>     }
>    
>     /*set-up the pipeline*/
>    
>     /*set up fft transform*/
>     /*gst_fft_s16_window(fft, timedata, GST_FFT_WINDOW_RECTANGULAR);*/
>     gst_fft_s16_fft (fft, in, freq);
>    
> 
>     /*message handler*/
>     bus =  gst_pipeline_get_bus (GST_PIPELINE (pipeline));
>     gst_bus_add_watch (bus, bus_call, loop);   
>     gst_object_unref (bus);
>    
>     /*colocar todos elementos na pipeline*/
>     gst_bin_add_many (GST_BIN (pipeline), source, filesink, NULL);
>                            
>     /*Linkar elementos*/
>     /*Cria o link entre os pads dos elementos*/
>     gst_element_link_many (source, filesink, NULL);
>  
>    
>     /* set pipeline playing status */
>     gst_element_set_state (pipeline, GST_STATE_PLAYING);
>     g_print ("Running...\n");
>    
>     /*iterate*/   
>     g_main_loop_run (loop);
>     g_print ("Recording\n");
>    
>     /* Out of the main loop, clean up nicely */
>    g_print ("Returned, stopping playback\n");
>    gst_element_set_state (pipeline, GST_STATE_NULL);
> 
>    g_print ("Deleting pipeline\n");
>    gst_object_unref (GST_OBJECT (pipeline));
> 
>   return 0;
> }
> 
> static gboolean bus_call(GstBus *bus, GstMessage *msg, gpointer data) {
> 
>     return TRUE;
> }
> 
> 
> 
> 
> 
> Can't really figure out what is gong on!
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Tks!
> 
> -------------------
> 
> Guilherme Longo
> Dept. Eng. da Computação
> Unaerp
> 
> Linux User - #484927
> 
> *Before Asking
> http://www.istf.com.br/?page=perguntas
> 
> !- I'd rather die on my feet than live on my knees -!
> 
> 
> 
> Antoine Tremblay wrote:
> > Did you try a backtrace ?
> >
> > Type bt <enter> in gdb ..
> >
> > It will show you the backtrace of the sigsegv and thus the line that 
> > failed...
> >
> > If not you can always try valgrind ...
> >
> >
> > On Wed, May 6, 2009 at 7:59 PM, Guilherme <grlongo.ireland at gmail.com 
> > <mailto:grlongo.ireland at gmail.com>> wrote:
> >
> >     Hi all.
> >
> >     I finished building my code and it's compiled without any error, but
> >     when I run it I get the beautiful segmentation fault.
> >
> >     No good.
> >
> >     Running gdb I can't get the line of the problem, instead I have this:
> >
> >     (gdb) run
> >     Starting program: /home/guilherme/EBA
> >     [Thread debugging using libthread_db enabled]
> >     [New Thread 0xb7a479b0 (LWP 5565)]
> >
> >     Program received signal SIGSEGV, Segmentation fault.
> >     [Switching to Thread 0xb7a479b0 (LWP 5565)]
> >     0xb7bf2234 in ?? () from /usr/lib/libgstfft-0.10.so.0
> >
> >     Is this a normal debug or I'm doing smth wrong?
> >     It seen a problem with my fft implementation. That is the code:
> >
> >
> >              #include<gst/gst.h>
> >
> >
> >              #include<glib.h>
> >
> >
> >              #include<gst/fft/gstffts16.h>
> >
> >
> >
> >              static gboolean bus_call(GstBus *bus, GstMessage *msg,
> >              gpointer data);
> >
> >
> >
> >              int main(int argc, char *argv[])
> >
> >
> >              {
> >
> >
> >                  GMainLoop *loop;
> >
> >
> >
> >
> >
> >                  GstElement *pipeline, *source, *filesink;
> >
> >
> >                  GstBus *bus;
> >
> >
> >                  GstBuffer *buffer;
> >
> >
> >                  GstFFTS16 *fft;
> >
> >
> >
> >
> >
> >                  const gint16 *in;
> >
> >
> >                  GstFFTS16Complex *freq;
> >
> >
> >
> >
> >
> >                  gst_init(&argc, &argv);
> >
> >
> >
> >
> >
> >                  loop = g_main_loop_new (NULL, FALSE);
> >
> >
> >
> >
> >
> >                  /*creating elements*/
> >
> >
> >                  pipeline      = gst_pipeline_new        
> >      ("audio-player");
> >
> >
> >                  source        = gst_element_factory_make
> >      ("audiotestsrc",
> >              "file-source");
> >
> >
> >                  filesink      = gst_element_factory_make  ("alsasink",
> >              "audio-output");
> >
> >
> >                  fft           = gst_fft_s16_new           (128, FALSE);
> >
> >
> >
> >
> >
> >
> >
> >
> >                  if (!pipeline || !source || !filesink) {
> >
> >
> >                      g_printerr ("One element could not be created.
> >              Exiting.\n");
> >
> >
> >                      return -1;
> >
> >
> >                  }
> >
> >
> >
> >
> >
> >                  /*set-up the pipeline*/
> >
> >
> >
> >
> >
> >                  /*create and set up buffer*/
> >
> >
> >                  g_print ("\n\nCreating Buffer\n");
> >
> >
> >                  buffer = gst_buffer_new();
> >
> >
> >                  if(!buffer)
> >
> >
> >                      g_printerr ("buffer could not be created\n");
> >
> >
> >                  else
> >
> >
> >                      g_print ("Buffer Created\n\n");
> >
> >
> >
> >
> >
> >                  /*set up fft transform*/
> >
> >
> >                  gst_fft_s16_fft (fft, in, freq);
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >                  /*message handler*/
> >
> >
> >                  bus =  gst_pipeline_get_bus (GST_PIPELINE (pipeline));
> >
> >
> >                  gst_bus_add_watch (bus, bus_call, loop);
> >
> >
> >                  gst_object_unref (bus);
> >
> >
> >
> >
> >
> >                  /*colocar todos elementos na pipeline*/
> >
> >
> >                  gst_bin_add_many (GST_BIN (pipeline), source,
> >     filesink, NULL);
> >
> >
> >
> >
> >
> >                  /*Linkar elementos*/
> >
> >
> >                  /*Cria o link entre os pads dos elementos*/
> >
> >
> >                  gst_element_link_many (source, filesink, NULL);
> >
> >
> >
> >
> >
> >
> >
> >
> >                  /* set pipeline playing status */
> >
> >
> >                  gst_element_set_state (pipeline, GST_STATE_PLAYING);
> >
> >
> >                  g_print ("Running...\n");
> >
> >
> >
> >
> >
> >                  /*iterate*/
> >
> >
> >                  g_main_loop_run (loop);
> >
> >
> >                  g_print ("Recording\n");
> >
> >
> >
> >
> >
> >                  /* Out of the main loop, clean up nicely */
> >
> >
> >                 g_print ("Returned, stopping playback\n");
> >
> >
> >                 gst_element_set_state (pipeline, GST_STATE_NULL);
> >
> >
> >
> >                 g_print ("Deleting pipeline\n");
> >
> >
> >                 gst_object_unref (GST_OBJECT (pipeline));
> >
> >
> >
> >                return 0;
> >
> >
> >              }
> >
> >
> >
> >              static gboolean bus_call(GstBus *bus, GstMessage *msg,
> >              gpointer data) {
> >
> >
> >
> >                  return TRUE;
> >
> >
> >              }
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >     ------------------------------------------------------------------------------
> >     The NEW KODAK i700 Series Scanners deliver under ANY
> >     circumstances! Your
> >     production scanning environment may not be a perfect world - but
> >     thanks to
> >     Kodak, there's a perfect scanner to get the job done! With the NEW
> >     KODAK i700
> >     Series Scanner you'll get full speed at 300 dpi even with all image
> >     processing features enabled. http://p.sf.net/sfu/kodak-com
> >     _______________________________________________
> >     gstreamer-devel mailing list
> >     gstreamer-devel at lists.sourceforge.net
> >     <mailto:gstreamer-devel at lists.sourceforge.net>
> >     https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> >
> >
> > ------------------------------------------------------------------------
> >
> > ------------------------------------------------------------------------------
> > The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
> > production scanning environment may not be a perfect world - but thanks to
> > Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
> > Series Scanner you'll get full speed at 300 dpi even with all image 
> > processing features enabled. http://p.sf.net/sfu/kodak-com
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > gstreamer-devel mailing list
> > gstreamer-devel at lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> >   
> 
> ------------------------------------------------------------------------------
> The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
> production scanning environment may not be a perfect world - but thanks to
> Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
> Series Scanner you'll get full speed at 300 dpi even with all image 
> processing features enabled. http://p.sf.net/sfu/kodak-com
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel





More information about the gstreamer-devel mailing list