On 07/30/2014 09:04 AM, Ashish wrote: > > > On Wednesday, July 23, 2014 1:50:13 PM UTC+5:30, Saúl Ibarra Corretgé wrote: > > On 07/22/2014 06:39 PM, Ashish wrote: > > > > VisualStudio shows me stack like this: > > > > Application.exe!_NMSG_WRITE(int rterrnum=10) Line 217 C > > Application.exe!abort() Line 61 + 0x7 bytes C > > Application.exe!_wassert(const wchar_t * expr=0x00496678, const > > wchar_t * filename=0x0049652c, unsigned int lineno=352) Line 153 > C > > Application.exe!uv_tcp_queue_accept(uv_tcp_s * > handle=0x0013fec4, > > uv_tcp_accept_s * req=0x003eacb0) Line 352 + 0x21 bytes C > > Application.exe!uv_tcp_accept(uv_tcp_s * server=0x0013fec4, > > uv_tcp_s * client=0x49799684) Line 639 + 0xd bytes C > >> Application.exe!uv_accept(uv_stream_s * server=0x0013fec4, > > uv_stream_s * client=0x49799684) Line 55 + 0xd bytes C > > > > > > Asssertion in uv_tcp_queue_accept in src\win\tcp.c fails: > > assert(handle->flags & UV_HANDLE_LISTENING); > > > > > > Value of 'handle->flags' is 0x00000220 > > > > Before this happens, do you get any connection callback called with an > error? > > I believe the culprit is this line here: > https://github.com/joyent/libuv/blob/master/src/win/tcp.c#L1050 > <https://github.com/joyent/libuv/blob/master/src/win/tcp.c#L1050> > > -- > Saúl Ibarra Corretgé > bettercallsaghul.com <http://bettercallsaghul.com> > > > > This time I had in my code (status < 0) and found error code in > connection callback -4060 (maps to UV__ENOBUFS) > I return from callback when status < 0 > But next connection causes assertion failure: > > *Assertion failed: handle->flags & UV_HANDLE_LISTENING, file > src\win\tcp.c, line 352* > > The assertion at line 352 is (in uv_tcp_queue_accept) > assert(handle->flags & UV_HANDLE_LISTENING); > > Flag value: handle->flags = 0x00000220 > > This is stack: > Application.exe!uv_tcp_queue_accept(uv_tcp_s * handle=0x0013fec4, > uv_tcp_accept_s * req=0x003eb1b8) Line 352 + 0x21 bytes C > Application.exe!uv_tcp_accept(uv_tcp_s * server=0x0013fec4, > uv_tcp_s * client=0x15b49bdc) Line 639 + 0xd bytes C > Application.exe!uv_accept(uv_stream_s * server=0x0013fec4, > uv_stream_s * client=0x15b49bdc) Line 55 + 0xd bytes C > Application.exe!on_new_connection(uv_stream_s * server=0x0013fec4, > int status=0) Line 1708 + 0xb bytes C++ > > Here on_new_connection is connection callback. When assertion fails the > callback doesn't indicate any error code in status. >
As I mentioned on my previous email, the issue seems to be here: https://github.com/joyent/libuv/blob/master/src/win/tcp.c#L1054 When accepting a connection fails, the UV_HANDLE_LISTENING flag is reset, that's why your next attempt blows up the assert. Please open an issue on GH. -- Saúl Ibarra Corretgé bettercallsaghul.com
signature.asc
Description: OpenPGP digital signature
