New issue
Advanced search Search tips

Issue 846477 link

Starred by 2 users

Issue metadata

Status: Duplicate
Merged: issue 772409
Owner: ----
Closed: Jul 25
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

[canvas_resource_provider.cc(303)] Check failed: SharedGpuContext::IsGpuCompositingEnabled()

Project Member Reported by samans@chromium.org, May 24 2018

Issue description

Chrome Version: 68.0.3440.0 (Developer Build) (64-bit)
OS: Linux

What steps will reproduce the problem?
(1) Open any website (say wikipedia.org)
(2) Open DevTools, go to performance tab, start capturing.
(3) Open Task manager, kill GPU process three times to fall back to software compositing.

What is the expected result?
DevTools shouldn't crash.

What happens instead?
DevTools crashes and disappears.

Crash log:
[184621:184621:0524/171130.042016:ERROR:viz_process_transport_factory.cc(379)] Switching to software compositing.
[1:9:0524/171130.053333:ERROR:command_buffer_proxy_impl.cc(113)] ContextResult::kFatalFailure: Shared memory handle is not valid
[1:9:0524/171130.053654:ERROR:context_provider_command_buffer.cc(235)] GpuChannelHost failed to create command buffer.
[1:9:0524/171130.062965:ERROR:command_buffer_proxy_impl.cc(113)] ContextResult::kFatalFailure: Shared memory handle is not valid
[1:9:0524/171130.063146:ERROR:context_provider_command_buffer.cc(235)] GpuChannelHost failed to create command buffer.
[1:9:0524/171130.129792:ERROR:texture_layer_impl.cc(85)] Software compositor has gpu resource in TextureLayer
[1:9:0524/171130.186864:ERROR:texture_layer_impl.cc(85)] Software compositor has gpu resource in TextureLayer
[1:1:0524/171130.579320:FATAL:canvas_resource_provider.cc(303)] Check failed: SharedGpuContext::IsGpuCompositingEnabled(). 
#0 0x55bb8fc2f00c base::debug::StackTrace::StackTrace()
#1 0x55bb8fb958ab logging::LogMessage::~LogMessage()
#2 0x55bb929c82be blink::CanvasResourceProvider::Create()
#3 0x55bb9344c648 blink::Canvas2DLayerBridge::Restore()
#4 0x55bb9455b0bb blink::CanvasRenderingContext2D::TryRestoreContextEvent()
#5 0x55bb92a81543 blink::TimerBase::RunInternal()
#6 0x55bb8d705b44 _ZN4base8internal7InvokerINS0_9BindStateIMN7content28ServiceManagerConnectionImplEFvvEJNS_7WeakPtrIS4_EEEEEFvvEE3RunEPNS0_13BindStateBaseE
#7 0x55bb8f5b6ee0 WTF::ThreadCheckingCallbackWrapper<>::Run()
#8 0x55bb8fb7c010 base::debug::TaskAnnotator::RunTask()
#9 0x55bb8f61ab8d base::sequence_manager::internal::ThreadControllerImpl::DoWork()
#10 0x55bb8d8d94f8 _ZN4base8internal7InvokerINS0_9BindStateIMN5media26AudioDebugRecordingManagerEFvjEJNS_7WeakPtrIS4_EEjEEEFvvEE7RunOnceEPNS0_13BindStateBaseE
#11 0x55bb8d8fea6c _ZN4base8internal22CancelableCallbackImplINS_17RepeatingCallbackIFvvEEEE16ForwardRepeatingIJEEEvDpT_
#12 0x55bb8d705b44 _ZN4base8internal7InvokerINS0_9BindStateIMN7content28ServiceManagerConnectionImplEFvvEJNS_7WeakPtrIS4_EEEEEFvvEE3RunEPNS0_13BindStateBaseE
#13 0x55bb8fb7c010 base::debug::TaskAnnotator::RunTask()
#14 0x55bb8fb9e5a6 base::internal::IncomingTaskQueue::RunTask()
#15 0x55bb8fb9cc07 base::MessageLoop::RunTask()
#16 0x55bb8fb9d01a base::MessageLoop::DeferOrRunPendingTask()
#17 0x55bb8fb9d5b2 base::MessageLoop::DoDelayedWork()
#18 0x55bb8fba187c base::MessagePumpDefault::Run()
#19 0x55bb8fb9c531 base::MessageLoop::Run()
#20 0x55bb8fbc8f46 base::RunLoop::Run()
#21 0x55bb94ac06b9 content::RendererMain()
#22 0x55bb8f7cae95 content::RunZygote()
#23 0x55bb8f7cb7f0 content::RunOtherNamedProcessTypeMain()
#24 0x55bb8f7cc503 content::ContentMainRunnerImpl::Run()
#25 0x55bb8f7d825f service_manager::Main()
#26 0x55bb8f7ca324 content::ContentMain()
#27 0x55bb8d2441b3 ChromeMain
#28 0x7f0fd2b8b2b1 __libc_start_main
#29 0x55bb8d24402a _start

