Hi All, I'm writing TLS client/server and my server is continuously crashing in the async_handshake function. I'm running out of ideas of what I'm doing wrong or how to solve the issue. I'm using VS 2022 and the latest boost from github. Tested with 1.78.0 as well. Using OpenSSL 3.0.1. Code is compiled as x64, /std:c++20. Using a single thread. Simplified function call: on_accept: auto server = boost::make_shared<cserver_session_ws>(std::move(socket), m_ioc, m_ctx); server->run(); run: boost::asio::dispatch(m_ws.get_executor(), boost::beast::bind_front_handler(&cserver_session_ws::on_run, shared_from_this())); on_run: m_ws.next_layer().async_handshake(boost::asio::ssl::stream_base::server, boost::beast::bind_front_handler(&cserver_session_ws::on_handshake, shared_from_this())); on_handshake function never gets called, due to the crash in async_handshake function. m_ws is defined as: boost::beast::websocket::stream<boost::beast::ssl_stream<boost::beast::tcp_stream>> m_ws; Exception call stack: Unhandled exception thrown: read access violation. **this** was 0x1. boost::asio::detail::scheduler::post_immediate_completion(boost::asio::detail::scheduler_operation ...... Line 349 boost::asio::detail::select_reactor::schedule_timer<boost::asio::detail::chrono_time_traits<std::chrono ..... Line 66 boost::asio::detail::deadline_timer_service<boost::asio::detail::chrono_time_traits ..... Line 273 boost::asio::basic_waitable_timer<std::chrono::steady_clock,boost::asio::wait_traits ...... Line 806 boost::asio::detail::completion_handler_async_result<boost::beast::basic_stream ..... Line 485 boost::asio::async_initiate<boost::beast::basic_stream<boost::asio::ip ..... Line 865 ..... Here are only the last few functions from the call stack. I can share the entire call stack if requested. I would appreciate any help on this as I can't figure out what caused the crash. Regards, A
Hi, only one. I reduced this number to one until this problem is not solved. Regards, A On Tue, Feb 8, 2022 at 4:26 PM Vinnie Falco <vinnie.falco@gmail.com> wrote:
I'm writing TLS client/server and my server is continuously crashing in
On Tue, Feb 8, 2022 at 6:57 AM Ales Mulej via Boost-users <boost-users@lists.boost.org> wrote: the async_handshake function.
How many threads are calling io_context::run() ?
Thanks
On Tue, Feb 8, 2022 at 7:37 AM Ales Mulej <alesm2015@gmail.com> wrote:
only one. I reduced this number to one until this problem is not solved.
If you temporarily replace
boost::beast::websocket::stream<boost::beast::ssl_stream<boost::beast::tcp_stream>>
with
boost::asio::ssl_stream<boost::asio::ip::tcp::socket>
and adjust the surrounding code for the change, what happens? Thanks
Hi Vinnie, I think you mean to change the code to "::ssl::stream<". And yes, that is working OK, the on_handshake function is called without any problems. There is no crash. Regards A On Tue, Feb 8, 2022 at 4:48 PM Vinnie Falco <vinnie.falco@gmail.com> wrote:
On Tue, Feb 8, 2022 at 7:37 AM Ales Mulej <alesm2015@gmail.com> wrote:
only one. I reduced this number to one until this problem is not solved.
If you temporarily replace
boost::beast::websocket::stream<boost::beast::ssl_stream<boost::beast::tcp_stream>>
with
boost::asio::ssl_stream<boost::asio::ip::tcp::socket>
and adjust the surrounding code for the change, what happens?
Thanks
On Tue, 8 Feb 2022 at 17:26, Ales Mulej via Boost-users < boost-users@lists.boost.org> wrote:
Hi Vinnie,
Hi, Ales. Would you be able to file an issue at https://github.com/boostorg/beast/issues ? If you could include the complete minimal program as an attachment or linked public repository, I'll happily take a look at what's wrong.
I think you mean to change the code to "::ssl::stream<". And yes, that is working OK, the on_handshake function is called without any problems. There is no crash.
Regards A
On Tue, Feb 8, 2022 at 4:48 PM Vinnie Falco <vinnie.falco@gmail.com> wrote:
On Tue, Feb 8, 2022 at 7:37 AM Ales Mulej <alesm2015@gmail.com> wrote:
only one. I reduced this number to one until this problem is not solved.
If you temporarily replace
boost::beast::websocket::stream<boost::beast::ssl_stream<boost::beast::tcp_stream>>
with
boost::asio::ssl_stream<boost::asio::ip::tcp::socket>
and adjust the surrounding code for the change, what happens?
Thanks
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org https://lists.boost.org/mailman/listinfo.cgi/boost-users
Hi Richard, I opened the issue under #2388. Please let me know if you need any additional information. Regards, A On Tue, Feb 8, 2022 at 5:47 PM Richard Hodges via Boost-users < boost-users@lists.boost.org> wrote:
On Tue, 8 Feb 2022 at 17:26, Ales Mulej via Boost-users < boost-users@lists.boost.org> wrote:
Hi Vinnie,
Hi, Ales.
Would you be able to file an issue at https://github.com/boostorg/beast/issues ?
If you could include the complete minimal program as an attachment or linked public repository, I'll happily take a look at what's wrong.
I think you mean to change the code to "::ssl::stream<". And yes, that is working OK, the on_handshake function is called without any problems. There is no crash.
Regards A
On Tue, Feb 8, 2022 at 4:48 PM Vinnie Falco <vinnie.falco@gmail.com> wrote:
On Tue, Feb 8, 2022 at 7:37 AM Ales Mulej <alesm2015@gmail.com> wrote:
only one. I reduced this number to one until this problem is not solved.
If you temporarily replace
boost::beast::websocket::stream<boost::beast::ssl_stream<boost::beast::tcp_stream>>
with
boost::asio::ssl_stream<boost::asio::ip::tcp::socket>
and adjust the surrounding code for the change, what happens?
Thanks
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org https://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org https://lists.boost.org/mailman/listinfo.cgi/boost-users
participants (3)
-
Ales Mulej
-
Richard Hodges
-
Vinnie Falco