Mir

[regression] Software clients of nested servers with size >=480x480 are all black in Mir 0.25.0 and later (or stretched and distorted under Unity8)

Bug #1663062 reported by Cemil Azizoglu
40
This bug affects 8 people
Affects Status Importance Assigned to Milestone
Canonical System Image
Fix Released
Critical
Stephen M. Webb
Mir
Fix Released
Critical
Kevin DuBois
0.25
Won't Fix
Critical
Unassigned
0.26
Fix Released
Critical
Kevin DuBois
mesa (Ubuntu)
Invalid
Critical
Unassigned
mir (Ubuntu)
Fix Released
Critical
Unassigned

Bug Description

GPU apps seem to work.

CPU apps all get black screen.

To repro :
Under unity7 using mir-on-x:

1- In a terminal, run :
mir_demo_server -f /tmp/mysock

2- In another terminal, run :
mir_demo_server --host-socket /tmp/mysock

3- In another terminal, run :
mir_demo_client_progressbar

Under Unity8 :
In another terminal, run :
mir_demo_client_progressbar

Observe that, the window is black.

Whereas, egl clients run fine.

Related branches

Changed in mir:
importance: Undecided → Critical
milestone: none → 0.26.1
Revision history for this message
Chris Halse Rogers (raof) wrote :

I can't reproduce this (on Radeon, on Zesty). Both GPU and CPU clients render fine in mir_demo_server.

summary: - CPU clients have black screen with Mir 0.26.1 silo
+ Software clients of nested servers are all black with Mir 0.26.1 silo
Changed in mir:
status: New → Confirmed
milestone: 0.26.1 → 1.0.0
Revision history for this message
Daniel van Vugt (vanvugt) wrote : Re: Software clients of nested servers are all black starting in Mir 0.26.0

We should have noticed this during 0.26.0 testing, and should have noticed again in testing the fix for bug 1661521. Curiously the bug slipped by both times. Now trying to bisect...

summary: - Software clients of nested servers are all black with Mir 0.26.1 silo
+ Software clients of nested servers are all black starting in Mir 0.26.0
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Hmm, same bug with lp:mir/0.25 ... I would suspect it's not a Mir bug but is from this which hit zesty yesterday:

mesa (13.0.4-1ubuntu1) zesty; urgency=medium

  * Merge from debian.
  * radeonsi-always-leave-poly-offset-in-a-valid-state.diff:
    Dropped, upstream.

