Seen on https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/919/consoleFull
Seems to be a leak in NBS RPC:
08:30:43 ==23077== 900 (240 direct, 660 indirect) bytes in 15 blocks are definitely lost in loss record 264 of 271
08:30:43 ==23077== at 0x402D6BC: operator new(unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
08:30:43 ==23077== by 0x9204F6B: google::protobuf::Closure* google::protobuf::NewCallback<mir::protobuf::Void*>(void (*)(mir::protobuf::Void*), mir::protobuf::Void*) (common.h:1030)
08:30:43 ==23077== by 0x91FEBEC: (anonymous namespace)::Requests::free_buffer(int) (buffer_stream.cpp:252)
08:30:43 ==23077== by 0x91B65C2: mir::client::BufferVault::free_buffer(int) (buffer_vault.cpp:95)
08:30:43 ==23077== by 0x91B65EB: mir::client::BufferVault::realloc_buffer(int, mir::geometry::Size, MirPixelFormat, int) (buffer_vault.cpp:100)
08:30:43 ==23077== by 0x91B7016: mir::client::BufferVault::wire_transfer_inbound(mir::protobuf::Buffer const&) (buffer_vault.cpp:178)
08:30:43 ==23077== by 0x91FEF0C: (anonymous namespace)::NewBufferSemantics::deposit(mir::protobuf::Buffer const&, mir::geometry::Size, MirPixelFormat) (buffer_stream.cpp:294)
08:30:43 ==23077== by 0x9200D02: mir::client::BufferStream::process_buffer(mir::protobuf::Buffer const&, std::unique_lock<std::mutex>&) (buffer_stream.cpp:550)
08:30:43 ==23077== by 0x9201CD1: mir::client::BufferStream::buffer_available(mir::protobuf::Buffer const&) (buffer_stream.cpp:709)
08:30:43 ==23077== by 0x921A9CE: mir::client::rpc::MirProtobufRpcChannel::process_event_sequence(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(mir::client::BufferReceiver*)#1}::operator()(mir::client::BufferReceiver*) const (mir_protobuf_rpc_channel.cpp:309)
08:30:43 ==23077== by 0x921C889: std::_Function_handler<void (mir::client::BufferReceiver*), mir::client::rpc::MirProtobufRpcChannel::process_event_sequence(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(mir::client::BufferReceiver*)#1}>::_M_invoke(std::_Any_data const&, mir::client::BufferReceiver*&&) (functional:1871)
08:30:43 ==23077== by 0x91AA2D8: std::function<void (mir::client::BufferReceiver*)>::operator()(mir::client::BufferReceiver*) const (functional:2267)
08:30:43 ==23077== by 0x91A9518: mir::client::ConnectionSurfaceMap::with_stream_do(mir::IntWrapper<mir::frontend::detail::SessionsBufferStreamIdTag, int>, std::function<void (mir::client::BufferReceiver*)> const&) const (surface_map.cpp:67)
08:30:43 ==23077== by 0x921AFAD: mir::client::rpc::MirProtobufRpcChannel::process_event_sequence(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (mir_protobuf_rpc_channel.cpp:310)
08:30:43 ==23077== by 0x921BD1B: mir::client::rpc::MirProtobufRpcChannel::on_data_available() (mir_protobuf_rpc_channel.cpp:425)
08:30:43 ==23077== by 0x92153DE: _ZZN3mir6client3rpc18TransportObservers17on_data_availableEvENKUlT_E_clISt10shared_ptrINS1_15StreamTransport8ObserverEEEEDaS3_ (stream_socket_transport.cpp:40)
08:30:43 ==23077== by 0x921646F: _ZNSt17_Function_handlerIFvRKSt10shared_ptrIN3mir6client3rpc15StreamTransport8ObserverEEEZNS3_18TransportObservers17on_data_availableEvEUlT_E_E9_M_invokeERKSt9_Any_dataS8_ (functional:1871)
08:30:43 ==23077== by 0x92173A7: std::function<void (std::shared_ptr<mir::client::rpc::StreamTransport::Observer> const&)>::operator()(std::shared_ptr<mir::client::rpc::StreamTransport::Observer> const&) const (functional:2267)
08:30:43 ==23077== by 0x9216DB2: mir::ThreadSafeList<std::shared_ptr<mir::client::rpc::StreamTransport::Observer> >::for_each(std::function<void (std::shared_ptr<mir::client::rpc::StreamTransport::Observer> const&)> const&) (thread_safe_list.h:80)
08:30:43 ==23077== by 0x921542E: mir::client::rpc::TransportObservers::on_data_available() (stream_socket_transport.cpp:40)
08:30:43 ==23077== by 0x9215FCC: mir::client::rpc::StreamSocketTransport::dispatch(unsigned int) (stream_socket_transport.cpp:208)
08:30:43 ==23077== by 0x8E7157A: mir::dispatch::MultiplexingDispatchable::dispatch(unsigned int) (multiplexing_dispatchable.cpp:210)
08:30:43 ==23077== by 0x921C185: mir::client::rpc::MirProtobufRpcChannel::dispatch(unsigned int) (mir_protobuf_rpc_channel.cpp:483)
08:30:43 ==23077== by 0x8E7157A: mir::dispatch::MultiplexingDispatchable::dispatch(unsigned int) (multiplexing_dispatchable.cpp:210)
08:30:43 ==23077== by 0x8E74636: (anonymous namespace)::dispatch_loop(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<mir::dispatch::ThreadedDispatcher::ThreadShutdownRequestHandler>, std::shared_ptr<mir::dispatch::Dispatchable>, std::function<void ()> const&) (threaded_dispatcher.cpp:211)
08:30:43 ==23077== by 0x8E7F6C3: void std::_Bind_simple<void (*(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<mir::dispatch::ThreadedDispatcher::ThreadShutdownRequestHandler>, std::shared_ptr<mir::dispatch::MultiplexingDispatchable>, std::function<void ()>))(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<mir::dispatch::ThreadedDispatcher::ThreadShutdownRequestHandler>, std::shared_ptr<mir::dispatch::Dispatchable>, std::function<void ()> const&)>::_M_invoke<0u, 1u, 2u, 3u>(std::_Index_tuple<0u, 1u, 2u, 3u>) (functional:1531)
08:30:43 ==23077== by 0x8E7F236: std::_Bind_simple<void (*(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<mir::dispatch::ThreadedDispatcher::ThreadShutdownRequestHandler>, std::shared_ptr<mir::dispatch::MultiplexingDispatchable>, std::function<void ()>))(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<mir::dispatch::ThreadedDispatcher::ThreadShutdownRequestHandler>, std::shared_ptr<mir::dispatch::Dispatchable>, std::function<void ()> const&)>::operator()() (functional:1520)
08:30:43 ==23077== by 0x8E7EE2B: std::thread::_Impl<std::_Bind_simple<void (*(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::shared_ptr<mir::dispatch::ThreadedDispatcher::ThreadShutdownRequestHandler>, std::shared_ptr<mir::dispatch::MultiplexingDispatchable>, std::function<void ()>))(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<mir::dispatch::ThreadedDispatcher::ThreadShutdownRequestHandler>, std::shared_ptr<mir::dispatch::Dispatchable>, std::function<void ()> const&)> >::_M_run() (thread:115)
08:30:43 ==23077== by 0x44595DD: ??? (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.21)
08:30:43 ==23077== by 0x45AC2B4: start_thread (pthread_create.c:333)
08:30:43 ==23077== by 0x46AA16D: clone (clone.S:114)
https:/ /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= vivid+overlay/ 928/consoleFull
https:/ /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial/ 928/consoleFull