New issue
Advanced search Search tips
Starred by 1 user

Issue metadata

Status: Fixed
Closed: Oct 2016
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug-Regression

issue 611142

Sign in to add a comment

Chrome fails to start with --mash, when built with ozone/wayland

Project Member Reported by, Sep 26 2016 Back to list

Issue description

* GN args:

$ more out/ozone/chrome_os/ 
is_debug = false
use_sysroot = false

target_os = "chromeos"
use_ozone = true
ozone_platform_x11 = true
ozone_platform_wayland = true

* Error:

$ out/ozone/chrome_os/chrome --mash --ozone-platform=wayland --no-sandbox --user-data-dir=~/tmp- --ignore-gpu-blacklist

EGLConfig gl::(anonymous namespace)::ChooseConfig(GLSurface::Format):262 format:0] No suitable EGL configs found.
EGLConfig gl::(anonymous namespace)::ChooseConfig(GLSurface::Format):347] eglCreatePbufferSurface failed with error EGL_BAD_CONFIG
Received signal 11 SEGV_MAPERR 000000000300

* Backtrace:
virtual EGLConfig gl::GLSurfaceEGL::GetConfig():485 this:0x2e6107adbfc0
#0 0x55feb719718e base::debug::StackTrace::StackTrace()
#1 0x55feb7b53b51 gl::GLSurfaceEGL::GetConfig()
#2 0x55feb7b55b22 gl::PbufferGLSurfaceEGL::Initialize()
#3 0x55feb7b55901 gl::PbufferGLSurfaceEGL::Initialize()
#4 0x55feb7b507f2 gl::InitializeGLSurface()
#5 0x55feb5bb0ae1 ui::WaylandSurfaceFactory::CreateOffscreenGLSurface()
#6 0x55feb7f7ca0a gl::init::CreateOffscreenGLSurface()
#7 0x55feb7f7e8b9 gpu::GpuChannelManager::GetDefaultOffscreenSurface()
#8 0x55feb7f88d1a gpu::GpuCommandBufferStub::Initialize()
#9 0x55feb7f889af gpu::GpuCommandBufferStub::Create()
#10 0x55feb7f87d61 gpu::GpuChannel::CreateCommandBuffer()
#11 0x55feb7f82290 gpu::GpuChannel::OnCreateCommandBuffer()
#12 0x55feb7f820c8 _ZN3IPC8MessageTI38GpuChannelMsg_CreateCommandBuffer_MetaSt5tupleIJ28GPUCreateCommandBufferConfigiN4base14FileDescriptorEEES2_IJbN3gpu12CapabilitiesEEEE8DispatchINS7_10GpuChannelESC_vMSC_FvRKS3_iS5_PbPS8_EEEbPKNS_7MessageEPT_PT0_PT1_T2_
#13 0x55feb7f81f1a gpu::GpuChannel::OnControlMessageReceived()
#14 0x55feb7f87912 gpu::GpuChannel::HandleMessageHelper()
#15 0x55feb7f87874 gpu::GpuChannel::HandleMessage()
#16 0x55feb7201d00 base::debug::TaskAnnotator::RunTask()
#17 0x55feb71ad835 base::MessageLoop::RunTask()
#18 0x55feb71adb18 base::MessageLoop::DeferOrRunPendingTask()
#19 0x55feb71adf0b base::MessageLoop::DoWork()
#20 0x55feb71aedda base::MessagePumpDefault::Run()
#21 0x55feb71c789e base::RunLoop::Run()
#22 0x55feb71e2a57 base::Thread::ThreadMain()
#23 0x55feb71df213 base::(anonymous namespace)::ThreadFunc()
#24 0x7face450861a start_thread
#25 0x7face0be45fd __clone

* Regression:

I have bisect'ed when the error started, and found:

commit ee79ef399c3f4d2e3652981674eac9347e4b6a1a
Author: kylechar <>
Date:   Fri Jul 29 06:46:49 2016 -0700

    Convert Ozone wayland to directly create GLSurfaces.
    The Ozone wayland platform now directly creates an appropriate GLSurface
    instead of creating a SurfaceOzoneEGL. Remove the SurfaceOzoneEGL
    subclass and add a new GLSurface subclass.
    BUG=  611142  

For the record, m54 launches chromium mash/ozone/wayland fine, m55 does not.

Description: Show this description
indeed. kylechar@: can you comment?
Very strange. I had chrome --mash --ozone-platform=wayland --no-sandbox working with that patch under Weston 1.11 in a VM. CreateOffscreenGLSurface() would have hit the following code before the patch:

So there is a possibility it was using SufacelessEGL instead of PBufferGLSurfaceEGL on your system? Is that the case and does the current version work if you change GLOzoneEGLWayland::CreateOffscreenGLSurface() to create a SurfacelessEGL instead?
> So there is a possibility it was using SufacelessEGL instead of PBufferGLSurfaceEGL on your system? Is that the case and does the current version work if you change GLOzoneEGLWayland::CreateOffscreenGLSurface() to create a SurfacelessEGL instead?

Switching from PBufferGLSurfaceEGL to SufacelessEGL in GLOzoneEGLWayland::CreateOffscreenGLSurface() does make the start up *not* fail.
Hmm, I could change GLOzoneEGLWayland::CreateOffscreenGLSurface to be the following and that should fix it:

if (gl::GLSurfaceEGL::IsEGLSurfacelessContextSupported() &&
    size.width() == 0 && size.height() == 0) {
  return gl::InitializeGLSurface(new gl::SurfacelessEGL(size));
} else {
  return gl::InitializeGLSurface(new gl::PbufferGLSurfaceEGL(size));

Do we know if Ozone Wayland is expected to use SurfacelessEGL for offscreen surfaces?
Status: Started (was: Assigned)
In reply to comment #5, I have uploaded a CL with your advice: 

Project Member

Comment 7 by, Oct 3 2016

The following revision refers to this bug:

commit 903932cf3bcfa9a0eb58b3660c9bad83c4c7e3d3
Author: tonikitoo <>
Date: Mon Oct 03 18:52:31 2016

Use SurfacelessEGL for ozone/wayland, when supported

Since [1], chrome --mash --ozone-platform=wayland fails to
launch in some systems, where the call to
PbufferGLSurfaceEGL::Initialize (ui/gl/ fails

  EGLSurface new_surface =
      eglCreatePbufferSurface(display, GetConfig(), &pbuffer_attribs[0]);

... because GetConfig does not return a valid EGLConfig instance.

As per @kylechar's advice, this CL opt-in for a SufacelessEGL
creation, if supported, rather than PbufferGLSurfaceEGL, similarly
to how it was prior to [1].


BUG= 650284 , 611142 

Cr-Commit-Position: refs/heads/master@{#422475}


Thanks tonikitoo.
Status: Fixed (was: Started)
With and chrome ozone/wayland/chromeos/mash works "off device".

Sign in to add a comment