New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 667532 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
not on Chrome anymore
Closed: Aug 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 1
Type: Bug

Blocking:
issue 613701



Sign in to add a comment

Hang with NVIDIA driver when hardware decoding VP9 video.

Project Member Reported by jbau...@chromium.org, Nov 21 2016

Issue description

This 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.
 
See also  bug 658568 . It looks like for that person it always happens when seeking a youtube video.

Comment 2 by danakj@chromium.org, Dec 16 2016

Owner: vmi...@chromium.org
Status: Untriaged (was: Available)

Comment 3 by oetu...@nvidia.com, 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?
 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.
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.
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.
Status: Assigned (was: Untriaged)

Comment 8 by xhw...@chromium.org, 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.

Comment 9 by xhw...@chromium.org, Jan 21 2017

As expected, the problem is "fixed" when I disable hardware video decoding.
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?
jbauman: Thanks for the info. I'll file a new bug tonight when I get home with the info you asked about.
Cc: vmi...@chromium.org
Owner: jbau...@chromium.org
I think the hang is now much less common with the windows creators update.
Cc: jmukthavaram@chromium.org jbau...@chromium.org
 Issue 710735  has been merged into this issue.
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

#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.
Yes, it's an Anniversary update. 10.0.14393
Could someone take a look at https://codereview.chromium.org/2902313003
Project Member

Comment 19 by bugdroid1@chromium.org, 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

Status: Fixed (was: Assigned)
Fixed by creators update (and now blacklisted on versions before creators update).

Comment 21 by woxxom@gmail.com, 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?
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?

Comment 23 by woxxom@gmail.com, 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.
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