The actual reason for crash is indeed due to IFMapClient object (client) already deleted, especially its vtable. Since there is no entry (or rather invalid entry may be) for method identifier() from the derived class, segv is generated, rightly so..
Just for record (from another core with similar signature)
(gdb) info vtbl client IFMapXmppChannel::IFMapSender
vtable for 'IFMapClient' @ 0x7f83c08ef3b0 (subobject @ 0x7f83c34cb570):
[0]: 0x7f83c2ca7f70
[1]: 0x111
[2]: 0x7f83c3140bf0
[3]: 0x7f83c34cb560
[4]: 0x693c0a3e3f22302e
[5]: 0xdc7370 <vtable for pugi::xml_writer+16>
(gdb)
not good. identifier() method is not present in the vtable and hence we can
assert that client is deleted already.
Good one looks like this (for an object of another type), just e.g.
The actual reason for crash is indeed due to IFMapClient object (client) already deleted, especially its vtable. Since there is no entry (or rather invalid entry may be) for method identifier() from the derived class, segv is generated, rightly so..
Just for record (from another core with similar signature)
(gdb) info vtbl client IFMapXmppChanne l::IFMapSender writer+ 16>
vtable for 'IFMapClient' @ 0x7f83c08ef3b0 (subobject @ 0x7f83c34cb570):
[0]: 0x7f83c2ca7f70
[1]: 0x111
[2]: 0x7f83c3140bf0
[3]: 0x7f83c34cb560
[4]: 0x693c0a3e3f22302e
[5]: 0xdc7370 <vtable for pugi::xml_
(gdb)
not good. identifier() method is not present in the vtable and hence we can
assert that client is deleted already.
Good one looks like this (for an object of another type), just e.g.
(gdb) f 8 src/xmpp/ xmpp_session. cc:308 src/xmpp/ xmpp_session. cc: No such file or directory. :Send(unsigned char const*, unsigned long, unsigned long*)> :Connected( boost:: asio::ip: :basic_ endpoint< boost:: asio::ip: :tcp>)> :Accepted( )> :ToString( ) const> :socket( ) const> :ReleaseBuffer( boost:: asio::const_ buffer) > :GetSessionInst ance() const> :SetSocketOptio ns()> :AsyncReadStart ()> :SetDeferReader (bool)> :IsReaderDeferr ed() const> :AsyncReadHandl erProcess( boost:: asio::mutable_ buffer, unsigned long&, boost:: system: :error_ code&)> :CreateReaderTa sk(boost: :asio:: mutable_ buffer, unsigned long)> :~XmppSession( )> :~XmppSession( )> :OnRead( boost:: asio::const_ buffer) > :WriteReady( boost:: system: :error_ code const&)> :AsyncReadSome( boost:: asio::mutable_ buffer) > :WriteSome( unsigned char const*, unsigned long, boost:: system: :error_ code&)> :AsyncWrite( unsigned char const*, unsigned long)> :reader_ task_id( ) const>
#8 0x0000000000b53a3d in XmppSession::OnRead (this=0x2417ad0, buffer=...) at controller/
308 controller/
(gdb) info vtbl this
vtable for 'XmppSession' @ 0xdff3b0 (subobject @ 0x2417ad0):
[0]: 0xd0b020 <TcpSession:
[1]: 0xd09c20 <TcpSession:
[2]: 0xd09820 <TcpSession:
[3]: 0x905550 <TcpSession:
[4]: 0xcefd10 <SslSession:
[5]: 0xd05bf0 <TcpSession:
[6]: 0xb53b10 <XmppSession:
[7]: 0xd0ecc0 <TcpSession:
[8]: 0xd09640 <TcpSession:
[9]: 0xd05740 <TcpSession:
[10]: 0x9054e0 <TcpSession:
[11]: 0xcf0ad0 <SslSession:
[12]: 0xcefd30 <SslSession:
[13]: 0xb52730 <XmppSession:
[14]: 0xb52910 <XmppSession:
[15]: 0xb53890 <XmppSession:
[16]: 0xb522d0 <XmppSession:
[17]: 0xceffa0 <SslSession:
[18]: 0xcf0b20 <SslSession:
[19]: 0xcf12a0 <SslSession:
[20]: 0x9054f0 <TcpSession: