webbrowser-app crashes after 1 sec on unity8

Bug #1520537 reported by dinamic on 2015-11-27
62
This bug affects 9 people
Affects Status Importance Assigned to Milestone
Oxide
High
Chris Coulson
oxide-qt (Ubuntu)
High
Unassigned

Bug Description

Ubuntu 16.04 / unity8
webbrowser-app package 0.23+16.04.20151124-0ubuntu1

webbrowser app opens, i can see the UI and then closes after 1 second

Loading module: 'libubuntu_application_api_desktop_mirclient.so.3.0.0'
[1127/122329:ERROR:gl_surface_egl.cc(306)] No suitable EGL configs found.
[1127/122329:ERROR:gl_surface_oxide_linux.cc(43)] GLSurfaceEGL::InitializeOneOff failed.
shm_open() failed: Permission denied
[1127/122329:ERROR:gpu_info_collector.cc(27)] gfx::GLContext::CreateOffscreenGLSurface failed
[1127/122329:ERROR:gpu_info_collector.cc(89)] Could not create surface for info collection.
[1127/122329:ERROR:oxide_browser_main_parts.cc(270)] gpu::CollectContextGraphicsInfo failed
qml: Loaded 5 UA override(s) from file:///usr/lib/x86_64-linux-gnu/qt5/qml/Ubuntu/Web/ua-overrides-mobile.js
UbuntuClipboard - Got invalid serialized mime data. Ignoring it.
[1127/122330:ERROR:command_buffer_proxy_impl.cc(192)] Failed to initialize command buffer service.
[1127/122330:ERROR:webgraphicscontext3d_command_buffer_impl.cc(206)] CommandBufferProxy::Initialize failed.
[1127/122330:ERROR:webgraphicscontext3d_command_buffer_impl.cc(225)] Failed to initialize command buffer.
[1127/122330:ERROR:command_buffer_proxy_impl.cc(192)] Failed to initialize command buffer service.
[1127/122330:ERROR:webgraphicscontext3d_command_buffer_impl.cc(206)] CommandBufferProxy::Initialize failed.
[1127/122330:ERROR:webgraphicscontext3d_command_buffer_impl.cc(225)] Failed to initialize command buffer.
[1127/122330:ERROR:command_buffer_proxy_impl.cc(192)] Failed to initialize command buffer service.
[1127/122330:ERROR:webgraphicscontext3d_command_buffer_impl.cc(206)] CommandBufferProxy::Initialize failed.
[1127/122330:ERROR:webgraphicscontext3d_command_buffer_impl.cc(225)] Failed to initialize command buffer.
[1127/122330:ERROR:command_buffer_proxy_impl.cc(192)] Failed to initialize command buffer service.
[1127/122330:ERROR:webgraphicscontext3d_command_buffer_impl.cc(206)] CommandBufferProxy::Initialize failed.
[1127/122330:ERROR:webgraphicscontext3d_command_buffer_impl.cc(225)] Failed to initialize command buffer.
[1127/122330:ERROR:command_buffer_proxy_impl.cc(192)] Failed to initialize command buffer service.
[1127/122330:ERROR:webgraphicscontext3d_command_buffer_impl.cc(206)] CommandBufferProxy::Initialize failed.
[1127/122330:ERROR:webgraphicscontext3d_command_buffer_impl.cc(225)] Failed to initialize command buffer.
[1127/122330:FATAL:oxide_compositor.cc(187)] Check failed: num_failed_recreate_attempts_ <= 4 (5 vs. 4)
#0 0x7fe5dc2feade <unknown>
#1 0x7fe5dc3180b1 <unknown>
#2 0x7fe5dc2ad8e3 <unknown>
#3 0x7fe5dcbbeee9 <unknown>
#4 0x7fe5dc30033d <unknown>
#5 0x7fe5dc31d2d9 <unknown>
#6 0x7fe5dc31d6d9 <unknown>
#7 0x7fe5dc31db9d <unknown>
#8 0x7fe5dc296a78 <unknown>
#9 0x7fe602de7603 QObject::event()
#10 0x7fe603e66b8c QApplicationPrivate::notify_helper()
#11 0x7fe603e6c230 QApplication::notify()
#12 0x7fe602db5f1b QCoreApplication::notifyInternal()
#13 0x7fe602db8057 QCoreApplicationPrivate::sendPostedEvents()
#14 0x7fe602e0ce73 <unknown>
#15 0x7fe601791117 g_main_context_dispatch
#16 0x7fe601791370 <unknown>
#17 0x7fe60179141c g_main_context_iteration
#18 0x7fe602e0d27f QEventDispatcherGlib::processEvents()
#19 0x7fe602db375a QEventLoop::exec()
#20 0x7fe602dbb2cc QCoreApplication::exec()
#21 0x560642ae41c6 (/usr/bin/webbrowser-app+0x560642ae41c5)
#22 0x560642ad6675 (/usr/bin/webbrowser-app+0x560642ad6674)
#23 0x7fe601ee9a40 __libc_start_main
#24 0x560642ad6779 (/usr/bin/webbrowser-app+0x560642ad6778)

