GNOME Bugzilla – Bug 755748
gst-rtsp-server: Retain reference to rtsp-media when preparing
Last modified: 2015-09-29 12:02:14 UTC
default_prepare() takes a transfer-none reference GstRTSPMedia object. Later on a g_idle_source_new() is created and a pointer to the media object is passed as user data. If the media is freed before the idle source is dispatched the media object pointer is invalid, but the idle source callback expects it to still be valid. To fix this a reference to the media object is taken when registering the source callback function and a corresponding release of the reference is done when the souce is destroyed. I have seen this happen in practice but I have unfortunately lost the log.
Created attachment 312315 [details] [review] Proposed patch.
commit 6f1cad9237956235e5cf326c1e6394e5ae39433a Author: Sebastian Rasmussen <sebras@hotmail.com> Date: Mon Sep 28 17:40:59 2015 +0200 rtsp-media: Take reference to media that will be prepared default_prepare() takes a transfer-none reference GstRTSPMedia object. Later on a g_idle_source_new() is created and a pointer to the media object is passed as user data. If the media is freed before the idle source is dispatched the media object pointer is invalid, but the idle source callback expects it to still be valid. To fix this a reference to the media object is taken when registering the source callback function and a corresponding release of the reference is done when the souce is destroyed. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=755748