chriskohlhoff / asio

Asio C++ Library
http://think-async.com/Asio
4.81k stars 1.2k forks source link

boost::asio::ssl::detail::engine::perform crashes with boost 1.53 #1302

Open Md-Aliullah opened 1 year ago

Md-Aliullah commented 1 year ago

Hi,

We are using boost 1.53 library for asio. We are seeing crash in with following back trace

0 0x00007f206f840258 in tls13_setup_key_block () from /usr/local/lib/libssl.so.3

1 0x00007f206f864a3a in ossl_statem_server_post_work () from /usr/local/lib/libssl.so.3

2 0x00007f206f8553ff in state_machine () from /usr/local/lib/libssl.so.3

3 0x00007f206f82f430 in SSL_do_handshake () from /usr/local/lib/libssl.so.3

4 0x00007f2074d6f5c2 in boost::asio::ssl::detail::engine::perform (this=0x7f203413b228, op=

(int (boost::asio::ssl::detail::engine::*)(boost::asio::ssl::detail::engine * const, void *, std::size_t)) 0x7f2074d6cf40 <boost::asio::ssl::detail::engine::do_accept(void*, unsigned long)>, data=0x0, length=0, ec=..., bytes_transferred=0x0)
at /usr/local/include/boost/asio/ssl/detail/impl/engine.ipp:235

5 0x00007f2074d6b2ca in handshake (ec=..., type=, this=)

at /usr/local/include/boost/asio/ssl/detail/impl/engine.ipp:136

6 operator() (bytes_transferred=@0x7f203efe6840: 0, ec=..., eng=..., this=0x7f203efe6820)

at /usr/local/include/boost/asio/ssl/detail/handshake_op.hpp:42

7 boost::asio::ssl::detail::io_op<boost::asio::basic_stream_socket, boost::asio::ssl::detail::handshake_op, nghttp2::asio_http2::server::server::start_accept(boost::asio::ssl::context&, boost::asio::ip::tcp::acceptor&, nghttp2::asio_http2::server::serve_mux&)::lambda7::lambda8>::operator()(boost::system::error_code, std::size_t, int) (this=0x7f203efe6810, ec=...,

bytes_transferred=<optimized out>, start=0) at /usr/local/include/boost/asio/ssl/detail/io.hpp:136

8 0x00007f2074d6bfe8 in operator() (this=0x7f203efe6810) at /usr/local/include/boost/asio/detail/bind_handler.hpp:164

We are using the library in following way

tls_ = new boost::asio::ssl::context(boost::asio::ssl::context::sslv23server); tls->set_verify_mode(boost::asio::ssl::verify_peer | boost::asio::ssl::verify_fail_if_no_peercert); try { tls->use_private_key_file(key, boost::asio::ssl::context::pem); } We see same crash multiple times. Is this a known issue? Or we are using this wrongly.

Thanks, Ali