[Bug 771524] New: GPU reset and pipeline hangs randomly when using low-power tune

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Fri Sep 16 10:08:14 UTC 2016


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

            Bug ID: 771524
           Summary: GPU reset and pipeline hangs randomly when using
                    low-power tune
    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: florent.thiery at ubicast.eu
        QA Contact: gstreamer-bugs at lists.freedesktop.org
                CC: bsreerenj at gmail.com, vjaquez at igalia.com
     GNOME version: ---

OS: Arch
Kernel: 4.7.3-2-ARCH
libdrm 2.4.70
libva: 1.7.1
libva-intel-driver: 1.7.1
GPU: Intel Iris Pro 580 (Skull Canyon NUC)
Running headless (no xorg)
gstreamer-vaapi commit: 9afa0ce47169cc91aa212dcf7db375a64244c0ba

Running the following pipeline twice in a row (quickly) will result in the
pipeline hanging randomly:

gst-launch-1.0 videotestsrc num-buffers=100 ! video/x-raw\,\
format\=\(string\)I420\,\ width\=\(int\)1920\,\ height\=\(int\)1080\,\
framerate\=\(fraction\)30/1 ! vaapih264enc tune=low-power ! fakesink
silent=false -v

When this happens, the following gstreamer error is displayed: 

vaapiencode gstvaapiencode.c:210:gst_vaapiencode_default_alloc_buffer: invalid
GstVaapiCodedBuffer size (0 bytes)

And in the kernel logs:
[ 6130.436724] [drm] stuck on bsd2 ring
[ 6130.437427] [drm] GPU HANG: ecode 9:3:0xcb79ffc4, in encoder:src [912],
reason: Engine(s) hung, action: reset
[ 6130.437431] [drm] GPU hangs can indicate a bug anywhere in the entire gfx
stack, including userspace.
[ 6130.437433] [drm] Please file a _new_ bug report on bugs.freedesktop.org
against DRI -> DRM/Intel
[ 6130.437436] [drm] drm/i915 developers can then reassign to the right
component if it's not a kernel issue.
[ 6130.437438] [drm] The gpu crash dump is required to analyze gpu hangs, so
please always attach it.
[ 6130.437440] [drm] GPU crash dump saved to /sys/class/drm/card0/error
[ 6130.438994] drm/i915: Resetting chip after gpu hang
[ 6132.423434] [drm] RC6 on

[fthiery at skull gstreamer-benchmarks]$ gst-launch-1.0 videotestsrc
num-buffers=100 ! video/x-raw\,\ format\=\(string\)I420\,\
width\=\(int\)1920\,\ height\=\(int\)1080\,\ framerate\=\(fraction\)30/1 !
vaapih264enc tune=low-power ! fakesink silent=false -v
libva info: VA-API version 0.39.2
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
libva info: VA-API version 0.39.2
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
Setting pipeline to PAUSED ...
libva info: VA-API version 0.39.2
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
Pipeline is PREROLLING ...
Got context from element 'vaapiencodeh264-0': gst.vaapi.Display=context,
gst.vaapi.Display=(GstVaapiDisplay)NULL;
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps =
video/x-raw, format=(string)I420, width=(int)1920, height=(int)1080,
framerate=(fraction)30/1, interlace-mode=(string)progressive,
pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps =
video/x-raw, format=(string)I420, width=(int)1920, height=(int)1080,
framerate=(fraction)30/1, interlace-mode=(string)progressive,
pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstVaapiEncodeH264:vaapiencodeh264-0.GstPad:sink: caps =
video/x-raw, format=(string)I420, width=(int)1920, height=(int)1080,
framerate=(fraction)30/1, interlace-mode=(string)progressive,
pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps =
video/x-raw, format=(string)I420, width=(int)1920, height=(int)1080,
framerate=(fraction)30/1, interlace-mode=(string)progressive,
pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = event   *******
(fakesink0:sink) E (type: stream-start (10254), GstEventStreamStart,
stream-id=(string)f19a7558e50ff7c63fc4b3831013cb76,
flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)0;) 0xda30f0
/GstPipeline:pipeline0/GstVaapiEncodeH264:vaapiencodeh264-0.GstPad:src: caps =
video/x-h264, stream-format=(string)byte-stream, alignment=(string)au,
width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1,
framerate=(fraction)30/1
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = event   *******
(fakesink0:sink) E (type: caps (12814), GstEventCaps,
caps=(GstCaps)"video/x-h264\,\ stream-format\=\(string\)byte-stream\,\
alignment\=\(string\)au\,\ width\=\(int\)1920\,\ height\=\(int\)1080\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\ framerate\=\(fraction\)30/1";)
0x7f3de8002830
/GstPipeline:pipeline0/GstFakeSink:fakesink0.GstPad:sink: caps = video/x-h264,
stream-format=(string)byte-stream, alignment=(string)au, width=(int)1920,
height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = event   *******
(fakesink0:sink) E (type: segment (17934), GstEventSegment,
segment=(GstSegment)"GstSegment, flags=(GstSegmentFlags)GST_SEGMENT_FLAG_NONE,
rate=(double)1, applied-rate=(double)1, format=(GstFormat)GST_FORMAT_TIME,
base=(guint64)0, offset=(guint64)0, start=(guint64)0,
stop=(guint64)18446744073709551615, time=(guint64)0, position=(guint64)0,
duration=(guint64)18446744073709551615;";) 0x7f3de80028a0
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = preroll   ******* 
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain   *******
(fakesink0:sink) (77009 bytes, dts: 0:00:00.000000000, pts: none, duration:
0:00:00.033333333, offset: -1, offset_end: -1, flags: 00000040 discont )
0x7f3df00236d0
...
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = chain   *******
(fakesink0:sink) (77091 bytes, dts: 0:00:01.500000000, pts: 0:00:01.499999999,
duration: 0:00:00.033333333, offset: -1, offset_end: -1, flags: 00002000
delta-unit ) 0x7f3df002a240
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:00.832002271
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
[fthiery at skull gstreamer-benchmarks]$ gst-launch-1.0 videotestsrc
num-buffers=100 ! video/x-raw\,\ format\=\(string\)I420\,\
width\=\(int\)1920\,\ height\=\(int\)1080\,\ framerate\=\(fraction\)30/1 !
vaapih264enc tune=low-power ! fakesink silent=false -v
libva info: VA-API version 0.39.2
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
Setting pipeline to PAUSED ...
libva info: VA-API version 0.39.2
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
Pipeline is PREROLLING ...
Got context from element 'vaapiencodeh264-0': gst.vaapi.Display=context,
gst.vaapi.Display=(GstVaapiDisplay)NULL;
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps =
video/x-raw, format=(string)I420, width=(int)1920, height=(int)1080,
framerate=(fraction)30/1, interlace-mode=(string)progressive,
pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps =
video/x-raw, format=(string)I420, width=(int)1920, height=(int)1080,
framerate=(fraction)30/1, interlace-mode=(string)progressive,
pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstVaapiEncodeH264:vaapiencodeh264-0.GstPad:sink: caps =
video/x-raw, format=(string)I420, width=(int)1920, height=(int)1080,
framerate=(fraction)30/1, interlace-mode=(string)progressive,
pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps =
video/x-raw, format=(string)I420, width=(int)1920, height=(int)1080,
framerate=(fraction)30/1, interlace-mode=(string)progressive,
pixel-aspect-ratio=(fraction)1/1
^Chandling interrupt.
Interrupt: Stopping pipeline ...
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...

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