dinamic (dinamic6661) wrote :
dinamic (dinamic6661) wrote :
Olivier Tilloy (osomon) on 2015-12-18
affects: webbrowser-app (Ubuntu) → oxide-qt (Ubuntu)
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in oxide-qt (Ubuntu):
status: New → Confirmed
Olivier Tilloy (osomon) on 2016-02-12
Changed in oxide-qt (Ubuntu):
importance: Undecided → High
affects: oxide-qt (Ubuntu) → oxide
Chris Coulson (chrisccoulson) wrote :

This is failing to find an EGL config using the attributes provided by Chromium, which are:

EGL_BUFFER_SIZE, 32,
EGL_ALPHA_SIZE, 8,
EGL_BLUE_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_RED_SIZE, 8,
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_NONE

We already do a runtime check for Mir/Mesa to strip EGL_PBUFFER_BIT from the attributes supplied by Chromium.

This used to work, but doesn't anymore.

Chris Coulson (chrisccoulson) wrote :

Chris, any ideas?

Chris Coulson (chrisccoulson) wrote :

Of course, it's entirely possible that we're failing to detect that we're running on Mir/Mesa and passing EGL_WINDOW_BIT | EGL_PBUFFER_BIT for EGL_SURFACE_TYPE. That would make it fail. I don't have a xenial install to test this though.

Michał Sawicz (saviq) wrote :

After learning some gdb tricks I believe indeed the "Mir/Mesa" detection isn't working anymore:

