unity-system-compositor crashed [what(): Failed to set DRM crtc]

Bug #1294510 reported by Daniel Holbach
16
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Mir
Fix Released
Critical
Alexandros Frantzis
mir (Ubuntu)
Fix Released
Undecided
Unassigned
unity-system-compositor (Ubuntu)
Invalid
Medium
Unassigned

Bug Description

No idea what happened.

ProblemType: Crash
DistroRelease: Ubuntu 14.04
Package: unity-system-compositor 0.0.2+14.04.20140317.2-0ubuntu1
ProcVersionSignature: Ubuntu 3.13.0-18.38-generic 3.13.6
Uname: Linux 3.13.0-18-generic x86_64
ApportVersion: 2.13.3-0ubuntu1
Architecture: amd64
CrashCounter: 1
Date: Wed Mar 19 08:10:33 2014
ExecutablePath: /usr/sbin/unity-system-compositor
GraphicsCard:
 Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller [8086:0126] (rev 09) (prog-if 00 [VGA controller])
   Subsystem: Lenovo Device [17aa:21da]
InstallationDate: Installed on 2013-12-22 (86 days ago)
InstallationMedia: Ubuntu 14.04 LTS "Trusty Tahr" - Alpha amd64 (20131221)
ProcCmdline: /usr/sbin/unity-system-compositor --file /tmp/mir_socket --from-dm-fd 10 --to-dm-fd 13 --vt 7
ProcEnviron:

Signal: 6
SourcePackage: unity-system-compositor
StacktraceTop:
 __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
 ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
 ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
 __gxx_personality_v0 () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
 ?? () from /lib/x86_64-linux-gnu/libgcc_s.so.1
Title: unity-system-compositor crashed with SIGABRT in __gnu_cxx::__verbose_terminate_handler()
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups:

version.libdrm: libdrm2 2.4.52-1
version.lightdm: lightdm 1.9.12-0ubuntu1
version.mesa: libegl1-mesa-dev 10.1.0-1ubuntu1

Related branches

Revision history for this message
Daniel Holbach (dholbach) wrote :
Revision history for this message
Apport retracing service (apport) wrote :

StacktraceTop:
 __gnu_cxx::__verbose_terminate_handler() () from /tmp/apport_sandbox_ZVDYv6/usr/lib/x86_64-linux-gnu/libstdc++.so.6
 ?? () from /tmp/apport_sandbox_ZVDYv6/usr/lib/x86_64-linux-gnu/libstdc++.so.6
 ?? () from /tmp/apport_sandbox_ZVDYv6/usr/lib/x86_64-linux-gnu/libstdc++.so.6
 __gxx_personality_v0 () from /tmp/apport_sandbox_ZVDYv6/usr/lib/x86_64-linux-gnu/libstdc++.so.6
 _Unwind_RaiseException_Phase2 (exc=exc@entry=0x10e0860, context=context@entry=0x7fffd706c670) at ../../../src/libgcc/unwind.inc:62

Revision history for this message
Apport retracing service (apport) wrote : Stacktrace.txt
Revision history for this message
Apport retracing service (apport) wrote : StacktraceSource.txt
Revision history for this message
Apport retracing service (apport) wrote : ThreadStacktrace.txt
Changed in unity-system-compositor (Ubuntu):
importance: Undecided → Medium
tags: removed: need-amd64-retrace
Revision history for this message
Daniel van Vugt (vanvugt) wrote : Re: unity-system-compositor crashed with SIGABRT in __gnu_cxx::__verbose_terminate_handler() [ what(): Failed to set DRM crtc]

You have to ignore all those destructor calls in the stacktraces because they're probably side-effects of unwinding after an exception. The real question is what exception occurred. The log shows it was:

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::runtime_error> >'
  what(): Failed to set DRM crtc

summary: unity-system-compositor crashed with SIGABRT in
- __gnu_cxx::__verbose_terminate_handler()
+ __gnu_cxx::__verbose_terminate_handler() [ what(): Failed to set DRM
+ crtc]
information type: Private → Public
Changed in unity-system-compositor (Ubuntu):
status: New → Invalid
Changed in mir:
importance: Undecided → Critical
milestone: none → 0.1.8
summary: - unity-system-compositor crashed with SIGABRT in
- __gnu_cxx::__verbose_terminate_handler() [ what(): Failed to set DRM
- crtc]
+ unity-system-compositor crashed [what(): Failed to set DRM crtc]
Changed in mir:
milestone: 0.1.8 → 0.1.9
Revision history for this message
kevin gunn (kgunn72) wrote :

@dholbach - can you share whether or not you were running xmir? or you were attempting to run unity8-desktop-session ?

Revision history for this message
Daniel Holbach (dholbach) wrote :

The latter.

Revision history for this message
kevin gunn (kgunn72) wrote :

@dholbach
- first can you please be updated to the released Trusty + the unity8-desktop-session-mir then try to reproduce this ?
- also note any thing like monitors/multimonitor, also gfx card used
- also look for crash files (make sure to clean them out first)

