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

Issue 703697 link

Starred by 1 user

Issue metadata

Status: Duplicate
Merged: issue 692860
Owner:
Closed: Mar 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug



Sign in to add a comment

Browser process crashes if can't start GPU process

Project Member Reported by kbr@chromium.org, Mar 21 2017

Issue description

Chrome Version: ToT at 4832979ab80769a47bcd70b3a5510d9b523f2b06
OS: Linux

What steps will reproduce the problem?
(1) Build Release with dcheck_always_on=true
(2) Inject a failure in GPU process startup (this was/is happening on my workstation due to some misconfiguration)

What is the expected result?

Expect the browser to fall back to software rendering.

What happens instead?

The browser process crashes. Here's the full log from the run. The top parts come from the GPU process, but the rest comes from the browser process.

This fallback is important. It's not clear to me whether it's broken in the product.

[9150:9150:0321/095326.514402:ERROR:gl_surface_glx.cc(87)] glXGetFBConfigs failed.
[9150:9150:0321/095326.514601:ERROR:gl_surface_glx.cc(128)] glXCreateWindow failed
[9150:9150:0321/095326.514628:ERROR:gl_surface_glx.cc(442)] CreateDummyWindow(g_display) failed
[9150:9150:0321/095326.514645:ERROR:gl_initializer_x11.cc(156)] GLSurfaceGLX::InitializeOneOff failed.
[9150:9150:0321/095326.521942:ERROR:gpu_child_thread.cc(309)] Exiting GPU process due to errors during initialization
[9088:9122:0321/095326.522854:ERROR:browser_gpu_channel_host_factory.cc(126)] Failed to create channel.
[9088:9122:0321/095326.523206:ERROR:browser_gpu_channel_host_factory.cc(126)] Failed to create channel.
[9088:9122:0321/095326.524559:ERROR:browser_gpu_channel_host_factory.cc(126)] Failed to create channel.
[9088:9122:0321/095326.524921:ERROR:browser_gpu_channel_host_factory.cc(126)] Failed to create channel.
[9088:9122:0321/095326.525714:ERROR:browser_gpu_channel_host_factory.cc(126)] Failed to create channel.
[9088:9122:0321/095340.805354:FATAL:resource_dispatcher_host_impl.cc(287)] Check failed: handle. 
#0 0x7f36caa88287 base::debug::StackTrace::StackTrace()
#1 0x7f36caaac8bb logging::LogMessage::~LogMessage()
#2 0x7f36c83af911 content::(anonymous namespace)::AttachRequestBodyBlobDataHandles()
#3 0x7f36c83ae8fe content::ResourceDispatcherHostImpl::ContinuePendingBeginRequest()
#4 0x7f36c83ac7af content::ResourceDispatcherHostImpl::BeginRequest()
#5 0x7f36c83ac02a content::ResourceDispatcherHostImpl::OnRequestResourceInternal()
#6 0x7f36c83ab285 content::ResourceDispatcherHostImpl::OnRequestResource()
#7 0x7f36c83ab0ff _ZN3IPC8MessageTI36ResourceHostMsg_RequestResource_MetaSt5tupleIJiiN7content15ResourceRequestEEEvE8DispatchINS3_26ResourceDispatcherHostImplES8_NS3_21ResourceRequesterInfoEMS8_FvPS9_iiRKS4_EEEbPKNS_7MessageEPT_PT0_PT1_T2_
#8 0x7f36c83aaae3 content::ResourceDispatcherHostImpl::OnMessageReceived()
#9 0x7f36c83bd2c5 content::ResourceMessageFilter::OnMessageReceived()
#10 0x7f36c7d4b3d1 content::BrowserMessageFilter::Internal::DispatchMessage()
#11 0x7f36c7d4b160 content::BrowserMessageFilter::Internal::OnMessageReceived()
#12 0x7f36caf02a3d IPC::MessageFilterRouter::TryFilters()
#13 0x7f36caee8cbd IPC::ChannelProxy::Context::TryFilters()
#14 0x7f36caee8fcf IPC::ChannelProxy::Context::OnMessageReceived()
#15 0x7f36caee56dd IPC::ChannelMojo::OnMessageReceived()
#16 0x7f36caef072e IPC::internal::MessagePipeReader::Receive()
#17 0x7f36caf0527e IPC::mojom::ChannelStubDispatch::Accept()
#18 0x7f36cafe7032 mojo::InterfaceEndpointClient::HandleValidatedMessage()
#19 0x7f36cafe6746 mojo::FilterChain::Accept()
#20 0x7f36cafe827e mojo::InterfaceEndpointClient::HandleIncomingMessage()
#21 0x7f36caef6118 IPC::(anonymous namespace)::ChannelAssociatedGroupController::Accept()
#22 0x7f36cafe6746 mojo::FilterChain::Accept()
#23 0x7f36cafe2801 mojo::Connector::ReadSingleMessage()
#24 0x7f36cafe3032 mojo::Connector::ReadAllAvailableMessages()
#25 0x7f36cafe2e9e mojo::Connector::OnHandleReadyInternal()
#26 0x7f36cafc1dff mojo::SimpleWatcher::OnHandleReady()
#27 0x7f36cafc23c9 _ZN4base8internal13FunctorTraitsIMN4mojo13SimpleWatcherEFvijEvE6InvokeIRKNS_7WeakPtrIS3_EEJRKiRKjEEEvS5_OT_DpOT0_
#28 0x7f36caa88f30 _ZNO4base8internal8RunMixinINS_8CallbackIFvvELNS0_8CopyModeE0ELNS0_10RepeatModeE0EEEE3RunEv
#29 0x7f36caa88d5a base::debug::TaskAnnotator::RunTask()
#30 0x7f36caab9d7d base::MessageLoop::RunTask()
#31 0x7f36caaba466 base::MessageLoop::DoWork()
#32 0x7f36caabd5f9 base::MessagePumpLibevent::Run()
#33 0x7f36caab9ace base::MessageLoop::RunHandler()
#34 0x7f36caaee56c base::RunLoop::Run()
#35 0x7f36cab2cebc base::Thread::Run()
#36 0x7f36c818e405 content::BrowserThreadImpl::IOThreadRun()
#37 0x7f36c818e5b3 content::BrowserThreadImpl::Run()
#38 0x7f36cab2d3d8 base::Thread::ThreadMain()
#39 0x7f36cab24bfc base::(anonymous namespace)::ThreadFunc()
#40 0x7f36cac08184 start_thread
#41 0x7f36c0f0d37d clone