Received signal 6
#0 0x55bb8fc2f00c base::debug::StackTrace::StackTrace()
#1 0x55bb8fc2eae1 base::debug::(anonymous namespace)::StackDumpSignalHandler()
#2 0x7f0fd88f90c0 <unknown>
#3 0x7f0fd2b9dfcf gsignal
#4 0x7f0fd2b9f3fa abort
#5 0x55bb8fc2d8e5 base::debug::BreakDebugger()
#6 0x55bb8fb95cb1 logging::LogMessage::~LogMessage()
#7 0x55bb929c82be blink::CanvasResourceProvider::Create()
#8 0x55bb9344c648 blink::Canvas2DLayerBridge::Restore()
#9 0x55bb9455b0bb blink::CanvasRenderingContext2D::TryRestoreContextEvent()
#10 0x55bb92a81543 blink::TimerBase::RunInternal()
#11 0x55bb8d705b44 _ZN4base8internal7InvokerINS0_9BindStateIMN7content28ServiceManagerConnectionImplEFvvEJNS_7WeakPtrIS4_EEEEEFvvEE3RunEPNS0_13BindStateBaseE
#12 0x55bb8f5b6ee0 WTF::ThreadCheckingCallbackWrapper<>::Run()
#13 0x55bb8fb7c010 base::debug::TaskAnnotator::RunTask()
#14 0x55bb8f61ab8d base::sequence_manager::internal::ThreadControllerImpl::DoWork()
#15 0x55bb8d8d94f8 _ZN4base8internal7InvokerINS0_9BindStateIMN5media26AudioDebugRecordingManagerEFvjEJNS_7WeakPtrIS4_EEjEEEFvvEE7RunOnceEPNS0_13BindStateBaseE
#16 0x55bb8d8fea6c _ZN4base8internal22CancelableCallbackImplINS_17RepeatingCallbackIFvvEEEE16ForwardRepeatingIJEEEvDpT_
#17 0x55bb8d705b44 _ZN4base8internal7InvokerINS0_9BindStateIMN7content28ServiceManagerConnectionImplEFvvEJNS_7WeakPtrIS4_EEEEEFvvEE3RunEPNS0_13BindStateBaseE
#18 0x55bb8fb7c010 base::debug::TaskAnnotator::RunTask()
#19 0x55bb8fb9e5a6 base::internal::IncomingTaskQueue::RunTask()
#20 0x55bb8fb9cc07 base::MessageLoop::RunTask()
#21 0x55bb8fb9d01a base::MessageLoop::DeferOrRunPendingTask()
#22 0x55bb8fb9d5b2 base::MessageLoop::DoDelayedWork()
#23 0x55bb8fba187c base::MessagePumpDefault::Run()
#24 0x55bb8fb9c531 base::MessageLoop::Run()
#25 0x55bb8fbc8f46 base::RunLoop::Run()
#26 0x55bb94ac06b9 content::RendererMain()
#27 0x55bb8f7cae95 content::RunZygote()
#28 0x55bb8f7cb7f0 content::RunOtherNamedProcessTypeMain()
#29 0x55bb8f7cc503 content::ContentMainRunnerImpl::Run()
#30 0x55bb8f7d825f service_manager::Main()
#31 0x55bb8f7ca324 content::ContentMain()
#32 0x55bb8d2441b3 ChromeMain
#33 0x7f0fd2b8b2b1 __libc_start_main
#34 0x55bb8d24402a _start
  r8: 0000000000000000  r9: 00007ffd2b913280 r10: 0000000000000008 r11: 0000000000000246
 r12: 00007ffd2b9139f8 r13: 00007ffd2b9139e8 r14: 00007ffd2b9139f0 r15: 00007ffd2b913519
  di: 0000000000000002  si: 00007ffd2b913280  bp: 00007ffd2b9134c0  bx: 0000000000000006
  dx: 0000000000000000  ax: 0000000000000000  cx: 00007f0fd2b9dfcf  sp: 00007ffd2b9132f8
  ip: 00007f0fd2b9dfcf efl: 0000000000000246 cgf: 002b000000000033 erf: 0000000000000000
 trp: 0000000000000000 msk: 0000000000000000 cr2: 0000000000000000
