On an Intel(R) Core(TM) i3-3220 CPU (on a H77 chipset board), using the following command line (I'll attach the media), I see a GPU hang delivering an error state: gst-launch-1.0 filesrc location=jet\ car\ from\ the\ bridge\ at\ santapod\ raceway\ central\ day\ 2012\ \(Low\).mp4 ! qtdemux ! vaapidecode ! vaapisink I can also reproduce the hang with: gst-launch-1.0 filesrc location=jet\ car\ from\ the\ bridge\ at\ santapod\ raceway\ central\ day\ 2012\ \(Low\).mp4 ! qtdemux ! queue ! vaapidecode ! queue ! vaapisink I'll attach the media and the error state. Relevant software versions: libva 1.3.1 intel-driver 1.3.1 gstreamer-vaapi from git revision a4bd8450 libdrm 2.4.54 kernel 3.14.4 I've built libva without GLX support, so I'm using an X11 display type xorg-server 1.14.4 xf86-video-intel 2.21.15
Created attachment 102022 [details] Error state from GPU hang The error state - shows BSD and BLT rings stuck.
Media file is too big to attach, so I've placed it at: http://90.155.96.198/sfarnsworth/jet%20car%20from%20the%20bridge%20at%20santapod%20raceway%20central%20day%202012%20(Low).mp4
Created attachment 102060 [details] [review] a workaround for this issue The root cause is that the codec layer passes the wrong parameters to the driver. It would be better to fix this issue in gstreamer-vaapi.
The attached patch prevents the GPU from hanging. Would it be possible to apply this workaround or a similar workaround to the driver, just to ensure that you don't trigger a GPU hang on faulty input data?
(In reply to comment #4) > The attached patch prevents the GPU from hanging. > > Would it be possible to apply this workaround or a similar workaround to the > driver, just to ensure that you don't trigger a GPU hang on faulty input > data? Haihao, please don't workaround, but add a patch that *errors* out if first_mb_in_slice < first_mb_in_slice of the previous slice. Arbitrary Slice Ordering is not supported (baseline profile feature). No need to check the profile, just check for that condition and return an error. Thanks.
Hi, Gwenole I will add the error checking in the driver to avoid GPU hang. Actually the profile of the sample video is constrained profile and there is a *real* bug in gstreamer-vaapi. Gstreamer vaapi mixes up the two consecutive IDR frames and FFmpeg-vaapi doesn't have this issue. So it would be better to fix this issue in gstreamer-vaapi. Thanks Haihao
Now another patch is pushed to the libva-intel-driver, which will check the first_mb_in_slice field of input slice_parameter. It will return the error status when it fails in the checking and prompts that the issue had better be fixed in upper-middleware. The commit id is : >commit 82d2ed8d7da3619c0ea467c06604f5626fc0b901 Author: Zhao Yakui <yakui.zhao@intel.com> Date: Wed Jul 23 13:46:17 2014 +0800 Add more check of H264 slice param to avoid GPU hang caused by the incorrect parameter Hi, Simon Will you please check it and see whether it work for you? Thanks. Yakui
*** This bug has been marked as a duplicate of bug 76363 ***
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.