Mir

Mir server dies with "Broken pipe" exception

Bug #1226139 reported by Daniel van Vugt
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mir
Fix Released
Critical
Alan Griffiths
mir (Ubuntu)
Fix Released
Critical
Alan Griffiths

Bug Description

Mir server dies with "Broken pipe" exception:

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >'
  what(): write: Broken pipe

TESTCASE:
1. Start mir_demo_server_shell
2. Start mir_demo_client_eglplasma
3. Start mir_demo_client_multiwin
4. Alt+Tab a couple of times
5. Press "Q"
6. Alt+Tab again

Expected: eglplasma client exits
Observed: Mir server crashes with the above exception.

Related branches

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

I suspect the trigger here is one of the clients crashing. So it looks like a client crash is triggering the server crash.

Changed in mir:
assignee: nobody → Daniel van Vugt (vanvugt)
status: New → In Progress
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Linking Robert's fix-focus-races branch because it looks like the same kind of server crash he was solving. Unfortunately that branch still needs fixing.

Revision history for this message
Daniel van Vugt (vanvugt) wrote :
Download full text (5.3 KiB)

#0 0x00007ffff6be2a50 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#1 0x00007ffff79a263e in boost::throw_exception<boost::system::system_error> (e=...) at /usr/include/boost/throw_exception.hpp:67
#2 0x00007ffff799c7c1 in boost::asio::detail::do_throw_error (err=..., location=0x7ffff7ab322d "write") at /usr/include/boost/asio/detail/impl/throw_error.ipp:38
#3 0x00007ffff799c557 in boost::asio::detail::throw_error (err=..., location=0x7ffff7ab322d "write") at /usr/include/boost/asio/detail/throw_error.hpp:42
#4 0x00007ffff79cee63 in boost::asio::write<boost::asio::basic_stream_socket<boost::asio::local::stream_protocol, boost::asio::stream_socket_service<boost::asio::local::stream_protocol> >, boost::asio::mutable_buffers_1> (s=..., buffers=...) at /usr/include/boost/asio/impl/write.hpp:62
#5 0x00007ffff79cd69a in mir::frontend::detail::SocketMessenger::send (this=0x7fffe0043018, body=...)
    at /home/dan/bzr/mir/pipe/src/server/frontend/socket_messenger.cpp:62
#6 0x00007ffff79d2cd2 in mir::frontend::detail::EventSender::send_event_sequence (this=0x7fffe0016d88, seq=...)
    at /home/dan/bzr/mir/pipe/src/server/frontend/event_sender.cpp:83
#7 0x00007ffff79d2ac3 in mir::frontend::detail::EventSender::handle_event (this=0x7fffe0016d88, e=...) at /home/dan/bzr/mir/pipe/src/server/frontend/event_sender.cpp:48
#8 0x00007ffff7a29696 in mir::shell::Surface::notify_change (this=0x7fffe00806a8, attrib=mir_surface_attrib_focus, value=0)
    at /home/dan/bzr/mir/pipe/src/server/shell/surface.cpp:317
#9 0x00007ffff7a293e0 in mir::shell::Surface::configure (this=0x7fffe00806a8, attrib=mir_surface_attrib_focus, value=0)
    at /home/dan/bzr/mir/pipe/src/server/shell/surface.cpp:246
#10 0x00007ffff7a25ec9 in mir::shell::DefaultFocusMechanism::set_focus_to (this=0xad73c8, focus_session=...)
    at /home/dan/bzr/mir/pipe/src/server/shell/default_focus_mechanism.cpp:51
#11 0x00007ffff7a234cb in mir::shell::SessionManager::set_focus_to_locked (this=0xae4a78, shell_session=...)
    at /home/dan/bzr/mir/pipe/src/server/shell/session_manager.cpp:101
#12 0x00007ffff7a22ac3 in mir::shell::SessionManager::close_session (this=0xae4a78, session=...) at /home/dan/bzr/mir/pipe/src/server/shell/session_manager.cpp:130
#13 0x00007ffff79c1002 in mir::frontend::SessionMediator::~SessionMediator (this=0x7fffe00794b8, __in_chrg=<optimised out>)
    at /home/dan/bzr/mir/pipe/src/server/frontend/session_mediator.cpp:79
#14 0x00007ffff7998fd9 in __gnu_cxx::new_allocator<mir::frontend::SessionMediator>::destroy<mir::frontend::SessionMediator> (this=0x7fffe00794b0, __p=0x7fffe00794b8)
    at /usr/include/c++/4.8/ext/new_allocator.h:124
#15 0x00007ffff7997709 in std::allocator_traits<std::allocator<mir::frontend::SessionMediator> >::_S_destroy<mir::frontend::SessionMediator> (__a=...,
    __p=0x7fffe00794b8) at /usr/include/c++/4.8/bits/alloc_traits.h:281
#16 0x00007ffff799605e in std::allocator_traits<std::allocator<mir::frontend::SessionMediator> >::destroy<mir::frontend::SessionMediator> (__a=..., __p=0x7fffe00794b8)
    at /usr/include/c++/4.8/bits/alloc_traits.h:405
#17 0x00007ffff7993ce7 in std::_Sp_counted_ptr_inplace<mir::frontend::SessionMediato...

Read more...

kevin gunn (kgunn72)
Changed in mir (Ubuntu):
status: New → In Progress
importance: Undecided → Critical
assignee: nobody → Daniel van Vugt (vanvugt)
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Apparently lp:~alan-griffiths/mir/socket-connection fixed more causes of this bug, but not entirely.

I can't tell right now as even older revisions are refusing to reproduce the crash for me today.

kevin gunn (kgunn72)
Changed in mir:
milestone: none → phone-v1-freeze
Changed in mir (Ubuntu):
milestone: none → ubuntu-13.10
milestone: ubuntu-13.10 → none
milestone: none → ubuntu-13.10
tags: added: phone-v1-freeze
Changed in mir:
assignee: Daniel van Vugt (vanvugt) → Alan Griffiths (alan-griffiths)
Changed in mir (Ubuntu):
assignee: Daniel van Vugt (vanvugt) → Alan Griffiths (alan-griffiths)
Changed in mir:
status: In Progress → Fix Committed
Changed in mir (Ubuntu):
status: In Progress → Fix Released
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Merged at 1087 means it actually went into 0.0.13.

Changed in mir:
status: Fix Committed → Fix Released
milestone: phone-v1-freeze → 0.0.13
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.