Mir

Nested server crashes with SIGSEGV on shutdown in eglDestroyContext()

Bug #1372276 reported by Daniel van Vugt
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mir
Fix Released
High
Alexandros Frantzis
0.7
Fix Released
High
Alexandros Frantzis
mir (Ubuntu)
Fix Released
High
Unassigned
mir (Ubuntu RTM)
Fix Released
High
Unassigned

Bug Description

Start a host server and nested server. Ctrl+C ... crash.

Test case:
  1. sudo -s sh -c "bin/mir_demo_server_minimal -f /tmp/outer & sleep 2 ; bin/mir_demo_server_shell --host-socket /tmp/outer -f /tmp/inner"
  2. Ctrl+C

(gdb) bt
#0 0x00007f9e628cb2e6 in ?? ()
   from /usr/lib/x86_64-linux-gnu/mesa-egl/libEGL.so.1
#1 0x00007f9e628c313a in eglDestroyContext ()
   from /usr/lib/x86_64-linux-gnu/mesa-egl/libEGL.so.1
#2 0x00007f9e6453c9ef in mir::graphics::EGLContextStore::~EGLContextStore (
    this=0x113a7a0, __in_chrg=<optimised out>)
    at /home/dan/bzr/mir/dev/src/platform/graphics/egl_resources.cpp:40
#3 0x00007f9e648e8b54 in mir::graphics::SurfacelessEGLContext::~SurfacelessEGLContext (this=0x113a770, __in_chrg=<optimised out>)
    at /home/dan/bzr/mir/dev/src/server/graphics/surfaceless_egl_context.cpp:175
#4 0x00007f9e648e8ba0 in mir::graphics::SurfacelessEGLContext::~SurfacelessEGLContext (this=0x113a770, __in_chrg=<optimised out>)
    at /home/dan/bzr/mir/dev/src/server/graphics/surfaceless_egl_context.cpp:178
#5 0x00007f9e64869032 in std::default_delete<mir::graphics::GLContext>::operator() (this=0x1255058, __ptr=0x113a770)
    at /usr/include/c++/4.9/bits/unique_ptr.h:76
#6 0x00007f9e648675b3 in std::unique_ptr<mir::graphics::GLContext, std::default_delete<mir::graphics::GLContext> >::~unique_ptr (this=0x1255058,
    __in_chrg=<optimised out>) at /usr/include/c++/4.9/bits/unique_ptr.h:236
#7 0x00007f9e6487598f in mir::scene::GLPixelBuffer::~GLPixelBuffer (
    this=0x1255050, __in_chrg=<optimised out>)
    at /home/dan/bzr/mir/dev/src/server/scene/gl_pixel_buffer.cpp:66
#8 0x00007f9e648732df in __gnu_cxx::new_allocator<mir::scene::GLPixelBuffer>::destroy<mir::scene::GLPixelBuffer> (this=0x1255050, __p=0x1255050)
    at /usr/include/c++/4.9/ext/new_allocator.h:124
#9 0x00007f9e64872f4d in std::allocator_traits<std::allocator<mir::scene::GLPixelBuffer> >::_S_destroy<mir::scene::GLPixelBuffer> (__a=..., __p=0x1255050)
    at /usr/include/c++/4.9/bits/alloc_traits.h:282
#10 0x00007f9e64872b25 in std::allocator_traits<std::allocator<mir::scene::GLPixelBuffer> >::destroy<mir::scene::GLPixelBuffer> (__a=..., __p=0x1255050)
    at /usr/include/c++/4.9/bits/alloc_traits.h:411
#11 0x00007f9e64871d4f in std::_Sp_counted_ptr_inplace<mir::scene::GLPixelBuffer, std::allocator<mir::scene::GLPixelBuffer>, (__gnu_cxx::_Lock_policy)2>::_M_dispose (this=0x1255040) at /usr/include/c++/4.9/bits/shared_ptr_base.h:524
#12 0x00007f9e647c7980 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=0x1255040) at /usr/include/c++/4.9/bits/shared_ptr_base.h:149
#13 0x00007f9e647c76e9 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count (this=0xf782a0, __in_chrg=<optimised out>)
    at /usr/include/c++/4.9/bits/shared_ptr_base.h:666
#14 0x00007f9e64866368 in std::__shared_ptr<mir::scene::PixelBuffer, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr (this=0xf78298, __in_chrg=<optimised out>)
    at /usr/include/c++/4.9/bits/shared_ptr_base.h:914
