[gstreamer-bugs] [Bug 638914] New: Stopping and starting multiple time leaks resources

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Fri Jan 7 07:15:19 PST 2011


https://bugzilla.gnome.org/show_bug.cgi?id=638914
  GStreamer | gst-rtsp-server | git

           Summary: Stopping and starting multiple time leaks resources
    Classification: Desktop
           Product: GStreamer
           Version: git
        OS/Version: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-rtsp-server
        AssignedTo: gstreamer-bugs at lists.sourceforge.net
        ReportedBy: jonas at hallerud.se
         QAContact: gstreamer-bugs at lists.sourceforge.net
      GNOME target: ---
     GNOME version: ---


In my setting I must be able to totally deinitialize the server when not in use
to conserve resources (embedded in Android app). Simply unreffing the server
doesn't help. It doesn't close it's listening socket, so when started the next
time the listening port is already in use. The server also has refs to
GIOChannel and GSource which are never unreffed from what I can see.

For now, I've added code close the listening socket and unref GIOChannel and
GSource in gst_rtsp_server_finalize. It seems to work, but I'm a glib noob, so
I could be horribly wrong.

The caller of gst_rtsp_server_attach is responsible for detaching the server
from its context. If not done, GIOChannel and GSource will be left with
ref_count 1.

My updated gst_rtsp_server_finalize:

static void
gst_rtsp_server_finalize (GObject * object)
{
  GstRTSPServer *server = GST_RTSP_SERVER (object);

  g_free (server->address);
  g_free (server->service);

  g_object_unref (server->session_pool);
  g_object_unref (server->media_mapping);

  if (server->io_watch)
    g_source_unref (server->io_watch);
  if (server->io_channel)
    g_io_channel_unref (server->io_channel);
  if (server->server_sock.fd >= 0)
    close (server->server_sock.fd);
}

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.




More information about the Gstreamer-bugs mailing list