Open a-lerion opened 3 years ago
Instead of opening a new issue, I think there is direct problem-relations, plus there is a directly corelated (in identifying the cause ) OpenSSL issue https://github.com/openssl/openssl/issues/15046
The code is of no big differences from concurrent read & write example using the boost::asio::post(m_strand,
but uses asio::async_write(socket,
with asio::bind_executor(m_strand,
a case of async_write
https://github.com/kashirin-alex/swc-db/blob/0726b977a1f13cad6a94bbdd0ebc7113852494c1/src/cc/lib/swcdb/core/comm/ConnHandler.cc#L674
a case of async_read
https://github.com/kashirin-alex/swc-db/blob/0726b977a1f13cad6a94bbdd0ebc7113852494c1/src/cc/lib/swcdb/core/comm/ConnHandler.cc#L693
The execution flow is as follow:
It is not to simple to reproduce, requires/easier with many write-a-head and ~1TB volume https://www.swcdb.org/use/load_generator/#run-swcdb_load_generator GDB traces:
(gdb) where
#0 asio::detail::epoll_reactor::start_op (this=0xccc000, op_type=1, descriptor=9, descriptor_data=@0x128ec28: 0x0, op=0xe7e000, is_continuation=<optimized out>, allow_speculative=true) at /usr/local/include/asio/detail/impl/epoll_reactor.ipp:244
#1 0x00007ffff72091c9 in asio::detail::reactive_socket_service_base::async_send<asio::const_buffer, asio::detail::write_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > > >, asio::any_io_executor> (io_ex=..., handler=..., flags=0, buffers=..., impl=..., this=<optimized out>) at /usr/local/include/asio/prefer.hpp:488
#2 asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>::initiate_async_send::operator()<asio::detail::write_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > > >, asio::const_buffer> (this=<optimized out>, this=<optimized out>, flags=0, buffers=..., handler=...) at /usr/local/include/asio/basic_stream_socket.hpp:1012
#3 asio::async_result<asio::detail::write_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > > >, void (std::error_code, unsigned long)>::initiate<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>::initiate_async_send, asio::detail::write_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > > >, asio::const_buffer const&, int>(asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>::initiate_async_send&&, asio::detail::write_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > > >&&, asio::const_buffer const&, int&&) (token=..., initiation=...) at /usr/local/include/asio/async_result.hpp:151
#4 asio::async_initiate<asio::detail::write_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > > >, void (std::error_code, unsigned long), asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>::initiate_async_send, asio::const_buffer const&, int>(asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>::initiate_async_send&&, asio::detail::write_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > > >&, asio::const_buffer const&, int&&) (token=..., initiation=...) at /usr/local/include/asio/async_result.hpp:364
#5 asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>::async_write_some<asio::const_buffer, asio::detail::write_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > > > > (handler=..., buffers=..., this=<optimized out>) at /usr/local/include/asio/basic_stream_socket.hpp:862
#6 asio::detail::write_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > > >::operator() (this=0x7ffff4fdd330, ec=..., bytes_transferred=<optimized out>,
start=<optimized out>) at /usr/local/include/asio/impl/write.hpp:339
#7 0x00007ffff7209877 in asio::detail::start_write_buffer_sequence_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > > > (buffers=..., buffers=...,
completion_condition=..., handler=..., stream=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>) at /usr/local/include/c++/11.2.0/system_error:183
#8 asio::detail::initiate_async_write_buffer_sequence<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >::operator()<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > >, asio::mutable_buffer, asio::detail::transfer_all_t> (completion_cond=..., buffers=..., handler=..., this=<optimized out>)
at /usr/local/include/asio/impl/write.hpp:478
#9 asio::async_result<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > >, void (std::error_code, unsigned long)>::initiate<asio::detail::initiate_async_write_buffer_sequence<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > >, asio::mutable_buffer const&, asio::detail::transfer_all_t>(asio::detail::initiate_async_write_buffer_sequence<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >&&, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > >&&, asio::mutable_buffer const&, asio::detail::transfer_all_t&&) (token=..., initiation=...) at /usr/local/include/asio/async_result.hpp:151
#10 asio::async_initiate<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > >, void (std::error_code, unsigned long), asio::detail::initiate_async_write_buffer_sequence<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer const&, asio::detail::transfer_all_t>(asio::detail::initiate_async_write_buffer_sequence<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >&&, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > >&, asio::mutable_buffer const&, asio::detail::transfer_all_t&&) (token=..., initiation=...) at /usr/local/include/asio/async_result.hpp:364
#11 asio::async_write<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::mutable_buffer, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > > > (handler=..., buffers=..., s=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>)
at /usr/local/include/asio/impl/write.hpp:563
#12 asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > >::operator() (this=0x7ffff4fdd8e0, ec=..., bytes_transferred=0, start=<optimized out>) at /usr/local/include/asio/ssl/detail/io.hpp:203
#13 0x00007ffff71fc13a in asio::ssl::detail::async_io<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::write_op<asio::detail::prepared_buffers<asio::const_buffer, 64ul> >, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > > (handler=..., handler@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, op=..., op@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>,
core=..., core@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, next_layer=..., next_layer@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>) at /usr/local/include/c++/11.2.0/system_error:183
#14 asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >::initiate_async_write_some::operator()<asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > >, asio::detail::prepared_buffers<asio::const_buffer, 64ul> > (this=<optimized out>, this=<optimized out>, buffers=..., buffers@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, handler=...,
handler@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>) at /usr/local/include/asio/ssl/stream.hpp:851
#15 asio::async_result<asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > >, void (std::error_code, unsigned long)>::initiate<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >::initiate_async_write_some, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > >, asio::detail::prepared_buffers<asio::const_buffer, 64ul> const&>(asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >::initiate_async_write_some&&, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > >&&, asio::detail::prepared_buffers<asio::const_buffer, 64ul> const&) (token=..., token@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>,
initiation=...) at /usr/local/include/asio/async_result.hpp:151
#16 asio::async_initiate<asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > >, void (std::error_code, unsigned long), asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >::initiate_async_write_some, asio::detail::prepared_buffers<asio::const_buffer, 64ul> const&>(asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >::initiate_async_write_some&&, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > >&, asio::detail::prepared_buffers<asio::const_buffer, 64ul> const&) (token=...,
token@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, initiation=...) at /usr/local/include/asio/async_result.hpp:364
#17 asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >::async_write_some<asio::detail::prepared_buffers<asio::const_buffer, 64ul>, asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > > (handler=..., handler@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, buffers=..., buffers@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, this=0x128ec18,
this@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>) at /usr/local/include/asio/ssl/stream.hpp:636
#18 asio::detail::write_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > >::operator() (start=1,
start@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, bytes_transferred=0, bytes_transferred@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, ec=..., this=0x7ffff4fdd620, this@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>)
at /usr/local/include/asio/impl/write.hpp:339
#19 asio::detail::start_write_buffer_sequence_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::const_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > (handler=...,
handler@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, completion_condition=..., buffers=..., buffers@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, stream=..., stream@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>)
at /usr/local/include/asio/impl/write.hpp:446
#20 asio::detail::initiate_async_write_buffer_sequence<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> > >::operator()<asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::detail::transfer_all_t> (completion_cond=..., buffers=...,
buffers@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, handler=..., handler@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, this=<optimized out>) at /usr/local/include/asio/impl/write.hpp:478
#21 asio::async_initiate<asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> >, void (std::error_code, unsigned long), asio::detail::initiate_async_write_buffer_sequence<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> > >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u> const&, asio::detail::transfer_all_t>(asio::detail::initiate_async_write_buffer_sequence<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> > >&&, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> >&, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u> const&, asio::detail::transfer_all_t&&) (token=...,
token@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, initiation=...) at /usr/local/include/asio/async_result.hpp:381
#22 asio::async_write<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, SWC::Core::Vector<asio::const_buffer, unsigned int, 0u>, asio::executor_binder<SWC::Comm::ConnHandler::Sender_noAck, asio::strand<asio::any_io_executor> > > (handler=..., handler@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>,
buffers=..., buffers@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, s=..., s@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>) at /usr/local/include/asio/impl/write.hpp:563
#23 SWC::Comm::ConnHandlerSSL::do_async_write (this=<optimized out>, buffers=..., hdlr=...) at swcdb/core/comm/ConnHandler.cc:674
#24 0x00007ffff71f99ed in SWC::Comm::ConnHandler::write (this=0x128ea80, outgoing=...) at /usr/local/include/c++/11.2.0/bits/shared_ptr_base.h:1152
#25 0x00007ffff71fab63 in SWC::Comm::ConnHandler::send_request (this=<optimized out>, cbuf=..., hdlr=...) at /usr/local/include/c++/11.2.0/bits/shared_ptr_base.h:731
#26 0x00007ffff7222c0e in SWC::Comm::client::ConnQueue::run_queue (this=0x12da640) at /usr/local/include/c++/11.2.0/ext/atomicity.h:109
#27 0x00007ffff72233da in SWC::Comm::client::ConnQueue::Task::operator() (this=<synthetic pointer>, this@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>) at swcdb/core/comm/ClientConnQueue.cc:160
#28 asio_handler_invoke_helpers::invoke<SWC::Comm::client::ConnQueue::exec_queue()::Task, SWC::Comm::client::ConnQueue::exec_queue()::Task> (context=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, context@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>,
function=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, function@entry=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>) at /usr/local/include/asio/detail/handler_invoke_helpers.hpp:51
#29 asio::detail::executor_op<SWC::Comm::client::ConnQueue::exec_queue()::Task, std::allocator<void>, asio::detail::scheduler_operation>::do_complete(void *, asio::detail::scheduler_operation *, const asio::error_code &, std::size_t) (owner=0xc72000, base=0x14401a0) at /usr/local/include/asio/detail/executor_op.hpp:69
#30 0x00007ffff7393ba7 in asio::detail::scheduler_operation::complete (bytes_transferred=0, ec=..., owner=0xc72000, this=0x14401a0) at /usr/local/include/asio/detail/scheduler_operation.hpp:39
#31 asio::detail::scheduler::do_run_one (this=0xc72000, lock=..., this_thread=..., ec=...) at /usr/local/include/asio/detail/impl/scheduler.ipp:485
#32 0x00007ffff7219e91 in asio::detail::scheduler::run (this=0xc72000, ec=...) at /usr/local/include/asio/detail/impl/scheduler.ipp:203
#33 0x00007ffff721b5f5 in asio::thread_pool::thread_function::operator() (this=0xc40838) at /usr/local/include/asio/impl/thread_pool.ipp:38
#34 asio::detail::posix_thread::func<asio::thread_pool::thread_function>::run (this=0xc40830) at /usr/local/include/asio/detail/posix_thread.hpp:85
#35 0x00007ffff738e580 in asio::detail::asio_detail_posix_thread_function (arg=0xc40830) at /usr/local/include/asio/detail/impl/posix_thread.ipp:73
#36 0x00007ffff76146db in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#37 0x00007ffff690a88f in clone () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) where
#0 0x00007ffff6977b3e in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff7ae7a4a in bio_write () from /opt/swcdb/lib/libcrypto.so.1.1
#2 0x00007ffff7ae6716 in bwrite_conv () from /opt/swcdb/lib/libcrypto.so.1.1
#3 0x00007ffff7ae5856 in BIO_write () from /opt/swcdb/lib/libcrypto.so.1.1
#4 0x00007ffff7d631a9 in ssl3_write_pending () from /opt/swcdb/lib/libssl.so.1.1
#5 0x00007ffff7d640c7 in do_ssl3_write.localalias () from /opt/swcdb/lib/libssl.so.1.1
#6 0x00007ffff7d6ec97 in ssl3_dispatch_alert () from /opt/swcdb/lib/libssl.so.1.1
#7 0x00007ffff7d685e4 in ssl3_get_record () from /opt/swcdb/lib/libssl.so.1.1
#8 0x00007ffff7d64ef4 in ssl3_read_bytes () from /opt/swcdb/lib/libssl.so.1.1
#9 0x00007ffff7d6d090 in ssl3_read () from /opt/swcdb/lib/libssl.so.1.1
#10 0x00007ffff7d79485 in SSL_read () from /opt/swcdb/lib/libssl.so.1.1
#11 0x00007ffff71ff3e0 in asio::ssl::detail::engine::perform (this=0x1898568, op=<optimized out>, data=0x18984e8, length=2, ec=..., bytes_transferred=0x7ffff2fd9ae8)
at /usr/local/include/asio/ssl/detail/impl/engine.ipp:247
#12 0x00007ffff720b8e2 in asio::ssl::detail::engine::read (data=<synthetic pointer>..., data=<synthetic pointer>..., bytes_transferred=@0x7ffff2fd9ae8: 0, ec=..., this=<optimized out>)
at /usr/local/include/asio/ssl/detail/impl/engine.ipp:179
#13 asio::ssl::detail::read_op<asio::mutable_buffer>::operator() (bytes_transferred=@0x7ffff2fd9ae8: 0, ec=..., eng=..., this=0x7ffff2fd9ac0) at /usr/local/include/asio/ssl/detail/read_op.hpp:51
#14 asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any _io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >::operator() (this=0x7ffff 2fd9ab0, ec=..., bytes_transferred=52, start=0) at /usr/local/include/asio/ssl/detail/io.hpp:145
#15 0x00007ffff7210e56 in asio::detail::binder2<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio:: basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_ io_executor> > > >, std::error_code, unsigned long>::operator() (this=0x7ffff2fd9ab0) at /usr/local/include/asio/detail/bind_handler.hpp:179
#16 asio_handler_invoke_helpers::invoke<asio::detail::binder2<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_o--Type <RET> --Type <RET> for more, q to quit, c to continue without paging--
p<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >, std::error_code, unsigned long>, asio::detail::binder2<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >, std::error_code, unsigned long> > (context=..., function=...) at /usr/local/include/asio/detail/handler_invoke_helpers.hpp:51
#17 asio::detail::executor_op<asio::detail::binder2<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >, std::error_code, unsigned long>, std::allocator<void>, asio::detail::scheduler_operation>::do_complete (owner=0x10003c0, base=0xf80600) at /usr/local/include/asio/detail/executor_op.hpp:69
#18 0x00007ffff721530a in asio::detail::scheduler_operation::complete (bytes_transferred=0, ec=..., owner=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, this=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>) at /usr/local/include/asio/detail/scheduler_operation.hpp:39
#19 asio::detail::strand_executor_service::run_ready_handlers (impl=...) at /usr/local/include/asio/detail/impl/strand_executor_service.ipp:149
#20 asio::detail::strand_executor_service::invoker<asio::any_io_executor const, void>::operator() (this=0x7ffff2fd9c70) at /usr/local/include/asio/detail/impl/strand_executor_service.hpp:124
#21 0x00007ffff7215536 in asio_handler_invoke_helpers::invoke<asio::detail::strand_executor_service::invoker<asio::any_io_executor const, void>, asio::detail::strand_executor_service::invoker<asio::any_io_executor const, void> > (context=..., function=...) at /usr/local/include/asio/detail/handler_invoke_helpers.hpp:42
#22 asio::detail::executor_function::complete<asio::detail::strand_executor_service::invoker<asio::any_io_executor const, void>, std::allocator<void> > (base=0x7ffff2fd9c70, call=<optimized out>) at /usr/local/include/asio/detail/executor_function.hpp:115
#23 0x00007ffff738f3c3 in asio::detail::executor_function::operator() (this=0x7ffff2fd9cd8) at /usr/local/include/asio/detail/executor_function.hpp:63
#24 asio_handler_invoke_helpers::invoke<asio::detail::executor_function, asio::detail::executor_function> (context=..., function=...) at /usr/local/include/asio/detail/handler_invoke_helpers.hpp:51
#25 asio::detail::executor_op<asio::detail::executor_function, std::allocator<void>, asio::detail::scheduler_operation>::do_complete (owner=0xc72000, base=0xe65290) at /usr/local/include/asio/detail/executor_op.hpp:69
#26 0x00007ffff7393ba7 in asio::detail::scheduler_operation::complete (bytes_transferred=0, ec=..., owner=0xc72000, this=0xe65290) at /usr/local/include/asio/detail/scheduler_operation.hpp:39
#27 asio::detail::scheduler::do_run_one (this=0xc72000, lock=..., this_thread=..., ec=...) at /usr/local/include/asio/detail/impl/scheduler.ipp:485
#28 0x00007ffff7219e91 in asio::detail::scheduler::run (this=0xc72000, ec=...) at /usr/local/include/asio/detail/impl/scheduler.ipp:203
#29 0x00007ffff721b5f5 in asio::thread_pool::thread_function::operator() (this=0xc40878) at /usr/local/include/asio/impl/thread_pool.ipp:38
#30 asio::detail::posix_thread::func<asio::thread_pool::thread_function>::run (this=0xc40870) at /usr/local/include/asio/detail/posix_thread.hpp:85
#31 0x00007ffff738e580 in asio::detail::asio_detail_posix_thread_function (arg=0xc40870) at /usr/local/include/asio/detail/impl/posix_thread.ipp:73
#32 0x00007ffff76146db in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#33 0x00007ffff690a88f in clone () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) where
#0 0x00007ffff6977b3e in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff7ae7a4a in bio_write () from /opt/swcdb/lib/libcrypto.so.1.1
#2 0x00007ffff7ae6716 in bwrite_conv () from /opt/swcdb/lib/libcrypto.so.1.1
#3 0x00007ffff7ae5856 in BIO_write () from /opt/swcdb/lib/libcrypto.so.1.1
#4 0x00007ffff7d631a9 in ssl3_write_pending () from /opt/swcdb/lib/libssl.so.1.1
#5 0x00007ffff7d640c7 in do_ssl3_write.localalias () from /opt/swcdb/lib/libssl.so.1.1
#6 0x00007ffff7d6ec97 in ssl3_dispatch_alert () from /opt/swcdb/lib/libssl.so.1.1
#7 0x00007ffff7d685e4 in ssl3_get_record () from /opt/swcdb/lib/libssl.so.1.1
#8 0x00007ffff7d64ef4 in ssl3_read_bytes () from /opt/swcdb/lib/libssl.so.1.1
#9 0x00007ffff7d6d090 in ssl3_read () from /opt/swcdb/lib/libssl.so.1.1
#10 0x00007ffff7d79485 in SSL_read () from /opt/swcdb/lib/libssl.so.1.1
#11 0x00007ffff71ff3e0 in asio::ssl::detail::engine::perform (this=0x155efe8, op=<optimized out>, data=0x155ef68, length=2, ec=..., bytes_transferred=0x7ffff4fdd6f8) at /usr/local/include/asio/ssl/detail/impl/engine.ipp:247
#12 0x00007ffff720b8e2 in asio::ssl::detail::engine::read (data=<synthetic pointer>..., data=<synthetic pointer>..., bytes_transferred=@0x7ffff4fdd6f8: 0, ec=..., this=<optimized out>) at /usr/local/include/asio/ssl/detail/impl/engine.ipp:179
#13 asio::ssl::detail::read_op<asio::mutable_buffer>::operator() (bytes_transferred=@0x7ffff4fdd6f8: 0, ec=..., eng=..., this=0x7ffff4fdd6d0) at /usr/local/include/asio/ssl/detail/read_op.hpp:51
#14 asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >::operator() (this=0x7ffff4fdd6c0, ec=..., bytes_transferred=52, start=0) at /usr/local/include/asio/ssl/detail/io.hpp:145
#15 0x00007ffff7210e56 in asio::detail::binder2<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >, std::error_code, unsigned long>::operator() (this=0x7ffff4fdd6c0) at /usr/local/include/asio/detail/bind_handler.hpp:179
#16 asio_handler_invoke_helpers::invoke<asio::detail::binder2<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >, std::error_code, unsigned long>, asio::detail::binder2<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >, std::error_code, unsigned long> > (context=..., function=...) at /usr/local/include/asio/detail/handler_invoke_helpers.hpp:51
#17 asio::detail::executor_op<asio::detail::binder2<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >, std::error_code, unsigned long>, std::allocator<void>, asio::detail::scheduler_operation>::do_complete (owner=0xc52dc0, base=0x1e26d00) at /usr/local/include/asio/detail/executor_op.hpp:69
#18 0x00007ffff721530a in asio::detail::scheduler_operation::complete (bytes_transferred=0, ec=..., owner=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>, this=<error reading variable: dwarf2_find_location_expression: Corrupted DWARF expression.>) at /usr/local/include/asio/detail/scheduler_operation.hpp:39
#19 asio::detail::strand_executor_service::run_ready_handlers (impl=...) at /usr/local/include/asio/detail/impl/strand_executor_service.ipp:149
#20 asio::detail::strand_executor_service::invoker<asio::any_io_executor const, void>::operator() (this=0x7ffff4fdd880) at /usr/local/include/asio/detail/impl/strand_executor_service.hpp:124
#21 0x00007ffff7215536 in asio_handler_invoke_helpers::invoke<asio::detail::strand_executor_service::invoker<asio::any_io_executor const, void>, asio::detail::strand_executor_service::invoker<asio::any_io_executor const, void> > (context=..., function=...) at /usr/local/include/asio/detail/handler_invoke_helpers.hpp:42
#22 asio::detail::executor_function::complete<asio::detail::strand_executor_service::invoker<asio::any_io_executor const, void>, std::allocator<void> > (base=0x7ffff4fdd880, call=<optimized out>) at /usr/local/include/asio/detail/executor_function.hpp:115
#23 0x00007ffff73907d1 in asio::detail::executor_function::operator() (this=0x7ffff4fdd8e8) at /usr/local/include/asio/detail/executor_function.hpp:63
#24 asio_handler_invoke_helpers::invoke<asio::detail::executor_function, asio::detail::executor_function> (context=..., function=...) at /usr/local/include/asio/detail/handler_invoke_helpers.hpp:51
#25 asio::thread_pool::basic_executor_type<std::allocator<void>, 8u>::do_execute<asio::detail::executor_function> (f=..., this=0x7ffff4fddb00) at /usr/local/include/asio/impl/thread_pool.hpp:121
#26 asio::thread_pool::basic_executor_type<std::allocator<void>, 8u>::execute<asio::detail::executor_function> (f=..., this=0x7ffff4fddb00) at /usr/local/include/asio/thread_pool.hpp:611
#27 asio_execution_execute_fn::impl::operator()<asio::thread_pool::basic_executor_type<std::allocator<void>, 8u> const&, asio::detail::executor_function> (f=..., t=..., this=<synthetic pointer>) at /usr/local/include/asio/execution/execute.hpp:204
#28 asio::execution::detail::any_executor_base::execute_ex<asio::thread_pool::basic_executor_type<std::allocator<void>, 8u> > (ex=..., f=...) at /usr/local/include/asio/execution/any_executor.hpp:888
#29 0x00007ffff720eb70 in asio::execution::detail::any_executor_base::execute<asio::detail::strand_executor_service::invoker<asio::any_io_executor const, void> > (this=0x7ffff4fddb00, f=...) at /usr/local/include/asio/detail/executor_function.hpp:78
#30 0x00007ffff7211174 in asio_execution_execute_fn::impl::operator()<asio::any_io_executor const&, asio::detail::strand_executor_service::invoker<asio::any_io_executor const, void> > (f=..., t=..., this=<synthetic pointer>) at /usr/local/include/asio/execution/execute.hpp:198
#31 asio::detail::strand_executor_service::do_execute<asio::any_io_executor const, asio::detail::binder2<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >, std::error_code, unsigned long>, std::allocator<void> > (impl=..., ex=..., function=..., a=...) at /usr/local/include/asio/detail/impl/strand_executor_service.hpp:255
#32 0x00007ffff7211671 in asio::detail::strand_executor_service::execute<asio::any_io_executor const, asio::detail::binder2<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >, std::error_code, unsigned long> >(std::shared_ptr<asio::detail::strand_executor_service::strand_impl> const&, asio::any_io_executor const&, asio::detail::binder2<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >, std::error_code, unsigned long>&&, std::enable_if<!asio::can_query<asio::any_io_executor const, asio::execution::allocator_t<void> >::value, void>::type*) (function=..., ex=..., impl=...) at /usr/local/include/asio/detail/impl/strand_executor_service.hpp:212
#33 asio::strand<asio::any_io_executor>::execute<asio::detail::binder2<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >, std::error_code, unsigned long> > (f=..., this=0x7ffff4fddb00) at /usr/local/include/asio/strand.hpp:286
#34 asio_execution_execute_fn::impl::operator()<asio::strand<asio::any_io_executor>, asio::detail::binder2<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >, std::error_code, unsigned long> > (f=..., t=..., this=<synthetic pointer>) at /usr/local/include/asio/execution/execute.hpp:204
#35 asio::detail::handler_work_base<asio::strand<asio::any_io_executor>, asio::any_io_executor, asio::io_context, asio::executor, void>::dispatch<asio::detail::binder2<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >, std::error_code, unsigned long>, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > > > (handler=..., function=..., this=0x7ffff4fddbb0)
at /usr/local/include/asio/detail/handler_work.hpp:97
#36 asio::detail::handler_work<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >, asio::any_io_executor, void>::complete<asio::detail::binder2<asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >, std::error_code, unsigned long> > (handler=..., function=..., this=0x7ffff4fddb80) at /usr/local/include/asio/detail/handler_work.hpp:468
#37 asio::detail::reactive_socket_recv_op<asio::mutable_buffer, asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor>, asio::ssl::detail::read_op<asio::mutable_buffer>, asio::detail::read_op<asio::ssl::stream<asio::basic_stream_socket<asio::ip::tcp, asio::any_io_executor> >, asio::mutable_buffer, asio::mutable_buffer const*, asio::detail::transfer_all_t, asio::executor_binder<SWC::Comm::ConnHandler::Receiver_HeaderPrefix, asio::strand<asio::any_io_executor> > > >, asio::any_io_executor>::do_complete (owner=0xc72000, base=<optimized out>) at /usr/local/include/asio/detail/reactive_socket_recv_op.hpp:144
#38 0x00007ffff7393ba7 in asio::detail::scheduler_operation::complete (bytes_transferred=5, ec=..., owner=0xc72000, this=0xd53760) at /usr/local/include/asio/detail/scheduler_operation.hpp:39
#39 asio::detail::scheduler::do_run_one (this=0xc72000, lock=..., this_thread=..., ec=...) at /usr/local/include/asio/detail/impl/scheduler.ipp:485
#40 0x00007ffff7219e91 in asio::detail::scheduler::run (this=0xc72000, ec=...) at /usr/local/include/asio/detail/impl/scheduler.ipp:203
#41 0x00007ffff721b5f5 in asio::thread_pool::thread_function::operator() (this=0xc40838) at /usr/local/include/asio/impl/thread_pool.ipp:38
#42 asio::detail::posix_thread::func<asio::thread_pool::thread_function>::run (this=0xc40830) at /usr/local/include/asio/detail/posix_thread.hpp:85
#43 0x00007ffff738e580 in asio::detail::asio_detail_posix_thread_function (arg=0xc40830) at /usr/local/include/asio/detail/impl/posix_thread.ipp:73
#44 0x00007ffff76146db in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#45 0x00007ffff690a88f in clone () from /lib/x86_64-linux-gnu/libc.so.6
I am using boost 1.72.0 and OpenSSL 1.1.1.d. After a connection and a handshake the following member functions may be called from separate threads. Both one read and one write can be in progress at the same time.
Sometimes it happens that bio_read function is called twice for the same socket in two different threads. E.g., one call starts directly from boost::asio::async_write as shown above and gets to asio/ssl/detail/io.hpp:195
where get_output is called. Meanwhile a read call has its callstack start at io_context worker routine and gets to the same place (get_output call above, the same line). So while both async_read and async_write operations were started under the same strand, it looks like read operation resumed after an async call inside asio io_op class later and caused the problem.
Is there anything to be done around boost::asio::async_read or boost::asio::async_write calls to not cause that, besides limiting operations to only one?