[end of stack trace]
Calling _exit(1). Core file will not be generated.
 

Comment 1 by samans@chromium.org, May 24 2018

Cc: danakj@chromium.org

Comment 2 by danakj@chromium.org, May 24 2018

Looks like the CanvasResourceProvider is being created with a gpu-compositing usage when it's not enabled.

std::unique_ptr<CanvasResourceProvider> CanvasResourceProvider::Create(
    const IntSize& size,
    ResourceUsage usage,
    base::WeakPtr<WebGraphicsContext3DProviderWrapper> context_provider_wrapper,
    unsigned msaa_sample_count,
    const CanvasColorParams& colorParams) {
  const ResourceType* resource_type_fallback_list = nullptr;
  size_t list_length = 0;

  switch (usage) {
    case kSoftwareResourceUsage:
      resource_type_fallback_list = kSoftwareFallbackList;
      list_length = arraysize(kSoftwareFallbackList);
      break;
    case kSoftwareCompositedResourceUsage:
      resource_type_fallback_list = kSoftwareCompositedFallbackList;
      list_length = arraysize(kSoftwareCompositedFallbackList);
      break;
    case kAcceleratedResourceUsage:
      resource_type_fallback_list = kAcceleratedFallbackList;
      list_length = arraysize(kAcceleratedFallbackList);
      break;
    case kAcceleratedCompositedResourceUsage:
      resource_type_fallback_list = kAcceleratedCompositedFallbackList;
      list_length = arraysize(kAcceleratedCompositedFallbackList);
      break;
  }

  std::unique_ptr<CanvasResourceProvider> provider;
  for (size_t i = 0; i < list_length; ++i) {
    switch (resource_type_fallback_list[i]) {
      case kTextureGpuMemoryBufferResourceType:
        DCHECK(SharedGpuContext::IsGpuCompositingEnabled());

Comment 3 by danakj@chromium.org, May 24 2018

It must be getting |usage|=kAcceleratedCompositedResourceUsage, as kAcceleratedCompositedFallbackList is the only one with kTextureGpuMemoryBufferResourceType

Comment 4 by danakj@chromium.org, May 24 2018

Canvas2DLayerBridge::Restore() doesn't seem to check with SharedGpuContext::IsGpuCompositingEnabled() after calling SharedGpuContext::ContextProviderWrapper().
Owner: ----
Status: Available (was: Assigned)
Mergedinto: 772409
Status: Duplicate (was: Available)

Sign in to add a comment