#15 0x00007f9e64866382 in std::shared_ptr<mir::scene::PixelBuffer>::~shared_ptr
    (this=0xf78298, __in_chrg=<optimised out>)
    at /usr/include/c++/4.9/bits/shared_ptr.h:93
#16 0x00007f9e64892acc in mir::scene::ThreadedSnapshotStrategy::~ThreadedSnapshotStrategy (this=0xf78290, __in_chrg=<optimised out>)
    at /home/dan/bzr/mir/dev/src/server/scene/threaded_snapshot_strategy.cpp:122
#17 0x00007f9e6487329b in __gnu_cxx::new_allocator<mir::scene::ThreadedSnapshotStrategy>::destroy<mir::scene::ThreadedSnapshotStrategy> (this=0xf78290,
    __p=0xf78290) at /usr/include/c++/4.9/ext/new_allocator.h:124
#18 0x00007f9e64872ef5 in std::allocator_traits<std::allocator<mir::scene::ThreadedSnapshotStrategy> >::_S_destroy<mir::scene::ThreadedSnapshotStrategy> (
    __a=..., __p=0xf78290) at /usr/include/c++/4.9/bits/alloc_traits.h:282
#19 0x00007f9e64872ac1 in std::allocator_traits<std::allocator<mir::scene::ThreadedSnapshotStrategy> >::destroy<mir::scene::ThreadedSnapshotStrategy> (
    __a=..., __p=0xf78290) at /usr/include/c++/4.9/bits/alloc_traits.h:411
#20 0x00007f9e64871bcf in std::_Sp_counted_ptr_inplace<mir::scene::ThreadedSnapshotStrategy, std::allocator<mir::scene::ThreadedSnapshotStrategy>, (__gnu_cxx::_Lock_policy)2>::_M_dispose (this=0xf78280)
    at /usr/include/c++/4.9/bits/shared_ptr_base.h:524
#21 0x00007f9e647c7980 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release (this=0xf78280) at /usr/include/c++/4.9/bits/shared_ptr_base.h:149

Related branches

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

I noticed this late last week. Seems to be a new bug...

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Actually I'm not sure this is a regression. I've tried bisecting back in time quite a bit and the bug exists for every revision I've tested.

summary: - [regression] Nested server crashes with SIGSEGV on shutdown in
- eglDestroyContext()
+ Nested server crashes with SIGSEGV on shutdown in eglDestroyContext()
tags: removed: regression
description: updated
Changed in mir:
assignee: nobody → Alexandros Frantzis (afrantzis)
status: New → In Progress
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

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

Changed in mir:
status: In Progress → Fix Committed
Changed in mir (Ubuntu):
importance: Undecided → High
status: New → Triaged
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

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

Changed in mir:
status: Fix Committed → Fix Released
Changed in mir (Ubuntu RTM):
importance: Undecided → High
status: New → Triaged
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (5.5 KiB)

This bug was fixed in the package mir - 0.8.0+14.10.20141010-0ubuntu1

