[gst-devel] Re: memory leak in a program
Vincent Torri
Vincent.Torri at iecn.u-nancy.fr
Wed Feb 8 01:37:06 CET 2006
Is that program better :
#include <gst/gst.h>
int
main (int argc, char *argv[])
{
GstElement *pipeline;
GstElement *filesrc;
GstElement *decodebin;
GstStateChangeReturn res;
gst_init (&argc, &argv);
pipeline = gst_pipeline_new ("pipeline");
filesrc = gst_element_factory_make ("filesrc", "filesrc");
g_assert (filesrc);
g_object_set (G_OBJECT (filesrc), "location", argv[1], NULL);
decodebin = gst_element_factory_make ("decodebin", "decodebin");
g_assert (decodebin);
gst_bin_add_many (GST_BIN (pipeline), filesrc, decodebin, NULL);
gst_element_link (filesrc, decodebin);
res = gst_element_set_state (pipeline, GST_STATE_PAUSED);
if (res == GST_STATE_CHANGE_FAILURE) {
printf ("Could not go to PAUSED state\n");
gst_object_unref (pipeline);
return 0;
}
res = gst_element_get_state (pipeline, NULL, NULL, GST_CLOCK_TIME_NONE);
if (res != GST_STATE_CHANGE_SUCCESS) {
printf ("Failed to complete state change to PAUSED\n");
gst_object_unref (pipeline);
return 0;
}
gst_element_set_state (pipeline, GST_STATE_NULL);
gst_object_unref (pipeline);
gst_deinit ();
return 1;
}
?
the leak is always here.
Vincent
On Wed, 8 Feb 2006, Jan Schmidt wrote:
> gst_element_set_state (pipeline, GST_STATE_NULL) can return
> GST_STATE_CHANGE_ASYNC to indicate that it's returning to NULL in a
> background thread. In that case, you need to wait for the state change
> to complete with gst_element_get_state, otherwise you'll exit the
> program before the background thread has finished shutting down.
>
> J.
>
> On Wed, 2006-02-08 at 08:23 +0100, Vincent Torri wrote:
> > It seems that it suffices that decodebin is in the PAUSE state to have
> > that leak. For example:
> >
> > #include <gst/gst.h>
> >
> > int
> > main (int argc, char *argv[])
> > {
> > GstElement *pipeline;
> > GstElement *filesrc;
> > GstElement *decodebin;
> >
> > gst_init (&argc, &argv);
> >
> > pipeline = gst_pipeline_new ("pipeline");
> >
> > filesrc = gst_element_factory_make ("filesrc", "filesrc");
> > g_assert (filesrc);
> > g_object_set (G_OBJECT (filesrc), "location", argv[1], NULL);
> >
> > decodebin = gst_element_factory_make ("decodebin", "decodebin");
> > g_assert (decodebin);
> >
> > gst_bin_add_many (GST_BIN (pipeline), filesrc, decodebin, NULL);
> > gst_element_link (filesrc, decodebin);
> >
> > gst_element_set_state (pipeline, GST_STATE_PAUSED);
> >
> > gst_element_set_state (pipeline, GST_STATE_NULL);
> > gst_object_unref (pipeline);
> >
> > gst_deinit ();
> >
> > return 1;
> > }
> >
> >
> > Vincent
> >
> > On Tue, 7 Feb 2006, Vincent Torri wrote:
> >
> > >
> > > hello, i'm writing a small program that print the informations of a media
> > > file to a terminal (named eic_cli)
> > >
> > > when I run valgrind on it, I get some memory leak :
> > >
> > > http://rafb.net/paste/results/yGuWx426.html
> > >
> > > the program can be downloaded here :
> > >
> > > http://www.iecn.u-nancy.fr/~torri/files/eic-0.1.tar.gz
> > >
> > > i don't know if the problem comes from my program or gstreamer (0.10, cvs,
> > > taken 2 days ago). When I quit the main function, I set the pipeline to
> > > the NULL state and I unref it (lines 380 and 381 of eic.c). I don't know
> > > if it's sufficient.
> > >
> > > Vincent Torri
> > >
> >
> >
> > -------------------------------------------------------
> > This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
> > for problems? Stop! Download the new AJAX search engine that makes
> > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
> > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
> > _______________________________________________
> > gstreamer-devel mailing list
> > gstreamer-devel at lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> >
>
> --
> Jan Schmidt thaytan at noraisin.net
>
> <stibbons> Yeah. The whole climax thing would make much more sense
> if I'd paid attention.
>
>
>
>
> -------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
> for problems? Stop! Download the new AJAX search engine that makes
> searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
> _______________________________________________
> 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