Hang with NVIDIA driver when hardware decoding VP9 video. |
|||||
Issue descriptionThis seems to be causing a large fraction of hangs on Chrome Canary. We're only seeing this type of hang on NVIDIA drivers. The call stack is ntdll.dll RtlEnterCriticalSection MSVP9DEC.dll MMCSSLoader::MmcssUpdateThreadState(unsigned int) MSVP9DEC.dll execute MSVP9DEC.dll decode_one MSVP9DEC.dll decoder_decode MSVP9DEC.dll WebmMfVp8DecLib::WebmMfVp8Dec::SampleInfo::DecodeOne(vpx_codec_ctx &,__int64 &,__int64 &,_VPx_DXVA_Interface *,void *) MSVP9DEC.dll WebmMfVp8DecLib::WebmMfVp8Dec::Decode(IMFSample * &) MSVP9DEC.dll WebmMfVp8DecLib::WebmMfVp8Dec::ProcessOutput(unsigned long,unsigned long,_MFT_OUTPUT_DATA_BUFFER *,unsigned long *) chrome_child.dll media::DXVAVideoDecodeAccelerator::DoDecode(gfx::ColorSpace const &) chrome_child.dll media::DXVAVideoDecodeAccelerator::DecodeInternal(base::win::ScopedComPtr<IMFSample,&__s_GUID const _GUID_c40a00f2_b93a_4d80_ae8c_5a1c634f58e4> const &) chrome_child.dll base::internal::Invoker<base::internal::BindState<void ( media::DXVAVideoDecodeAccelerator::*)(base::win::ScopedComPtr<IMFSample,&__s_GUID const _GUID_c40a00f2_b93a_4d80_ae8c_5a1c634f58e4> const &),base::internal::UnretainedWrapper<media::DXVAVideoDecodeAccelerator>,base::win::ScopedComPtr<IMFSample,&__s_GUID const _GUID_c40a00f2_b93a_4d80_ae8c_5a1c634f58e4> >,void >::Run(base::internal::BindStateBase *) chrome_child.dll base::debug::TaskAnnotator::RunTask(char const *,base::PendingTask *) chrome_child.dll base::MessageLoop::RunTask(base::PendingTask *) chrome_child.dll base::MessageLoop::DoWork() chrome_child.dll base::MessagePumpDefault::Run(base::MessagePump::Delegate *) chrome_child.dll base::RunLoop::Run() chrome_child.dll base::Thread::Run(base::RunLoop *) chrome_child.dll base::Thread::ThreadMain() chrome_child.dll base::`anonymous namespace'::ThreadFunc KERNEL32.DLL BaseThreadInitThunk ntdll.dll __RtlUserThreadStart ntdll.dll _RtlUserThreadStart Before Intel fixed a driver bug we were seeing it there as well ( bug 654111 ), so it may be a similar type of issue. In that case the driver had an access violation exception, which msvp9dec.dll caught and ignored. It later hung, as I think it was in some unexpected state. Unfortunately I don't know that we have any repro cases. Intel had issues playing random 1080p60 videos on youtube (like https://www.youtube.com/watch?v=cU-nK4V5idY ), so it's possible NVIDIA has the same problem.
,
Dec 16 2016
,
Jan 10 2017
Do you have any additional data on this issue since it was filed? Any idea if it's affecting only specific driver versions or if newest drivers are affected?
,
Jan 10 2017
Issue 676925 contains another user's explanation of how to reproduce this. It looks like it's happening on all driver versions, including the newest, but I haven't really been able to reproduce it myself.
,
Jan 10 2017
Or at least, I haven't been able to repro it reliably. I think I've made it happen twice, in several hours of testing.
,
Jan 12 2017
Now that I've been able to repro it a bit, I think I understand this a bit better. The problem starts when an error is returned from msvp9dec!CVP9DXVAAllocator::GetDXVABuffers. The first argument to that is 0xff, which is compared to an element of CVP9DXVAAllocator which seems to be 0xf (equal to the array size of the output texture). 0xff > 0xf, so it returns an error, but nothing is passed along to chrome to indicate that there's a problem. The eventual hang may be caused by it being confused about which picture buffers are in use or not. I don't see any actual DXVA errors happening, so it's odd that I'm only seeing this on NVIDIA and not on Intel as well. It's hard enough to reproduce that maybe I've just gotten unlucky when trying, though by now I feel like I should have hit it.
,
Jan 17 2017
,
Jan 21 2017
I've got a new Windows machine at home with NVIDIA GeForce GTX 960. Installed Chrome stable (M55) and no VP9 video plays in Youtube. I confirmed that GpuVideoDecoder is used. AVC1 Youtube videos play fine. I suspect this is the same issue. I can reliably repro. Please let me know if there's anything I can help.
,
Jan 21 2017
As expected, the problem is "fixed" when I disable hardware video decoding.
,
Jan 24 2017
xhwang@: I haven't heard of any issues with VP9 videos failing to play completely. All the reports I've seen only happen occasionally when seeking the video. Are there any errors in about:gpu after this happens? Does the GPU process hang when this happens, or is it just that the video never starts playing?
,
Jan 24 2017
jbauman: Thanks for the info. I'll file a new bug tonight when I get home with the info you asked about.
,
Jan 26 2017
,
Apr 12 2017
I think the hang is now much less common with the windows creators update.
,
Apr 20 2017
,
May 22 2017
I easily reproduce this bug on 58.0.3029.110 (64-bit) + NVIDIA GTX 1050 + Win 10 Steps to reproduce: Open simultaneously the following links https://www.youtube.com/watch?v=7j2d98gzTME https://www.youtube.com/watch?v=YwlrKfLeRfs https://www.youtube.com/watch?v=WgNN9uaeubw https://www.youtube.com/watch?v=-1grf3tjXs4 https://www.youtube.com/watch?v=lfF8BT3pYQg https://www.youtube.com/watch?v=i8iIK0uxUnc In 5-10 seconds GPU process hangs. If to kill it playback continues for 5-10 seconds and hangs again. GPU process command line: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --type=gpu-process --field-trial-handle=1280 --supports-dual-gpus=false --gpu-driver-bug-workarounds=7,10,19,20,23,41,74 --disable-gl-extensions="GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent" --gpu-vendor-id=0x10de --gpu-device-id=0x1c81 --gpu-driver-vendor=NVIDIA --gpu-driver-version=22.21.13.8205 --gpu-driver-date=5-1-2017 --service-request-channel-token=01AA900C5893CCEE2A8CF000179B9233 --mojo-platform-channel-handle=1740 --ignored=" --type=renderer " /prefetch:2 Full memory dump of GPU process: https://drive.google.com/open?id=0B0La6-dcJau4cXpwR1o4eVFwVm8
,
May 22 2017
#15, that's still on Anniversary update, right? Creators Update should fix that. I'm tempted to blacklist VP9 hardware decoding on Anniversary update because of this.
,
May 23 2017
Yes, it's an Anniversary update. 10.0.14393
,
May 25 2017
Could someone take a look at https://codereview.chromium.org/2902313003
,
May 31 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/e79d64564bb28322975a1b7b812d2c9331bd14ee commit e79d64564bb28322975a1b7b812d2c9331bd14ee Author: weisert <weisert@yandex-team.ru> Date: Wed May 31 03:29:45 2017 Disable hardware acceleration for vp9 on Win 10 until Creators Update. R=dalecurtis@chromium.org BUG= 667532 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel Review-Url: https://codereview.chromium.org/2902313003 Cr-Commit-Position: refs/heads/master@{#475769} [modify] https://crrev.com/e79d64564bb28322975a1b7b812d2c9331bd14ee/gpu/config/gpu_driver_bug_list.json
,
Aug 7 2017
Fixed by creators update (and now blacklisted on versions before creators update).
,
May 13 2018
The above r475769 says it's for Windows 10 but actually it disables the feature also on Windows 7 and 8.1. Was it intended? I don't seem to encounter any issues using Win7 + nVidia + youtube vp9 4k 60fps after reverting the CL. Should I open a new issue?
,
May 14 2018
Hmm, I thought we only had support for the Microsoft MFT which is Win10 only I thought? Do you know the mechanism by which you're getting hw vp9 decode on Win7?
,
May 14 2018
Hmm, it doesn't actually utilize GPU judging by the CPU load and chrome://gpu. On the other hand, my nVidia GPU is old and can't decode VP9 directly anyway. Well, I guess that CL is intended to disable VPx on Windows 7/8.1, it's just the message was somewhat incomplete and thus mislead me.
,
May 14 2018
Gotcha, thanks for clarifying. Yes that CL only disabled _hardware_ vp9 decoding on Win10 prior to the creator's update. We support software vp9 decoding at all resolutions on all platforms where hardware decoding is unavailable. |
|||||
►
Sign in to add a comment |
|||||
Comment 1 by jbau...@chromium.org
, Nov 22 2016