chronoxor / CppServer

Ultra fast and low latency asynchronous socket server & client C++ library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and 10K connections problem solution
MIT License
1.43k stars 284 forks source link

SSLClient ReconnectAsync() Access Violation on Windows Debug build #95

Open Alejandro131 opened 9 months ago

Alejandro131 commented 9 months ago

When compiling the library and running the tests, I built all 4 variations (3 Release and 1 Debug). All 3 of the Release builds had 100% tests passed.

On the Debug build, the "SSL server random test" crashed when the case to reconnect a random client was hit, with this call stack:

cppserver-tests.exe!asio::detail::buffer_debug_check<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<unsigned char>>>>::operator()() Line 659
    at CppServer\modules\asio\asio\include\asio\buffer.hpp(659)

[External Code]

cppserver-tests.exe!asio::mutable_buffer::data() Line 117
    at CppServer\modules\asio\asio\include\asio\buffer.hpp(117)

cppserver-tests.exe!asio::detail::buffer_sequence_adapter<asio::mutable_buffer,asio::mutable_buffers_1>::validate(const asio::mutable_buffers_1 & buffer_sequence) Line 438
    at CppServer\modules\asio\asio\include\asio\detail\buffer_sequence_adapter.hpp(438)

cppserver-tests.exe!asio::detail::win_iocp_socket_recv_op<asio::mutable_buffers_1,asio::ssl::detail::io_op<asio::basic_stream_socket<asio::ip::tcp,asio::any_io_executor>,asio::ssl::detail::shutdown_op,CppServer::Asio::AllocateHandler<``CppServer::Asio::SSLClient::DisconnectInternalAsync'::`2'::<lambda_1>::operator()'::`2'::<lambda_1>>>,asio::any_io_executor>::do_complete(void * owner, asio::detail::win_iocp_operation * base, const std::error_code & result_ec, unsigned __int64 bytes_transferred) Line 83
    at CppServer\modules\asio\asio\include\asio\detail\win_iocp_socket_recv_op.hpp(83)

cppserver-tests.exe!asio::detail::win_iocp_operation::complete(void * owner, const std::error_code & ec, unsigned __int64 bytes_transferred) Line 47
    at CppServer\modules\asio\asio\include\asio\detail\win_iocp_operation.hpp(47)

cppserver-tests.exe!asio::detail::win_iocp_io_context::do_one(unsigned long msec, asio::detail::win_iocp_thread_info & this_thread, std::error_code & ec) Line 475
    at CppServer\modules\asio\asio\include\asio\detail\impl\win_iocp_io_context.ipp(475)

cppserver-tests.exe!asio::detail::win_iocp_io_context::run(std::error_code & ec) Line 205
    at CppServer\modules\asio\asio\include\asio\detail\impl\win_iocp_io_context.ipp(205)

cppserver-tests.exe!asio::io_context::run() Line 63
    at CppServer\modules\asio\asio\include\asio\impl\io_context.ipp(63)

cppserver-tests.exe!CppServer::Asio::Service::ServiceThread(const std::shared_ptr<CppServer::Asio::Service> & service, const std::shared_ptr<asio::io_context> & io_service) Line 192
    at CppServer\source\server\asio\service.cpp(192)

cppserver-tests.exe!`CppServer::Asio::Service::Start'::`8'::<lambda_2>::operator()() Line 96
    at CppServer\source\server\asio\service.cpp(96)

cppserver-tests.exe!`CppCommon::Thread::Start<`CppServer::Asio::Service::Start'::`8'::<lambda_2>>'::`2'::<lambda_1>::operator()() Line 54
    at CppServer\modules\CppCommon\include\threads\thread.inl(54)

[External Code]