There's something racy in ServerDisconnect.is_detected_by_client
Bug #1526248 reported by
Alan Griffiths
This bug affects 2 people
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mir |
Fix Released
|
Medium
|
Alan Griffiths | ||
mir (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Both
$ rm core;while bin/mir_
$ rm core; bin/mir_
Fail (with a core file) within a few thousand iterations
Related branches
lp:~alan-griffiths/mir/fix-1526248
- Daniel van Vugt: Abstain
- Alberto Aguirre (community): Approve
- PS Jenkins bot (community): Approve (continuous-integration)
- Kevin DuBois (community): Approve
-
Diff: 158 lines (+24/-18)5 files modifiedsrc/client/connection_surface_map.h (+2/-2)
src/client/rpc/mir_basic_rpc_channel.cpp (+4/-2)
src/client/rpc/mir_basic_rpc_channel.h (+3/-1)
src/client/rpc/mir_protobuf_rpc_channel.cpp (+7/-3)
src/client/surface_map.cpp (+8/-10)
Changed in mir: | |
importance: | Undecided → Medium |
To post a comment you must log in.
gdb) bt unix/sysv/ linux/raise. c:55 :__verbose_ terminate_ handler( ) () from /usr/lib/ x86_64- linux-gnu/ libstdc+ +.so.6 x86_64- linux-gnu/ libstdc+ +.so.6 x86_64- linux-gnu/ libstdc+ +.so.6 x86_64- linux-gnu/ libstdc+ +.so.6 :BufferStream: :process_ buffer (this=0x7f64c80 01730, buffer=..., lk=...) display_ server/ mir2/src/ client/ buffer_ stream. cpp:509 :BufferStream: :buffer_ available (this=0x7f64c80 01730, buffer=...) display_ server/ mir2/src/ client/ buffer_ stream. cpp:709 :rpc::MirProtob ufRpcChannel: :<lambda( mir::client: :ClientBufferSt ream*)> ::operator( )(mir:: client: :ClientBufferSt ream *) const (__closure= 0x7f64d84cf520, stream= 0x7f64c8001738) at /home/alan/ display_ server/ mir2/src/ client/ rpc/mir_ protobuf_ rpc_channel. cpp:279 handler< void(mir: :client: :ClientBufferSt ream*), mir::client: :rpc::MirProtob ufRpcChannel: :process_ event_sequence( const string& )::<lambda( mir::client: :ClientBufferSt ream*)> >::_M_invoke(const std::_Any_data &, <unknown type in bin/../ lib/libmirclien t.so.9, CU 0x37e003, DIE 0x3ad405>) (__functor=..., __args#0=<unknown type in bin/../ lib/libmirclien t.so.9, CU 0x37e003, DIE 0x3ad405>) at /usr/include/ c++/5/functiona l:1871 :ClientBufferSt ream*)> ::operator( )(mir:: client: :ClientBufferSt ream*) const ( 0x7f64d84cf520, __args# 0=0x7f64c800173 8) at /usr/include/ c++/5/functiona l:2271 :ConnectionSurf aceMap: :with_stream_ do(mir: :IntWrapper< mir::frontend: :detail: :SessionsBuffer StreamIdTag, int>, std::function<void (mir::client: :ClientBufferSt ream*)> const&) const (this=0x31485d0, stream_id=..., exec=...) display_ server/ mir2/src/ client/ surface_ map.cpp: 105 :rpc::MirProtob ufRpcChannel: :process_ event_sequence (this=0x314b460, "\"\"\n\ 002\b\000\ 022\034\ b\004\020> \030\357\ 375\266\ 365\375\ 377\377\ 377\377\ 001 \001(\274\ 030\060\ 000\070\ 217\006@ \263\005" ) display_ server/ mir2/src/ client/ rpc/mir_ protobuf_ rpc_channel. cpp:280 :rpc::MirProtob ufRpcChannel: :on_data_ available (this=0x314b460) display_ server/ mir2/src/ client/ rpc/mir_ protobuf_ rpc_channel. cpp:380 :rpc::Transport Observers: :<lambda( auto:1) >::operator( )<std:: shared_ ptr<mir: :client: :rpc::StreamTra nsport: :Observer> >(std:: shared_ ptr<mir: :client: :rpc::StreamTra nsport: :Observer> ) const (__closure= 0x7f64d84cfb10, observer=warning: RTTI symbol not found for class 'std::_ Sp_counted_ deleter< mir::client: :rpc::MirProtob ufRpcChannel* , mir::client: :rpc::MirProtob ufRpcChannel: :MirProtobufRpc Channel( std::unique_ ptr<mir: :client: :rpc::StreamTra nspor.. .
#0 0x00007f64dbbbd267 in __GI_raise (sig=sig@entry=6) at ../sysdeps/
#1 0x00007f64dbbbeeca in __GI_abort () at abort.c:89
#2 0x00007f64dc416b7d in __gnu_cxx:
#3 0x00007f64dc4149c6 in ?? () from /usr/lib/
#4 0x00007f64dc414a11 in std::terminate() () from /usr/lib/
#5 0x00007f64dc41555f in __cxa_pure_virtual () from /usr/lib/
#6 0x00007f64dd94b0b9 in mir::client:
at /home/alan/
#7 0x00007f64dd94c312 in mir::client:
at /home/alan/
#8 0x00007f64dd9779a5 in mir::client:
#9 0x00007f64dd979035 in std::_Function_
#10 0x00007f64dd934545 in std::function<void (mir::client:
this=
#11 0x00007f64dd9335c5 in mir::client:
at /home/alan/
#12 0x00007f64dd977d5c in mir::client:
event=
at /home/alan/
#13 0x00007f64dd97858b in mir::client:
at /home/alan/
#14 0x00007f64dd9703b9 in mir::client: