Mir

[regression] unity8 fails to start when built with 0.24 series (lp:mir)

Bug #1597717 reported by Kevin DuBois on 2016-06-30
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Canonical System Image
Critical
Unassigned
Mir
Fix Released
Critical
Kevin DuBois
mir (Ubuntu)
Undecided
Unassigned

Bug Description

Unity8 fails to start when built with tip lp:mir (0.24 series). USC comes up, but will remain displaying the spinner. Log (attached) indicates that u8 was disconnected from USC during startup.

I did a bisection that indicates rev 3539 (introduction of the nested input platform) was the 1st problematic revision.

note: qtmir compatibility branch in use: https://code.launchpad.net/~kdub/qtmir/0.24-compatibility

Related branches

Kevin DuBois (kdub) wrote :
Kevin DuBois (kdub) wrote :

reverting rev3539 seems to be a workaround while we figure out the real solution

Kevin DuBois (kdub) wrote :

https://bugs.launchpad.net/mir/+bug/1597717
is trunk with rev 3539 backed out. We still have time to find proper fix, so probably won't try to land that branch in trunk, but handy to unblock for anyone affeceted by this problem.

Kevin DuBois (kdub) wrote :

seems that qtmir is overriding the cursor with a "NamedCursor" as a workaround to override some cursor behavior (seems to be the way that Qt cursor names ride through the mir code). This ends up setting a 0x0 cursor, which ends up trying to create a 0x0 buffer stream, which is undefined and does not succeed (causing qtmir's starting autodetection code to fail, causing u8 to exit after that timeout expires).

Current workaround is to reset 0x0 to 1x1, which will succeed in not hanging, but leaves us with a dangling/unused 'invisible' cursor resource. Still digging around to see what we should actually be doing to support this bit of qt cursor handling.

This 0x0 buffer problem was uncovered because rev3539 changed the order in which nested::Display and nested::HostConnection and the CursorController are created. In 0.23 the Display was created later so there would not be any MirSurfaces for the nested::DisplayBuffer, on which the CursorController would submit its initial default cursor image (via the HostConnection interface). So the initial setup was always lost. I "fixed" that by storing the cursor image inside the HostConnection impl and also changed the order of things.

And as it turns out in one path we do check for the size of the cursor image.. and in the other we do not..

Kevin DuBois (kdub) wrote :

right, so rev 3539 precipitated a bug that was there. Solution is to detect 0x0 images. We could also fail more sensibly by verifying parameters when creating buffer streams in the client api. (coming later)

Changed in mir:
assignee: nobody → Kevin DuBois (kdub)
status: New → In Progress
Mir CI Bot (mir-ci-bot) wrote :

Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 0.24.0

Changed in mir:
status: In Progress → Fix Committed
Changed in canonical-devices-system-image:
status: New → Fix Committed
importance: Undecided → Critical
milestone: none → 13
Launchpad Janitor (janitor) wrote :
Download full text (5.7 KiB)

This bug was fixed in the package mir - 0.24.0+16.10.20160815.3-0ubuntu1

---------------
mir (0.24.0+16.10.20160815.3-0ubuntu1) yakkety; urgency=medium

  * New upstream release 0.24.0 (https://launchpad.net/mir/+milestone/0.24.0)
    - ABI summary:
      . mirclient ABI unchanged at 9
      . mirserver ABI bumped to 41
      . mircommon ABI unchanged at 6
      . mirplatform ABI bumped to 12
      . mirprotobuf ABI unchanged at 3
      . mirplatformgraphics ABI bumped to 10
      . mirclientplatform ABI unchanged at 5
      . mirinputplatform ABI unchanged at 5
    - Enhancements:
      . Added a new tool 'mirvanity' which can use a high speed video camera
        to measure client-to-screen latency.
      . Added (build-time) support for desktop full OpenGL servers (disabled
        by default in favor of GLESv2).
      . Introduced new buffer semantics (NBS) and enabled it by default.
      . Avoided using libmirserver in mir_demo_standalone_render_overlays,
        making bringup traces less cluttered.
      . Removed TilingWindowManager from example servers.
      . Added two new mir_*_performance_test tools that are run as part of
        'mir_performance_tests'.
      . Added pointer confinement to the client API.
      . Added new platform supporting software EGLStreams.
      . Added an input platform that the nested server can use.
      . Allow configuration of the application_not_responding_detector
      . Handle server-side keymapping using XKBMapper.
      . Remove the offscreen display.
      . Add callback option to notify shells that the server is about to stop.
      . Add logging for ANativeWindow events on Android.
    - Bugs fixed:
      . usage of std:call_once in mirclient causes TLS collisions with some
        android devices (LP: #1599867)
      . AltGr not working on external keyboards (LP: #1565236)
      . [regression] unity8 fails to start when built with 0.24 series (lp:mir)
        (LP: #1597717)
      . CI failure in MirSurfaceVisibilityEvent.exposed_received_when_surface_
        raised_over_occluding_surface [called twice - over-saturated and active]
        (LP: #1556045)
      . package-built mir_demo_server does not start on device (LP: #1577357)
      . During surface creation, first stream in spec becomes default stream.
        (LP: #1577967)
      . mouse is getting stuck on a phantom edge (LP: #1580774)
      . [testsfail] in MirSurfaceVisibilityEvent.exposed_received_when_surface_
        raised_over_occluding_surface [never called] (LP: #1581385)
      . [enhancement] Add support for full OpenGL compositing (LP: #1420581)
      . [testsfail] ServerSignal.terminate_handler_is_called_for_SIGINT|SIGTERM
        (LP: #1570353)
      . [testsfail] ClientLatency.triple_buffered_client_has_less_than_two_
        frames_latency (LP: #1576690)
      . [testsfail] NestedServer.when_monitor_plugged_in_client_is_notified_of_
        new_display_configuration (LP: #1576760)
      . mir server crashed in what(): drmModeMoveCursor failed (returned -13)
        (LP: #1579630)
      . mirtest-dev is hard to use as the objects used are compiled with LTO
        (LP: #1583536)
      . [testsfail] ClientLogging.repo...

Read more...

Changed in mir (Ubuntu):
status: New → Fix Released
Changed in mir:
status: Fix Committed → Fix Released
Changed in canonical-devices-system-image:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers