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)
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) :__verbose_ terminate_ handler( ) (in /usr/lib/ x86_64- linux-gnu/ libstdc+ +.so.6. 0.21) x86_64- linux-gnu/ libstdc+ +.so.6. 0.21) x86_64- linux-gnu/ libstdc+ +.so.6. 0.21) x86_64- linux-gnu/ libstdc+ +.so.6. 0.21) :rpc::MirProtob ufRpcChannel: :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) :rpc::MirProtob ufRpcChannel: :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) :rpc::DisplaySe rver::release_ buffer_ stream( mir::protobuf: :BufferStreamId const*, mir::protobuf: :Void*, google: :protobuf: :Closure* ) (mir_display_ server. cpp:127) :release_ buffer_ stream( mir::client: :ClientBufferSt ream*, void (*)(MirBufferSt ream*, void*), void*) (mir_connection .cpp:655) :BufferStream: :release( void (*)(MirBufferSt ream*, void*), void*) (buffer_ stream. cpp:630) stream_ release (mir_buffer_ stream_ api.cpp: 91)
==8162== at 0x6F7C267: raise (raise.c:55)
==8162== by 0x6F7DEC9: abort (abort.c:89)
==8162== by 0x7F20B7C: __gnu_cxx:
==8162== by 0x7F1E9C5: ??? (in /usr/lib/
==8162== by 0x7F1EA10: std::terminate() (in /usr/lib/
==8162== by 0x7F1EC78: __cxa_rethrow (in /usr/lib/
==8162== by 0x531D26D: mir::client:
==8162== by 0x531CFB8: mir::client:
==8162== by 0x531B459: mir::client:
==8162== by 0x52A04B3: MirConnection:
==8162== by 0x52F295C: mir::client:
==8162== by 0x53003E3: mir_buffer_