> Source directories searched: /tmp/oxide-qt-1.12.5/qt/core/api/internal:$cdir:$cwd
> Function "ui::(anonymous namespace)::IsRunningOnMesaMir" not defined.
> Breakpoint 1 (ui::(anonymous namespace)::IsRunningOnMesaMir) pending.
> Continuing.
>
> [...]
>
> Breakpoint 1, ui::(anonymous namespace)::GetPlatformAttribOverrides (native_display=139731660709456)
> at ../../../../shared/port/ozone/surface_factory_ozone_oxide.cc:148
> 148 if (!PBufferSurfacesSupported(native_display)) {
> 146 std::map<EGLint, EGLint> overrides;
> 148 if (!PBufferSurfacesSupported(native_display)) {
> ui::SurfaceFactoryOzoneOxide::GetEGLSurfaceProperties (this=<optimized out>, desired_list=0x7fffe28ce9f0)
> at ../../../../shared/port/ozone/surface_factory_ozone_oxide.cc:195
> 195 if (attribute_overrides.size() == 0) {

https://bazaar.launchpad.net/~oxide-developers/oxide/oxide.trunk/view/head:/shared/port/ozone/surface_factory_ozone_oxide.cc#L195

It returns at this point, which IIUC means EGL_SURFACE_TYPE isn't set to EGL_WINDOW_BIT (which it should.

> 194 GetPlatformAttribOverrides(GetNativeDisplay());
> 226 }
> Continuing.
>
> [...]

Program received signal SIGABRT, Aborted.

Chris Coulson (chrisccoulson) wrote :

I'm not sure what's going on here - we first check we're on Mesa (eglQueryString(EGL_VENDOR) == "Mesa Project") and then we basically copy what _mir_display_is_valid() does.

It's possible that the native display handle we have is invalid (that comes from qtubuntu)

Chris Halse Rogers (raof) wrote :

So, a question: Why is oxide using running-on-Mir-ness to determine whether or not to ask for a PBUFFER surface? Why not unconditionally ask for just EGL_WINDOW_BIT?

If you get a different, better, codepath when the surface supports EGL_PBUFFER_BIT then you can look through the list returned by eglChooseConfig for a config that has that bit set. This seems to be (a) a better expression of your actual requirements, (b) less likely to break, due to not relying on Mir-internal interfaces.

Chris Halse Rogers (raof) wrote :

I'm also not sure where “mir_egl_mesa_display_is_valid” comes from; I can't find it in the Mir codebase. It's possible that what you want to do is check for mir_connection_is_valid() there anyway.

Chris Coulson (chrisccoulson) wrote :

I copied “mir_egl_mesa_display_is_valid” from _mir_display_is_valid in Mesa.

I should point out - we don't actually create any onscreen surfaces in Oxide. Everything we do is offscreen. We require pbuffer surfaces when we can't create surfaceless contexts.

Due to a breaking change in Chromium, I had to refactor this code so I took the opportunity to hopefully fix this at the same time (some of this is based on the existing logic in Chromium): http://bazaar.launchpad.net/~oxide-developers/oxide/crmaster/revision/1111

Changed in oxide:
assignee: nobody → Chris Coulson (chrisccoulson)
milestone: none → branch-1.14
status: Confirmed → Fix Committed
Changed in oxide-qt (Ubuntu):
importance: Undecided → High
status: New → Triaged
Chris Coulson (chrisccoulson) wrote :

I also reported bug 1547436 to try to handle this sort of failure more gracefully.

Chris Coulson (chrisccoulson) wrote :

This was fixed in trunk last week

Changed in oxide:
status: Fix Committed → Fix Released
Chris Coulson (chrisccoulson) wrote :

Do the builds in https://launchpad.net/~oxide-builds/+archive/ubuntu/oxide-next/ work on Unity 8 desktop?

Launchpad Janitor (janitor) wrote :

This bug was fixed in the package oxide-qt - 1.14.7-0ubuntu0.14.04.1

---------------
oxide-qt (1.14.7-0ubuntu0.14.04.1) trusty-security; urgency=medium

  * Update to v1.14.7
    - Bump Chromium rev to 50.0.2661.87
    - Fix LP: #1565685 - Gracefully handle the case where
      glGetString(GL_SHADING_LANGUAGE_VERSION) returns a null pointer
    - Fix LP: #1543761 - Move fullscreen logic out of oxide::WebView
    - Fix LP: #1542119 - Rip input handling and compositing glue out of
      oxide::WebView
    - Fix LP: #1548996 - Fix device scaling mess
    - Fix LP: #1459830 - Support drag and drop
    - Fix LP: #1440863 - Support navigator.vibrate()
    - Fix LP: #1552376 - Ensure we disable the use of the share context on
      drivers where Chromium uses virtualized GL contexts
    - Fix LP: #1520537 - webbrowser-app crashes after 1 sec on unity8
    - Fix LP: #1459395 - Triple click doesn't work
    - Fix LP: #1459362 - SwipeArea lets touch events through before a drag is
      detected
    - Fix LP: #1426153 - Use a single-threaded webview compositor
    - Fix LP: #1543587 - Duplicate targets and random mis-builds due to
      Chromedriver
    - Fix LP: #1555122 - Startup crash when running in a VM
    - Fix LP: #1552825 - WebView.touchSelectionController.active remains true
      when navigating away
    - Fix LP: #1556323 - Fix SIGSEGV in oxide::InputMethodContext::SetImeBridge
    - Add support for scale factor retrieved from the Ubuntu QPA plugin
    - Switch from DelegatedRendererLayer to SurfaceLayer in
      RenderWidgetHostView, as the former has been deleted from Chromium

  * Refresh gross-hack-for-dual-ffmpeg-build.patch
  * Build-depend on qtfeedback5-dev
    - update debian/control

 -- Chris Coulson <email address hidden> Mon, 18 Apr 2016 16:28:53 +0100

Changed in oxide-qt (Ubuntu):
status: Triaged → Fix Released
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package oxide-qt - 1.14.7-0ubuntu0.15.10.1

---------------
oxide-qt (1.14.7-0ubuntu0.15.10.1) wily-security; urgency=medium

  * Update to v1.14.7
    - Bump Chromium rev to 50.0.2661.87
    - Fix LP: #1565685 - Gracefully handle the case where
      glGetString(GL_SHADING_LANGUAGE_VERSION) returns a null pointer
    - Fix LP: #1543761 - Move fullscreen logic out of oxide::WebView
    - Fix LP: #1542119 - Rip input handling and compositing glue out of
      oxide::WebView
    - Fix LP: #1548996 - Fix device scaling mess
    - Fix LP: #1459830 - Support drag and drop
    - Fix LP: #1440863 - Support navigator.vibrate()
    - Fix LP: #1552376 - Ensure we disable the use of the share context on
      drivers where Chromium uses virtualized GL contexts
    - Fix LP: #1520537 - webbrowser-app crashes after 1 sec on unity8
    - Fix LP: #1459395 - Triple click doesn't work
    - Fix LP: #1459362 - SwipeArea lets touch events through before a drag is
      detected
    - Fix LP: #1426153 - Use a single-threaded webview compositor
    - Fix LP: #1543587 - Duplicate targets and random mis-builds due to
      Chromedriver
    - Fix LP: #1555122 - Startup crash when running in a VM
    - Fix LP: #1552825 - WebView.touchSelectionController.active remains true
      when navigating away
    - Fix LP: #1556323 - Fix SIGSEGV in oxide::InputMethodContext::SetImeBridge
    - Add support for scale factor retrieved from the Ubuntu QPA plugin
    - Switch from DelegatedRendererLayer to SurfaceLayer in
      RenderWidgetHostView, as the former has been deleted from Chromium

  * Refresh gross-hack-for-dual-ffmpeg-build.patch
  * Build-depend on qtfeedback5-dev
    - update debian/control

 -- Chris Coulson <email address hidden> Mon, 18 Apr 2016 13:34:22 +0100

Changed in oxide-qt (Ubuntu):
status: Triaged → Fix Released
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package oxide-qt - 1.14.7-0ubuntu1

---------------
oxide-qt (1.14.7-0ubuntu1) xenial-security; urgency=medium

  * Update to v1.14.7
    - Bump Chromium rev to 50.0.2661.87
    - Fix LP: #1565685 - Gracefully handle the case where
      glGetString(GL_SHADING_LANGUAGE_VERSION) returns a null pointer
    - Fix LP: #1543761 - Move fullscreen logic out of oxide::WebView
    - Fix LP: #1542119 - Rip input handling and compositing glue out of
      oxide::WebView
    - Fix LP: #1548996 - Fix device scaling mess
    - Fix LP: #1459830 - Support drag and drop
    - Fix LP: #1440863 - Support navigator.vibrate()
    - Fix LP: #1552376 - Ensure we disable the use of the share context on
      drivers where Chromium uses virtualized GL contexts
    - Fix LP: #1520537 - webbrowser-app crashes after 1 sec on unity8
    - Fix LP: #1459395 - Triple click doesn't work
    - Fix LP: #1459362 - SwipeArea lets touch events through before a drag is
      detected
    - Fix LP: #1426153 - Use a single-threaded webview compositor
    - Fix LP: #1543587 - Duplicate targets and random mis-builds due to
      Chromedriver
    - Fix LP: #1555122 - Startup crash when running in a VM
    - Fix LP: #1552825 - WebView.touchSelectionController.active remains true
      when navigating away
    - Fix LP: #1556323 - Fix SIGSEGV in oxide::InputMethodContext::SetImeBridge
    - Add support for scale factor retrieved from the Ubuntu QPA plugin
    - Switch from DelegatedRendererLayer to SurfaceLayer in
      RenderWidgetHostView, as the former has been deleted from Chromium

  * Refresh gross-hack-for-dual-ffmpeg-build.patch
  * Build-depend on qtfeedback5-dev
    - update debian/control

 -- Chris Coulson <email address hidden> Mon, 18 Apr 2016 13:26:59 +0100

Changed in oxide-qt (Ubuntu):
status: Triaged → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers