libgo icon indicating copy to clipboard operation
libgo copied to clipboard

win下sample5_asio.t会崩溃

Open xiaolanpingguo opened this issue 7 years ago • 2 comments

libgo master分支 环境:win10, 编译器:vs 2017, 例子5:sample5_asio.t, 启动就崩溃,堆栈信息: sample5_asio.t.exe!co::accept_mode_hook<unsigned __int64 (__cdecl*)(unsigned __int64,sockaddr *,int )>(unsigned __int64()(unsigned __int64, sockaddr *, int *) fn, const char * fn_name, unsigned __int64 s, sockaddr * addr, int * addrlen) 行 312 C++ sample5_asio.t.exe!co::hook_accept(unsigned __int64 s, sockaddr * addr, int * addrlen) 行 500 C++ sample5_asio.t.exe!boost::asio::detail::socket_ops::call_accept(int * __formal, unsigned __int64 s, sockaddr * addr, unsigned __int64 * addrlen) 行 96 C++ sample5_asio.t.exe!boost::asio::detail::socket_ops::accept(unsigned __int64 s, sockaddr * addr, unsigned __int64 * addrlen, boost::system::error_code & ec) 行 113 C++ sample5_asio.t.exe!boost::asio::detail::socket_ops::sync_accept(unsigned __int64 s, unsigned char state, sockaddr * addr, unsigned __int64 * addrlen, boost::system::error_code & ec) 行 140 C++ sample5_asio.t.exe!boost::asio::detail::win_iocp_socket_serviceboost::asio::ip::tcp::accept<boost::asio::basic_socketboost::asio::ip::tcp >(boost::asio::detail::win_iocp_socket_serviceboost::asio::ip::tcp::implementation_type & impl, boost::asio::basic_socketboost::asio::ip::tcp & peer, boost::asio::ip::basic_endpointboost::asio::ip::tcp * peer_endpoint, boost::system::error_code & ec) 行 465 C++ sample5_asio.t.exe!boost::asio::basic_socket_acceptorboost::asio::ip::tcp::acceptboost::asio::ip::tcp(boost::asio::basic_socketboost::asio::ip::tcp & peer, void * __formal) 行 1162 C++ sample5_asio.t.exe!echo_server() 行 29 C++ [外部代码] sample5_asio.t.exe!co::Task::Run::__l2::() 行 38 C++ sample5_asio.t.exe!co::Task::Run() 行 49 C++

sample5_asio.t.exe!co::Task::StaticRun(__int64 vp) 行 80 C++

原因是:boost::asio在accept函数下会endpoint直接传的是空指针,导致在win下面在hook acccept的时候,调用了addr->sa_family, 而这个addr是个nullptr,所以导致崩溃

xiaolanpingguo avatar Jan 09 '19 10:01 xiaolanpingguo

3.0的windows兼容还没有做好,近期会完成

yyzybb537 avatar Jan 09 '19 10:01 yyzybb537

已完成兼容windows,请试用master分支的最新代码

yyzybb537 avatar Jan 12 '19 09:01 yyzybb537