← Back to team overview

desktop-packages team mailing list archive

[Bug 1506358] Re: libmirclient gives up and exits prematurely with "std::exception::what: disconnected: no new buffers" via ExchangeSemantics::submit()

 

It appears the problem happens when the cursor is right on the corner of
the window during rapid resize. Sometimes it escapes/enters the window
during this time, which causes Xmir to innocently
mir_buffer_stream_release_sync() the cursor, and the libmirclient dies:

==8162== Process terminating with default action of signal 6 (SIGABRT)
==8162==    at 0x6F7C267: raise (raise.c:55)
==8162==    by 0x6F7DEC9: abort (abort.c:89)
==8162==    by 0x7F20B7C: __gnu_cxx::__verbose_terminate_handler() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21)
==8162==    by 0x7F1E9C5: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21)
==8162==    by 0x7F1EA10: std::terminate() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21)
==8162==    by 0x7F1EC78: __cxa_rethrow (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21)
==8162==    by 0x531D26D: mir::client::rpc::MirProtobufRpcChannel::send_message(mir::protobuf::wire::Invocation const&, mir::protobuf::wire::Invocation const&, std::vector<mir::Fd, std::allocator<mir::Fd> >&) (mir_protobuf_rpc_channel.cpp:238)
==8162==    by 0x531CFB8: mir::client::rpc::MirProtobufRpcChannel::call_method(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, google::protobuf::MessageLite const*, google::protobuf::MessageLite*, google::protobuf::Closure*) (mir_protobuf_rpc_channel.cpp:210)
==8162==    by 0x531B459: mir::client::rpc::DisplayServer::release_buffer_stream(mir::protobuf::BufferStreamId const*, mir::protobuf::Void*, google::protobuf::Closure*) (mir_display_server.cpp:127)
==8162==    by 0x52A04B3: MirConnection::release_buffer_stream(mir::client::ClientBufferStream*, void (*)(MirBufferStream*, void*), void*) (mir_connection.cpp:655)
==8162==    by 0x52F295C: mir::client::BufferStream::release(void (*)(MirBufferStream*, void*), void*) (buffer_stream.cpp:630)
==8162==    by 0x53003E3: mir_buffer_stream_release (mir_buffer_stream_api.cpp:91)

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to xorg-server in Ubuntu.
https://bugs.launchpad.net/bugs/1506358

Title:
  libmirclient gives up and exits prematurely with
  "std::exception::what: disconnected: no new buffers" via
  ExchangeSemantics::submit()

Status in Mir:
  New
Status in mir package in Ubuntu:
  New
Status in xorg-server package in Ubuntu:
  New

Bug description:
  Under heavy resizing (stress testing under Valgrind), my Mir client
  (Xmir) crashed with:

  [1444895332.392862] <ERROR> MirBufferStreamAPI: Caught exception at client library boundary (in mir_buffer_stream_swap_buffers): /build/mir-7io2Aj/mir-0.16.0+15.10.20150921.1/src/client/buffer_stream.cpp(169): Throw in function virtual MirWaitHandle* {anonymous}::ExchangeSemantics::submit(const std::function<void()>&, mir::geometry::Size, MirPixelFormat, int)
  Dynamic exception type: boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::runtime_error> >
  std::exception::what: disconnected: no new buffers

  The strange thing is it's only the client that died. The server
  survived and I can connect new clients to it.

To manage notifications about this bug go to:
https://bugs.launchpad.net/mir/+bug/1506358/+subscriptions