Changed in mir:
status: New → Incomplete
kevin gunn (kgunn72)
Changed in mir:
milestone: 0.1.9 → 0.1.10
Revision history for this message
Daniel Holbach (dholbach) wrote :

Yes, this is reproducible on updated Trusty. I'm running this on a Lenovo X220, no monitor attached.

00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09) (prog-if 00 [VGA controller])
        Subsystem: Lenovo Device 21da
        Flags: bus master, fast devsel, latency 0, IRQ 49
        Memory at f0000000 (64-bit, non-prefetchable) [size=4M]
        Memory at e0000000 (64-bit, prefetchable) [size=256M]
        I/O ports at 5000 [size=64]
        Expansion ROM at <unassigned> [disabled]
        Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
        Capabilities: [d0] Power Management version 2
        Capabilities: [a4] PCI Advanced Features
        Kernel driver in use: i915

Fresh crash files (from this incident) uploaded to chinstrap:~dholbach/crash/

The way I can reproduce this is easy. Wait for lightdm to come up, log into unity8-mir desktop session, play around a bit, find that you can't log out. Hit Ctrl-Alt-F1, log in, type 'sudo restart lightdm; exit' and log into regular session.

Changed in mir:
status: Incomplete → Confirmed
assignee: nobody → Alexandros Frantzis (afrantzis)
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

A couple of thoughts on this...

1. Tinkering with display hardware may fail at times if its not ready for some reason. So Mir should be resilient to such exceptions and recover.

2. If an error is actually unrecoverable we need to start changing those throws to abort() or similar. So we get clean stack traces and can easily diagnose then fix the problem.

Changed in mir:
status: Confirmed → In Progress
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

Fix committed into lp:mir/devel at revision None, scheduled for release in mir, milestone Unknown

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

This bug was fixed in the package mir - 0.2.0+14.10.20140605-0ubuntu1

---------------
mir (0.2.0+14.10.20140605-0ubuntu1) utopic; urgency=medium

  [ Daniel van Vugt ]
  * New upstream release 0.2.0 (https://launchpad.net/mir/+milestone/0.2.0)
    - mirclient ABI unchanged, still at 7. Clients do not need rebuilding.
    - mirserver ABI bumped to 20. Shells need rebuilding.
      . Cursor::set_image() parameters changed.
      . Display::the_cursor() renamed to Display::create_hardware_cursor()
      . Platform::create_display() requires a new parameter; gl_program_factory
      . Renderable::buffer() no longer accepts any parameter at all. Multi-
        monitor frame sync is guaranteed in other ways now.
      . Scene::generate_renderable_list() renamed to renderable_list_for(id)
        where id is an opaque compositor ID of your choosing.
      . Scene::set_change_callback() replaced by the more generic:
        add_observer() and remove_observer() functions.
      . Added default implementation for SceneObserver.
      . SessionCreator renamed to ConnectionCreator.
      . ConnectedSessions renamed to Connections.
      . ProtobufSessionCreator renamed to ProtobufConnectionCreator.
      . SessionAuthorizer: pid_t parameters replaced by SessionCredentials.
      . Massive architectural changes to Input-everything.
      . Surface no longer implements Renderable, but emits one via
        compositor_snapshot().
      . Pass the full renderable list to Renderer::render().
      . Graceful handling of exceptions thrown from server threads.
      . Clarify size position interfaces in the Surface classes.
      . Plumbing for trusted sessions.
      . Allow posting and managing custom main-loop actions.
      . Timer extension.
      . Identify client process when client connects to Mir not when socket
        connects.
      . Use the ServerActionQueue for display config.
      . Recomposition signal moved to the MultiThreadedCompositor.
      . Make timer service replaceable.
      . Clarify assumptions about how many buffers a client can fill without
        blocking.
      . Introduce EmergencyCleanup interface.
    - Demo shell enhancements:
      . You can now change graphics modes on the fly using Ctrl+Alt+(-/=).
        To reset to the preferred mode use Ctrl+Alt+0.
      . The above mode changing as well as existing screen rotation keys
        (Ctrl+Alt+arrows) are now per-display; only applied to the monitor
        the mouse pointer is on.
      . New shell controls documented.
    - A new testing category, performance test, was introduced. It currently
      runs glmark2-es2 and compares the result to a minimum threshold.
    - MIR_VERSION_MINOR is tied to MIRSERVER_ABI in the sense that a change
      in the former now requires dependent projects that a rebuild is
      necessary.
    - SwitchingBundle was replaced by BufferQueue.
    - Expand credentials to include uid/gid for session authorizer.
    - Bypass control is now Mesa-specific and tied to the command line options.
      So the environment variable MIR_BYPASS has changed to MIR_SERVER_BYPASS.
    - Ongoing architectural changes in the compositor/renderer logic to
   ...

Read more...

Changed in mir (Ubuntu):
status: New → Fix Released
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.