unity8 crashed with SIGABRT in __gnu_cxx::__verbose_terminate_handler() on exit

Bug #1427946 reported by Eustachy Motyka
20
This bug affects 2 people
Affects Status Importance Assigned to Milestone
qtmir (Ubuntu)
Triaged
High
Gerry Boland

Bug Description

Unity8 aborts on exit with:

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::runtime_error> >'
  what(): Nested Mir Display Error: Failed to update EGL surface.

https://errors.ubuntu.com/problem/fc69b4f16d4d4571c83038bf9dc47b84135d9ced

ProblemType: Crash
DistroRelease: Ubuntu 15.04
Package: unity8 8.02+15.04.20150302-0ubuntu1
ProcVersionSignature: Ubuntu 3.19.0-7.7-generic 3.19.0
Uname: Linux 3.19.0-7-generic i686
ApportVersion: 2.16.2-0ubuntu1
Architecture: i386
Date: Wed Mar 4 02:22:30 2015
ExecutablePath: /usr/bin/unity8
InstallationDate: Installed on 2014-12-10 (83 days ago)
InstallationMedia: Ubuntu 15.04 "Vivid Vervet" - Alpha i386 (20141209)
ProcCmdline: unity8
ProcEnviron:
 PATH=(custom, no user)
 XDG_RUNTIME_DIR=<set>
 LANG=pl_PL.UTF-8
 SHELL=/bin/bash
Signal: 6
SourcePackage: unity8
StacktraceTop:
 __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/i386-linux-gnu/libstdc++.so.6
 ?? () from /usr/lib/i386-linux-gnu/libstdc++.so.6
 std::terminate() () from /usr/lib/i386-linux-gnu/libstdc++.so.6
 __cxa_throw () from /usr/lib/i386-linux-gnu/libstdc++.so.6
 ?? () from /usr/lib/i386-linux-gnu/libmirserver.so.30
Title: unity8 crashed with SIGABRT in __gnu_cxx::__verbose_terminate_handler()
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups:

Revision history for this message
Eustachy Motyka (eusmotyka) wrote :
Revision history for this message
Apport retracing service (apport) wrote :

StacktraceTop:
 __gnu_cxx::__verbose_terminate_handler () at ../../../../src/libstdc++-v3/libsupc++/vterminate.cc:95
 __cxxabiv1::__terminate (handler=0xb60e8d10 <__gnu_cxx::__verbose_terminate_handler()>) at ../../../../src/libstdc++-v3/libsupc++/eh_terminate.cc:47
 std::terminate () at ../../../../src/libstdc++-v3/libsupc++/eh_terminate.cc:57
 __cxxabiv1::__cxa_throw (obj=0x9729ba0, tinfo=0xb39d7d20 <typeinfo for boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::logic_error> >>, dest=0xb3820350 <boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::logic_error> >::~clone_impl()>) at ../../../../src/libstdc++-v3/libsupc++/eh_throw.cc:87
 boost::throw_exception<boost::exception_detail::error_info_injector<std::logic_error> > (e=...) at /usr/include/boost/throw_exception.hpp:70

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 unity8 (Ubuntu):
importance: Undecided → Medium
tags: removed: need-i386-retrace
Revision history for this message
Michał Sawicz (saviq) wrote : Re: unity8 crashed with SIGABRT in __gnu_cxx::__verbose_terminate_handler()

Can you please post ~/.cache/upstart/unity8.log?

information type: Private → Public
Changed in unity8 (Ubuntu):
status: New → Incomplete
Revision history for this message
Michał Sawicz (saviq) wrote :
Changed in unity8 (Ubuntu):
status: Incomplete → Triaged
importance: Medium → High
summary: unity8 crashed with SIGABRT in __gnu_cxx::__verbose_terminate_handler()
+ on exit
description: updated
Michał Sawicz (saviq)
description: updated
Revision history for this message
Gerry Boland (gerboland) wrote :

I suspect at shutdown, the "QScreen" backing the qquickwindow is deleted before the qquickwindow is closed - when that happens, qt still has gl resources it wants to release, so tries to acquire a new shared gl context and release them, before shutting down properly.

But this causes qtmir to try creating a new QPlatformOpenGLContext which tries to create a Display, while mir is shutting down, and I suspect the egl state is not suited to that.

Proper solution is to implement a QPlatformOffscreenSurface and use it on shutdown

Changed in mir (Ubuntu):
status: New → Invalid
Changed in qtmir (Ubuntu):
status: New → Confirmed
Changed in qtmir:
status: New → Triaged
importance: Undecided → High
assignee: nobody → Gerry Boland (gerboland)
Michał Sawicz (saviq)
Changed in unity8 (Ubuntu):
status: Triaged → Invalid
no longer affects: unity8 (Ubuntu)
no longer affects: mir (Ubuntu)
Changed in qtmir (Ubuntu):
importance: Undecided → High
Michał Sawicz (saviq)
Changed in qtmir (Ubuntu):
assignee: nobody → Gerry Boland (gerboland)
status: Confirmed → Triaged
no longer affects: qtmir
tags: added: artful
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

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