mesa (13.0.4-1) unstable; urgency=medium

  * New upstream release.
  * Drop vl-zscan-fix-Fix-trivial-sign-compare-warnings.diff and r600-
    sb-Fix-loop-optimization-related-hangs-on-eg.diff, upstream.
  * Drop workaround-binutils-mips-844357.diff, binutils regression has
    been fixed (Closes: #852030).
  * Revert to debhelper compat 9 (Workaround for #851130).
  * Update extend-diff-ignore.

 -- Timo Aaltonen <email address hidden> Mon, 06 Feb 2017 09:47:24 +0200

Changed in mesa (Ubuntu):
status: New → Confirmed
importance: Undecided → Critical
summary: - Software clients of nested servers are all black starting in Mir 0.26.0
+ Software clients of nested servers are all black
summary: - Software clients of nested servers are all black
+ [regression] Software clients of nested servers are all black
Changed in mir:
status: Confirmed → Incomplete
Revision history for this message
Daniel van Vugt (vanvugt) wrote : Re: [regression] Software clients of nested servers are all black

Umm, it works in lp:mir/0.24 but not in 0.25 or later. How old is this regression??

Changed in mesa (Ubuntu):
status: Confirmed → Incomplete
Changed in mir:
status: Incomplete → Confirmed
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

OK, bisected and triaged.

Yesterday's Mesa 13.0.4 release has nothing to do with this as I have confirmed the same problem exists in Mesa 13.0.3.

Bisection reveals the regression occurred back in October and somehow we didn't notice:

------------------------------------------------------------
revno: 3746 [merge]
author: Kevin DuBois <email address hidden>
committer: Tarmac
branch nick: development-branch
timestamp: Mon 2016-10-10 07:49:38 +0000
message:
  nested: optimize fullscreen client surfaces by passing their buffers through the nested server to the host server without composing.
  (LP: #1262116). Fixes: https://bugs.launchpad.net/bugs/1262116.

  Approved by Daniel van Vugt, Cemil Azizoglu, mir-ci-bot.
------------------------------------------------------------

Revision 3745 was the last known working.

Changed in mesa (Ubuntu):
status: Incomplete → Invalid
Changed in mir:
status: Confirmed → Triaged
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

So that means we were able to happily carry on using most apps in Unity8 even with the bug. It might be possible to defer fixing this till 0.26.2 ...

summary: - [regression] Software clients of nested servers are all black
+ [regression] Software clients of nested servers are all black in Mir
+ 0.25.0 and later
description: updated
description: updated
Kevin DuBois (kdub)
tags: added: mesa
Revision history for this message
Daniel van Vugt (vanvugt) wrote : Re: [regression] Software clients of nested servers are all black in Mir 0.25.0 and later

Fix committed to lp:mir/0.26 at revision 4024, scheduled for release in Mir 0.26.1

Changed in mir:
assignee: nobody → Kevin DuBois (kdub)
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

It appears this bug when unnoticed in the 0.25.0 and 0.26.0 releases because our major toolkits all use GL and not software surfaces. So almost all our apps won't ever hit the bug.

Xmir also uses hardware surfaces on desktop so won't hit it. We would have noticed the bug in Xmir on Android where it uses software mode, but our Android platforms (OTA-14/15) are all still running Mir 0.24.0 where this bug does not occur.

Changed in mir:
status: Triaged → In Progress
Changed in mir (Ubuntu):
status: New → Triaged
importance: Undecided → Critical
Revision history for this message
Kevin DuBois (kdub) wrote :

Its even a bit more narrow than that, software clients of android work (its just ShmBuffer-backed software clients that would be affected). Furthermore, the nested compositor had to select GL rendering instead of pasthrough (which is probably common in the wild), and the surface had to be larger than 480x480.

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Thank you kdub!

You have just also explained the cause of bug 1649662 :)

summary: - [regression] Software clients of nested servers are all black in Mir
- 0.25.0 and later
+ [regression] Software clients of nested servers larger with size
+ >=480x480 are all black in Mir 0.25.0 and later (or stretched and
+ distorted under Unity8)
summary: - [regression] Software clients of nested servers larger with size
- >=480x480 are all black in Mir 0.25.0 and later (or stretched and
- distorted under Unity8)
+ [regression] Software clients of nested servers with size >=480x480 are
+ all black in Mir 0.25.0 and later (or stretched and distorted under
+ Unity8)
Changed in canonical-devices-system-image:
status: New → Fix Committed
importance: Undecided → Critical
tags: added: regression unity8-desktop
removed: mesa
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Turns out we were experiencing this bug in Unity8, particularly with GTK apps. Just that QtMir will freeze on the last frame and stretch it instead of showing a black window like Mir's compositor does. Also enough GTK windows open smaller than 480x480 by default to have actually worked despite the bug. See bug 1649662 and other duplicates.

Revision history for this message
dinamic (dinamic6661) wrote :

yep mir 0.26.1 fixed bug 1649662

thanks @Daniel

Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

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

Changed in mir:
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package mir - 0.26.1+17.04.20170209.1-0ubuntu1

---------------
mir (0.26.1+17.04.20170209.1-0ubuntu1) zesty; urgency=medium

  * New upstream release 0.26.1 (https://launchpad.net/mir/+milestone/0.26.1)
    - ABI summary:
      . mirclient ABI unchanged at 9
      . mirserver ABI unchanged at 43
      . mircommon ABI unchanged at 7
      . mirplatform ABI bumped to 15
      . mirprotobuf ABI unchanged at 3
      . mirplatformgraphics ABI bumped to 12
      . mirclientplatform ABI unchanged at 5
      . mirinputplatform ABI unchanged at 6
      . mircore ABI unchanged at 1
    - Enhancements:
      . Support for MirBuffer API that allows for better management of
        hardware/software buffers.
      . Support for MirPresentationChain API that allows better control
        over {de}queueing of individual buffers {from}to the server.
      . Interim support for MirRenderSurface API that provides a unit of
        renderable for lower level content such as MirBufferStreams and
        MirPresentationChains, etc.. MirRenderSurface API is marked
        deprecated as it (and the relevant entry points) will be renamed to
        MirSurface before general availability. It will initially be used for
        revamping support for EGL drivers.
      . Synchronous version of mir_prompt_session_new_fds_for_prompt_providers()
        API (mir_prompt_session_new_fds_for_prompt_providers_sync()) added for
        convenience.
      . Better name for MirPersistentId-->MirWindowId. MirPersistentId has now
        been deprecated.
    - Bugs fixed:
      . [regression] Unity8 stutters constantly (like half frame rate).
        (LP: #1661128)
      . mir 0.26 - spinner loading animation, minimize, maximize too fast.
        (LP: #1661072)
      . [regression] Nested server segfaults or rapidly logs exceptions when a
        fullscreen client starts [in mir_presentation_chain_set_dropping_mode
        ... std::exception::what: Operation not permitted] (LP: #1661508)
      . mir_window_request_persistent_id_sync seg faults when called twice.
        (LP: #1661704)
      . [regression] Windowed clients of nested servers are all black.
        (LP: #1661521)
      . Mir graphics platform ABI broke in series 0.26 but sonames never
        changed (LP: #1662455)
      . Fixes for 0.26 changelog.
      . [regression] mirscreencast hangs during screencast creation. (LP: #1662997)
      . libmirclient-dev missing build dependency on libmircore-dev. (LP: #1662942)
      . mir_window_spec_set_cursor_name() doesn't trigger
        mir::scene::SurfaceObserver::cursor_image_set_to. (LP: #1663197)
      . [regression] Software clients of nested servers are all black in Mir 0.25.0
        and later. (LP: #1663062)

 -- Cemil Azizoglu <email address hidden> Thu, 09 Feb 2017 21:46:32 +0000

Changed in mir (Ubuntu):
status: Triaged → Fix Released
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

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

kevin gunn (kgunn72)
Changed in canonical-devices-system-image:
milestone: none → u8c-1
assignee: nobody → Stephen M. Webb (bregma)
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Is the u8c-1 milestone appropriate for bugs where the fix is already on everyone's desktop?

Changed in canonical-devices-system-image:
status: Fix Committed → Fix Released
Revision history for this message
kevin gunn (kgunn72) wrote :

@vanvugt - if that happens, it's just bug cruft from my wholesale marking. feel free to mark "fix released" if appropriate

Changed in mir:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

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