Received signal 6
#0 0x7f36caa88287 base::debug::StackTrace::StackTrace()
#1 0x7f36caa87dff base::debug::(anonymous namespace)::StackDumpSignalHandler()
#2 0x7f36cac10330 <unknown>
#3 0x7f36c0e49c37 gsignal
#4 0x7f36c0e4d028 abort
#5 0x7f36caa85ef2 base::debug::BreakDebugger()
#6 0x7f36caaacbc2 logging::LogMessage::~LogMessage()
#7 0x7f36c83af911 content::(anonymous namespace)::AttachRequestBodyBlobDataHandles()
#8 0x7f36c83ae8fe content::ResourceDispatcherHostImpl::ContinuePendingBeginRequest()
#9 0x7f36c83ac7af content::ResourceDispatcherHostImpl::BeginRequest()
#10 0x7f36c83ac02a content::ResourceDispatcherHostImpl::OnRequestResourceInternal()
#11 0x7f36c83ab285 content::ResourceDispatcherHostImpl::OnRequestResource()
#12 0x7f36c83ab0ff _ZN3IPC8MessageTI36ResourceHostMsg_RequestResource_MetaSt5tupleIJiiN7content15ResourceRequestEEEvE8DispatchINS3_26ResourceDispatcherHostImplES8_NS3_21ResourceRequesterInfoEMS8_FvPS9_iiRKS4_EEEbPKNS_7MessageEPT_PT0_PT1_T2_
#13 0x7f36c83aaae3 content::ResourceDispatcherHostImpl::OnMessageReceived()
#14 0x7f36c83bd2c5 content::ResourceMessageFilter::OnMessageReceived()
#15 0x7f36c7d4b3d1 content::BrowserMessageFilter::Internal::DispatchMessage()
#16 0x7f36c7d4b160 content::BrowserMessageFilter::Internal::OnMessageReceived()
#17 0x7f36caf02a3d IPC::MessageFilterRouter::TryFilters()
#18 0x7f36caee8cbd IPC::ChannelProxy::Context::TryFilters()
#19 0x7f36caee8fcf IPC::ChannelProxy::Context::OnMessageReceived()
#20 0x7f36caee56dd IPC::ChannelMojo::OnMessageReceived()
#21 0x7f36caef072e IPC::internal::MessagePipeReader::Receive()
#22 0x7f36caf0527e IPC::mojom::ChannelStubDispatch::Accept()
#23 0x7f36cafe7032 mojo::InterfaceEndpointClient::HandleValidatedMessage()
#24 0x7f36cafe6746 mojo::FilterChain::Accept()
#25 0x7f36cafe827e mojo::InterfaceEndpointClient::HandleIncomingMessage()
#26 0x7f36caef6118 IPC::(anonymous namespace)::ChannelAssociatedGroupController::Accept()
#27 0x7f36cafe6746 mojo::FilterChain::Accept()
#28 0x7f36cafe2801 mojo::Connector::ReadSingleMessage()
#29 0x7f36cafe3032 mojo::Connector::ReadAllAvailableMessages()
#30 0x7f36cafe2e9e mojo::Connector::OnHandleReadyInternal()
#31 0x7f36cafc1dff mojo::SimpleWatcher::OnHandleReady()
#32 0x7f36cafc23c9 _ZN4base8internal13FunctorTraitsIMN4mojo13SimpleWatcherEFvijEvE6InvokeIRKNS_7WeakPtrIS3_EEJRKiRKjEEEvS5_OT_DpOT0_
#33 0x7f36caa88f30 _ZNO4base8internal8RunMixinINS_8CallbackIFvvELNS0_8CopyModeE0ELNS0_10RepeatModeE0EEEE3RunEv
#34 0x7f36caa88d5a base::debug::TaskAnnotator::RunTask()
#35 0x7f36caab9d7d base::MessageLoop::RunTask()
#36 0x7f36caaba466 base::MessageLoop::DoWork()
#37 0x7f36caabd5f9 base::MessagePumpLibevent::Run()
#38 0x7f36caab9ace base::MessageLoop::RunHandler()
#39 0x7f36caaee56c base::RunLoop::Run()
#40 0x7f36cab2cebc base::Thread::Run()
#41 0x7f36c818e405 content::BrowserThreadImpl::IOThreadRun()
#42 0x7f36c818e5b3 content::BrowserThreadImpl::Run()
#43 0x7f36cab2d3d8 base::Thread::ThreadMain()
#44 0x7f36cab24bfc base::(anonymous namespace)::ThreadFunc()
#45 0x7f36cac08184 start_thread
#46 0x7f36c0f0d37d clone
  r8: ffffa4c8b5291cd8  r9: ffffa4c8b5291cc8 r10: 0000000000000008 r11: 0000000000000202
 r12: 000023ff5ab10178 r13: 000023ff5ab10160 r14: 00007f36a51713b0 r15: 00007f36a51713a0
  di: 0000000000002380  si: 00000000000023a2  bp: 0000000000000000  bx: 0000000000000000
  dx: 0000000000000006  ax: 0000000000000000  cx: ffffffffffffffff  sp: 00007f36a5170df8
  ip: 00007f36c0e49c37 efl: 0000000000000202 cgf: 0000000000000033 erf: 0000000000000000
 trp: 0000000000000000 msk: 0000000000000000 cr2: 0000000000000000
[end of stack trace]
Calling _exit(1). Core file will not be generated.

 

Comment 1 by roc...@chromium.org, Mar 21 2017

Cc: jam@chromium.org
We have never changed the timing of when a process can start dispatching incoming IPC on the IO thread or to the ChannelProxy, so I don't think there's a bug there.

This looks potentially like a bug in loading code. Maybe a result of recent refactorings for PlzNavigate. Unclear what if any relevance the early GPU exit has here.

Comment 2 by danakj@chromium.org, Mar 22 2017

Owner: horo@chromium.org
Status: Assigned (was: Untriaged)
Ah, the classic forbidden DCHECK(A) + if(!A) combination:

    DCHECK(handle);
    if (!handle)
      continue;

This was written by horo in https://chromium.googlesource.com/chromium/src/+/82fd6e6f80b2e35a1ace01dd25d4a8dcc40b4d75

Either there's a bug and handle should never be false. Then horo@ can you look into that bug and delete the if() branch. Otherwise, there's not a bug and the handle can be false. Then horo@ can you delete the DCHECK?

Thanks!

Comment 3 by horo@chromium.org, Mar 22 2017

Mergedinto: 692860
Status: Duplicate (was: Assigned)

Sign in to add a comment