After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 790623 - vaapi/qtsink: dmabuf exhaustion
vaapi/qtsink: dmabuf exhaustion
Status: RESOLVED INVALID
Product: GStreamer
Classification: Platform
Component: gstreamer-vaapi
1.12.3
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2017-11-20 15:29 UTC by Harvey
Modified: 2018-05-04 09:03 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
GStreamer log (1.31 KB, text/plain)
2017-11-20 15:29 UTC, Harvey
Details

Description Harvey 2017-11-20 15:29:30 UTC
Created attachment 364057 [details]
GStreamer log

We're playing a ~1 second video in Qt/QML 5.8 and using GStreamer 1.12.3 on both Ubuntu 16.04 and Yocto 2.3. The QML widget is set to auto-loop and after about 50-100 loops, the pipeline will crash with the attached log.

It's crashing here as best as we can tell:

https://github.com/GStreamer/gstreamer-vaapi/blob/master/gst/vaapi/gstvaapivideomemory.c#L1000
Comment 1 Víctor Manuel Jáquez Leal 2017-11-27 13:36:32 UTC
The question is why it cannot duplicate the DMABuf?

So the normal questions:

1\ what's the vainfo output? which hardware are you using?
2\ what's your pipeline?
3\ have you tried with other caps before the video sink?
Comment 2 pauldotknopf 2017-11-27 14:21:38 UTC
1)

error: XDG_RUNTIME_DIR not set in the environment.
libva info: VA-API version 0.39.4
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.39 (libva 1.7.3)
vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.7.3
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileH264MultiviewHigh      : VAEntrypointVLD
      VAProfileH264MultiviewHigh      : VAEntrypointEncSlice
      VAProfileH264StereoHigh         : VAEntrypointVLD
      VAProfileH264StereoHigh         : VAEntrypointEncSlice
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileVP8Version0_3          : VAEntrypointEncSlice
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointEncSlice

2) We are using the default gstreamer plugin built into Qt 8.0. It is using a playbin with a custom video-sink.

3) Again, this is "out-of-the-box" Qt 5.0's multimedia "MediaPlayer" qml element.
Comment 3 Víctor Manuel Jáquez Leal 2017-11-27 16:33:54 UTC
Ok.

Could you upload a log? Just export the environment variable

GST_DEBUG=vaapi*:5 and capture the stderr/stdout logs
Comment 4 Víctor Manuel Jáquez Leal 2017-11-27 16:34:51 UTC
aah...

perhaps the dmabuf descriptor got exhausted because they are not freed by the sink...
Comment 5 Víctor Manuel Jáquez Leal 2018-05-04 09:03:01 UTC
It seems it is a memleak in the application/framework which is not releasing the video buffers thus the fd exhaustion.

If you have more info which verifies that the leak is in gstreamer-vaapi please reopen.