Mir

compositing never stops when external monitor is connected

Bug #1499039 reported by Alberto Aguirre on 2015-09-23
14
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Canonical Pocket Desktop
Critical
kevin gunn
Mir
Fix Released
High
Alberto Aguirre
0.17
Fix Released
High
Unassigned
mir (Ubuntu)
Undecided
Unassigned

Bug Description

Start the following with no external display:

sudo mir_demo_server --arw-file --display-config=sidebyside --window-manager system-compositor --hwc-report log
mir_demo_server --host-socket /tmp/mir_socket -f /tmp/nested_mir --display-config=sidebyside

After hotplugging an external display, the compositor loop never stops compositing as evidenced by the root server hwc logs.

Related branches

Alberto Aguirre (albaguirre) wrote :

Note that no client (other than the nested server) is attached so there are no "client" updates here.

Changed in mir:
milestone: 0.17.0 → 0.18.0
Changed in mir:
assignee: nobody → Alberto Aguirre (albaguirre)
status: New → In Progress
Alberto Aguirre (albaguirre) wrote :

Happens with mesa too with a side-by-side display config.

summary: - [android] compositing never stops when external monitor is connected
+ compositing never stops when external monitor is connected
tags: removed: android
Alberto Aguirre (albaguirre) wrote :

The issue is the following,

taking just one active surface only visible in display A not display B

- compositor A consumes surface ready buffer. The buffer queue associated with the surface now has put that ready buffer into a "current compositor buffer" - i.e. it's the buffer that the compositor will use if there's another compositing pass and no other ready buffers are available.
-- compositor A asks if there are any more ready buffers.
--- BufferQueue returns 0 ready buffers.

a. compositor B runs, figures out there are no visible surfaces for its area so doesn't consume anything from the buffer queue.
b. compositor B asks buffer queue if there are more ready buffers
c. buffer queue says 1 buffer is available - because it didn't consume the ready buffer as it wasn't visible on it.
d. repeat a-c indefinitely until surface actually is visible in display B

Launchpad Janitor (janitor) wrote :

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

Changed in mir (Ubuntu):
status: New → Confirmed
PS Jenkins bot (ps-jenkins) wrote :

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

Changed in mir:
status: In Progress → Fix Committed
kevin gunn (kgunn72) on 2015-11-04
Changed in canonical-pocket-desktop:
importance: Undecided → Critical
assignee: nobody → kevin gunn (kgunn72)
status: New → In Progress
kevin gunn (kgunn72) on 2015-11-16
Changed in mir (Ubuntu):
status: Confirmed → Fix Committed
Changed in canonical-pocket-desktop:
status: In Progress → Fix Committed
Launchpad Janitor (janitor) wrote :
Download full text (152.7 KiB)

This bug was fixed in the package mir - 0.17.1+16.04.20151105.1-0ubuntu1

---------------
mir (0.17.1+16.04.20151105.1-0ubuntu1) xenial; urgency=medium

  [ Alberto Aguirre ]
  * New upstream release 0.17.1 (https://launchpad.net/mir/+milestone/0.17.1)
    - No ABI changes. Bug fix release only.
    - Bugs fixed:
      . compositing never stops when external monitor is connected
        (LP: #1499039)
      . half screen on external monitor (LP: #1511538)
      . Nested servers don't apply their display configuration at startup
        (LP: #1492269)
      . libmircookie1 package does not list libnettle as dependency
        (LP: #1513225)
      . unity-system-compositor crash, no interaction on windowed mode
        (LP: #1511095)
      . mir_connection_get_egl_pixel_format() crashes (LP: #1510218)
      . [regression] mir-client-platform-mesa-dev pkg-config file dropped
        (LP: #1509005)

  [ CI Train Bot ]
  * New rebuild forced.

mir (0.17.0+15.10.20151008.2-0ubuntu1) wily; urgency=medium

  [ Alexandros Frantzis ]
  * New upstream release 0.17.0 (https://launchpad.net/mir/+milestone/0.17.0)
    - ABI summary: Only servers and graphics drivers need rebuilding;
      . Mirclient ABI unchanged at 9
      . Mirserver ABI bumped to 35
      . Mircommon ABI unchanged at 5
      . Mirplatform ABI bumped to 11
      . Mirprotobuf ABI bumped to 3
      . Mirplatformgraphics ABI bumped to 6
      . Mirclientplatform ABI unchanged at 3
    - Enhancements:
      . Introduce libmircookie, a simple mechanism for a group of cooperating
        processes to hand out and verify difficult-to-forge timestamps to
        untrusted 3rd parties.
      . More refactorings to support renderers other than GL.
      . Add MirBlob to the client API - a tool for serializing and
        deserializing data.
      . Introduce a libinput based input platform, not yet used by default.
      . Provide a mechanism for the shell to send events on surface
        construction.
      . Provide mir::shell::DisplayConfigurationController allowing shells
        to correctly change the display configuration, notifying clients
        as appropriate.
      . New DSO versioning guide.
      . Send events pertaining to the output a surface is currently on (dpi,
        form factor, scale) to clients.
    - Bug fixes:
      . [enhancement] XMir specific documentation should live in its own
        subsection (LP: #1200114)
      . Nested servers need cursor support (LP: #1289072)
      . Mir cursor is missing/invisible until the client sets it multiple
        times (LP: #1308133)
      . [regression] Fullscreen software surfaces (like Xmir -sw) can crash
        the Mir server (LP: #1493721)
      . [usc] Mir gives up and shuts down due to input with multimonitor qtmir
        (std::exception::what: Failure sending input event) (LP: #1496069)
      . Mouse cursor disappears upon entering the surface area of a nested
        client (LP: #1496849)
      . [android] input is not dispatched when attaching an external monitor
        (LP: #1498045)
      . [android] input coordinates are scaled incorrectly when an external
        display is connected (LP: #1498540)
      . [andro...

Changed in mir (Ubuntu):
status: Fix Committed → Fix Released
Kevin DuBois (kdub) on 2015-12-22
Changed in mir:
status: Fix Committed → Fix Released
Changed in canonical-pocket-desktop:
status: Fix Committed → 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