---------------
mir (0.8.0+14.10.20141010-0ubuntu1) utopic; urgency=medium

  [ Daniel van Vugt ]
  * New upstream release 0.8.0 (https://launchpad.net/mir/+milestone/0.8.0)
    - Enhancements:
      . Less sensitivity to ABI breaks - many headers unused by external
        projects are now hidden and not installed by -dev packaes. If you
        require any headers that are missing, just ask.
      . Touchspots: --enable-touchspots to servers; visually shows touch
        locations (warning: This affects performance LP: #1373692).
      . Client performance reporting: Any Mir client can now get accurate
        performance information (frame rate, render time, buffer lag etc)
        logged to stdout. Just set env MIR_CLIENT_PERF_REPORT=log
      . Further improved touch responsiveness, with less lag and smoother
        scrolling (so long as you don't enable touchspots).
      . Slightly faster builds using precompiled headers.
      . Turn hardware overlays on by default. When in use, this halves the
        CPU usage of a Mir server. Already enabled in unity-system-compositor.
      . More scripting to detect ABI breaks.
      . Improved src/ tree consistency (renamed "src/shared" to "src/common").
      . Improved fatal signal design: Changed from SIGTERM to SIGHUP delivered
        to clients on unexpected server disconnection.
      . Improved library/package design to allow concurrent installations
        of different Mir versions without conflicts.
      . Fd reception code is now common to client and server.
    - ABI summary: Servers need rebuilding, but clients do not;
      . Mirclient ABI unchanged at 8
      . Mircommon ABI bumped to 2
      . Mirplatform ABI bumped to 3
      . Mirserver ABI bumped to 26
    - API changes between Mir 0.7 and 0.8:
      . Lots of headers removed from the public SDK! We have only hidden
        headers not known to be used by any known projects. Please let us
        know if anything is missing - https://bugs.launchpad.net/mir/+filebug
      . graphics::Platform - interface changed significantly.
      . Lots of server API changes to support touchspots.
      . File descriptors now passed as type Fd instead of int32_t.
    - Bug fixes:
      . [regression] Mir deb packages with versioned names cannot be installed
        simultaneously any more (LP: #1293944)
      . A frozen client can hang the whole server (LP: #1350207)
      . QtMir FTBFS: fatal error: mir/input/input_channel.h: No such file or
        directory (LP: #1365934)
      . [regression] platform-api fails to build against Mir 0.8 (LP: #1368354)
      . Mir FTBFS with gcc 4.9.1-14 (utopic update):
        auto_unblock_thread.h:44:46: error: no matching function for call to
        ‘std::thread::thread(<brace-enclosed initializer list>)’ (LP: #1369389)
      . [regression] Compositing is jerky and stutters during touch events
        (LP: #1372850)
      . unit test fails: AndroidInputReceiverSetup.slow_raw_input_doesnt_cause_
        frameskipping (LP: #1373826)
      . intermittent hang in TestClientInput (LP: #1338612)
      . TestClientInput.scene_obscure_mo...

Read more...

Changed in mir (Ubuntu):
status: Triaged → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (5.4 KiB)

This bug was fixed in the package mir - 0.8.0+14.10.20141005-0ubuntu1

---------------
mir (0.8.0+14.10.20141005-0ubuntu1) 14.09; urgency=medium

  [ Daniel van Vugt ]
  * New upstream release 0.8.0 (https://launchpad.net/mir/+milestone/0.8.0)
    - Enhancements:
      . Less sensitivity to ABI breaks - many headers unused by external
        projects are now hidden and not installed by -dev packaes. If you
        require any headers that are missing, just ask.
      . Touchspots: --enable-touchspots to servers; visually shows touch
        locations (warning: This affects performance LP: #1373692).
      . Client performance reporting: Any Mir client can now get accurate
        performance information (frame rate, render time, buffer lag etc)
        logged to stdout. Just set env MIR_CLIENT_PERF_REPORT=log
      . Further improved touch responsiveness, with less lag and smoother
        scrolling (so long as you don't enable touchspots).
      . Slightly faster builds using precompiled headers.
      . Turn hardware overlays on by default. When in use, this halves the
        CPU usage of a Mir server. Already enabled in unity-system-compositor.
      . More scripting to detect ABI breaks.
      . Improved src/ tree consistency (renamed "src/shared" to "src/common").
      . Improved fatal signal design: Changed from SIGTERM to SIGHUP delivered
        to clients on unexpected server disconnection.
      . Improved library/package design to allow concurrent installations
        of different Mir versions without conflicts.
      . Fd reception code is now common to client and server.
    - ABI summary: Servers need rebuilding, but clients do not;
      . Mirclient ABI unchanged at 8
      . Mircommon ABI bumped to 2
      . Mirplatform ABI bumped to 3
      . Mirserver ABI bumped to 26
    - API changes between Mir 0.7 and 0.8:
      . Lots of headers removed from the public SDK! We have only hidden
        headers not known to be used by any known projects. Please let us
        know if anything is missing - https://bugs.launchpad.net/mir/+filebug
      . graphics::Platform - interface changed significantly.
      . Lots of server API changes to support touchspots.
      . File descriptors now passed as type Fd instead of int32_t.
    - Bug fixes:
      . [regression] Mir deb packages with versioned names cannot be installed
        simultaneously any more (LP: #1293944)
      . A frozen client can hang the whole server (LP: #1350207)
      . QtMir FTBFS: fatal error: mir/input/input_channel.h: No such file or
        directory (LP: #1365934)
      . [regression] platform-api fails to build against Mir 0.8 (LP: #1368354)
      . Mir FTBFS with gcc 4.9.1-14 (utopic update):
        auto_unblock_thread.h:44:46: error: no matching function for call to
        ‘std::thread::thread(<brace-enclosed initializer list>)’ (LP: #1369389)
      . [regression] Compositing is jerky and stutters during touch events
        (LP: #1372850)
      . unit test fails: AndroidInputReceiverSetup.slow_raw_input_doesnt_cause_
        frameskipping (LP: #1373826)
      . intermittent hang in TestClientInput (LP: #1338612)
      . TestClientInput.scene_obscure_mot...

Read more...

Changed in mir (Ubuntu RTM):
status: Triaged → 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.