compositing never stops when external monitor is connected

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

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
      . 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