[Spice-devel] [PATCH 3/4] channel-display-gst: Don't unref appsink and pipeline objects
Kasireddy, Vivek
vivek.kasireddy at intel.com
Mon Sep 18 05:59:19 UTC 2023
Hi Frediano,
> >
> > It looks like setting the Gst pipeline state to GST_STATE_NULL
> > would cause all the references on most of the objects associated
> > with the pipeline to be dropped; therefore, there is no need
> > to explicitly unref them while freeing the pipeline. This patch
> > prevents the following errors from showing up when remote-viewer
> > is closed:
> >
> > (remote-viewer:64344): GStreamer-CRITICAL **: 00:31:04.278:
> > Trying to dispose object "appsink0", but it still has a parent
> > "pipeline0".
> > You need to let the parent manage the object instead of unreffing the
> > object directly.
> >
> > [MOS]: CRITICAL - mos_bo_unreference:166: Input null ptr
> >
> > [MOS]: CRITICAL - mos_bo_unreference:166: Input null ptr
> >
> > Cc: Frediano Ziglio <freddy77 at gmail.com>
> > Cc: Dongwon Kim <dongwon.kim at intel.com>
> > Cc: Jin Chung Teng <jin.chung.teng at intel.com>
> > Cc: Hazwan Arif Mazlan <hazwan.arif.mazlan at intel.com>
> > Signed-off-by: Vivek Kasireddy <vivek.kasireddy at intel.com>
> > ---
> > src/channel-display-gst.c | 4 ----
> > 1 file changed, 4 deletions(-)
> >
> > diff --git a/src/channel-display-gst.c b/src/channel-display-gst.c
> > index 3f46a65..ad0ac99 100644
> > --- a/src/channel-display-gst.c
> > +++ b/src/channel-display-gst.c
> > @@ -353,10 +353,6 @@ static void free_pipeline(SpiceGstDecoder
> *decoder)
> >
> > gst_element_set_state(decoder->pipeline, GST_STATE_NULL);
> > gst_object_unref(decoder->appsrc);
> > - if (decoder->appsink) {
> > - gst_object_unref(decoder->appsink);
> > - }
> > - gst_object_unref(decoder->pipeline);
>
> That's pretty odd. It looks like we are inserting a leak. Usually if
> you call gst_object_unref once more it causes an error like either a
> double free in glibc or an assert error in gstreamer. I'm sure we used
> this path so this should have happened.
> And to be honest reading the error it seems to suggest a different
> issue, like the appsink is still attached to the pipeline.
> Maybe unrefing pipeline before appsink fix the issue?
I tried that but it did not prevent the error from showing up. TBH, I noticed
these errors while using msdkh264dec on the decode side so I am not sure
if they show up if we use avdec_h264. Regardless, I guess I need to dig deep
to figure out why they are showing up instead of silencing them with this patch.
Thanks,
Vivek
> I personally didn't see this error before.
>
> > gst_object_unref(decoder->clock);
> > decoder->pipeline = NULL;
> > }
>
> Frediano
More information about the Spice-devel
mailing list