[Bug 767934] New: vaapidecoder_h265: critical memory leak

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Wed Jun 22 02:41:06 UTC 2016


https://bugzilla.gnome.org/show_bug.cgi?id=767934

            Bug ID: 767934
           Summary: vaapidecoder_h265: critical memory leak
    Classification: Platform
           Product: GStreamer
           Version: git master
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gstreamer-vaapi
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: zzoon at igalia.com
        QA Contact: gstreamer-bugs at lists.freedesktop.org
                CC: bsreerenj at gmail.com, vjaquez at igalia.com
     GNOME version: ---

Once I play h265 media like below,

GST_DEBUG="GST_TRACER:7" GST_TRACERS="leaks" gst-play-1.0 video-h265.mkv

During quit to play, it results in below.

0:00:01.573694986 12176      0x19bbe60 TRACE             GST_TRACER :0::
object-alive, type-name=(string)GstCaps, address=(gpointer)0x7f65bc056c50,
description=(string)image/jpeg; video/mpeg, mpegversion=(int)2,
profile=(string){ simple, main }; video/x-h264, profile=(string){ main, high,
constrained-baseline, multiview-high, stereo-high }; video/x-h265,
profile=(string)main; video/x-vp8; video/x-wmv, wmvversion=(int)3,
format=(string)WVC1, profile=(string)advanced; video/x-wmv, wmvversion=(int)3,
profile=(string){ simple, main }, ref-count=(uint)1;
0:00:01.573747091 12176      0x19bbe60 TRACE             GST_TRACER :0::
object-alive, type-name=(string)GstPad, address=(gpointer)0x7f65c4025b50,
description=(string)<vaapidecode:src>, ref-count=(uint)2;
0:00:01.573771883 12176      0x19bbe60 TRACE             GST_TRACER :0::
object-alive, type-name=(string)GstPad, address=(gpointer)0x7f65c4025910,
description=(string)<vaapidecode:sink>, ref-count=(uint)2;
0:00:01.573792458 12176      0x19bbe60 TRACE             GST_TRACER :0::
object-alive, type-name=(string)GstVaapiDecode,
address=(gpointer)0x7f65bc0431a0, description=(string)<vaapidecode>,
ref-count=(uint)1;

It shows GstVaapiDecode object is not released, it leads to that other caps and
pads are not released either. I think this leak causes a problem during seek,
too.

As far as I investigate, gst_vaapidecode_release is not being called enough,
which is doing unref GstVaapiDecode object.
Because dpb picture, which has a ref to surface proxy, is not released properly
during reset or close.

IMHO, we should re-implement the logic to remove all dpb pictures during reset
in h265 decoder, I guess current logic is wrong.

-- 
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