Yes, I am doing the debug to further chasing it down...
Thanks Steven.
On 12/9/18, Steven Watanabe via Boost
AMDG
On 12/08/2018 06:50 PM, hh h wrote:
How does it crash? There's no fundamental reason why prepending your own header with the size wouldn't work.
I sent 4 bytes header and 221 bytes messages repeatedly (every 2 seconds) calling from async_write of a sender, the receiver works correctly and perfectly at async_read for a couple minutes, then it crashed in the statement of readMessageBody for 221 bytes message at async_read(socket_, boost::asio::buffer(buffer, size), ....), where the size = 221n I don't think it is related to my program, either some bugs in async_read or libssl. Here is my debug:
Read body size = 221
Program received signal SIGSEGV, Segmentation fault. 0x00007ffff69d4c01 in __GI___libc_free (mem=0x5555557f7770) at malloc.c:3123 3123 malloc.c: No such file or directory.
(gdb) backtrace #0 0x00007ffff69d4c01 in __GI___libc_free (mem=0x5555557f7770) at malloc.c:3123 #1 0x00007ffff796a8fc in ?? () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1 #2 0x00007ffff796a139 in ?? () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1 #3 0x00007ffff796f9aa in ?? () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1 #4 0x00007ffff79797d5 in SSL_read () from /usr/lib/x86_64-linux-gnu/libssl.so.1.1 #5 0x00005555555665b1 in boost::asio::ssl::detail::engine::do_read ( this=0x5555557d0fe0, data=0x5555557f7765, length=221) at /usr/include/boost/asio/ssl/detail/impl/engine.ipp:309
........
(gdb) print (char *)mem $2 = 0x5555557f7770 "n\226"
This looks like some kind of memory corruption, possibly a double free. Have you tried valgrind or addrsan?
In Christ, Steven Watanabe
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost