webbrowser-app crashes after 1 sec on unity8

Bug #1520537 reported by dinamic
62
This bug affects 9 people
Affects Status Importance Assigned to Milestone
Oxide
Fix Released
High
Chris Coulson
oxide-qt (Ubuntu)
Fix Released
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)

Revision history for this message
dinamic (dinamic6661) wrote :
Revision history for this message
dinamic (dinamic6661) wrote :
Olivier Tilloy (osomon)
affects: webbrowser-app (Ubuntu) → oxide-qt (Ubuntu)
Revision history for this message
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)
Changed in oxide-qt (Ubuntu):
importance: Undecided → High
affects: oxide-qt (Ubuntu) → oxide
Revision history for this message
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.

Revision history for this message
Chris Coulson (chrisccoulson) wrote :

Chris, any ideas?

Revision history for this message
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.

Revision history for this message
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.

Revision history for this message
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)

Revision history for this message
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.

Revision history for this message
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.

Revision history for this message
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
Revision history for this message
Chris Coulson (chrisccoulson) wrote :

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

Revision history for this message
Chris Coulson (chrisccoulson) wrote :

This was fixed in trunk last week

Changed in oxide:
status: Fix Committed → Fix Released
Revision history for this message
Chris Coulson (chrisccoulson) wrote :

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

Revision history for this message
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
Revision history for this message
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
Revision history for this message
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  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.