If mir server dies, while a client is running, server blocks on restart and fails to draw

Bug #1227743 reported by Gerry Boland on 2013-09-19
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Fix Released
Alan Griffiths
mir (Ubuntu)
Alan Griffiths

Bug Description

Running Unity8 on Mir.

1. On phone, adb in to phablet user (adb shell; su - phablet).
2. Stop upstart job with "stop unity8"
3. Run unity manually with "unity8"
4. With the UI, launch an application
5. Back in adb, kill unity8 with Ctrl+C.
6. Now try running unity8 again with "unity8"

The command just blocks.

Kill the application manually and then run "unity8", now shell comes up ok.

Related branches

kevin gunn (kgunn72) on 2013-09-19
Changed in mir:
assignee: nobody → Alan Griffiths (alan-griffiths)
status: New → Triaged
importance: Undecided → Critical
kevin gunn (kgunn72) on 2013-09-25
Changed in mir (Ubuntu):
status: New → Triaged
importance: Undecided → Critical
assignee: nobody → Alan Griffiths (alan-griffiths)
kevin gunn (kgunn72) on 2013-09-27
Changed in mir:
milestone: none → phone-v1-freeze
Changed in mir (Ubuntu):
milestone: none → ubuntu-13.10
tags: added: phone-v1-freeze
no longer affects: mir (Ubuntu)
Alan Griffiths (alan-griffiths) wrote :

At least a part of the problem is the client holding resources from the original connection. These cannot be released as the client API gets into a "hung" state waiting for responses from a socket that died with the server.

lp:~alan-griffiths/mir/improve-tidy-up-of-mir_connection_get_display_info ensures the API eventually times out.

Changed in mir:
status: Triaged → In Progress
PS Jenkins bot (ps-jenkins) wrote :

Fix committed into lp:~mir-team/mir/development-branch at revision None, scheduled for release in mir, milestone Unknown

Changed in mir:
status: In Progress → Fix Committed
Changed in mir:
milestone: phone-v1-freeze → 0.0.16
Changed in mir:
status: Fix Committed → Fix Released
Changed in mir:
milestone: 0.0.16 → 0.1.0
status: Fix Released → Fix Committed
Changed in mir (Ubuntu):
assignee: nobody → Alan Griffiths (alan-griffiths)
importance: Undecided → Critical
status: New → Fix Committed
Changed in mir:
status: Fix Committed → Fix Released
Launchpad Janitor (janitor) wrote :
Download full text (5.1 KiB)

This bug was fixed in the package mir - 0.1.0+14.04.20131028-0ubuntu1

mir (0.1.0+14.04.20131028-0ubuntu1) trusty; urgency=low

  [ Daniel van Vugt ]
  * Bump version 0.1.0
  * Add method for testing if Rectangle::contains(Rectangle), which is
    the basis of any occlusion detection. (LP: #1227739)
  * Add support for traversing the Scene from front surface to back.
    This is required for occlusion detection at least (coming soon). .
    (LP: #1227739)
  * Optimization: Turn off blending for surfaces that are not blendable.
    On some systems this can have a noticeable performance benefit.
  * Avoid rendering surfaces that are fully hidden by other surfaces.
    This is particularly important for mobile device performance. (LP:
    #1227739) . (LP: #1227739)
  * Remove orphaned tags, which appear to have come from the Compiz
    project (!?) Add tags for the most recent releases up to 0.0.16. No
    files changed, only tags.
  * Fix significant performance issues LP: #1241369 / LP: #1241371, and
    probably more(!) Added regression test to catch such regressions and
    revert the offending commit r1049. (LP: #1241369, #1241371)

  [ Brandon Schaefer ]
  * When Scroll events come in we don't keep around the android vscroll
    hscroll data. Store it now. (LP: #1233089)

  [ Albert Astals ]
  * Fix mismatched free() / delete / delete [] reported by valgrind

  [ Alexandros Frantzis ]
  * server: Extend server status (formerly pause/resume) listener to
    report "started" events This change is needed by users of
    libmirserver, so they can properly synchronize external interactions
    with the server. (LP: #1239876)
  * graphics,examples: Don't enable more outputs than supported when
    changing the display configuration. (LP: #1217877)
  * client: Allow clients to call API functions after a connection break
    has been detected When a client tries to call an API function after
    a connection break has been detected in a previous API call, the
    client blocks in the new call. This happens because in
    MirSocketRpcChannel::notify_disconnected() the pending RPC calls are
    not forced to complete, since the channel has already been marked as
    'disconnected' by the failure in the previous call. Note that if the
    break is first detected while calling an API function, then that
    call doesn't block, since this is the first time we call
    MirSocketRpcChannel::notify_disconnected() and the pending RPC calls
    are forced to complete. This commit solves this problem by always
    forcing requests to complete when a communication failure occurs,
    even if a disconnection has already been handled. This is preferred
    over the alternative of manually calling the completion callback in
    a try-catch block when calling an RPC method because of: 1.
    Correctness: In case the communication problem first occurs in that
    call, the callback will be called twice, once by
    notify_disconnected() and once manually. 2. Consistency: The
    callback is called from one place regardless of whether the
    communication problem is first detected during that call or not.
    (LP: #1201436)
  * graphics: Improve si...


Changed in mir (Ubuntu):
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