This repository has been archived by the owner on Dec 18, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 527
Multi-thread Kestrel crashes on x64 DNX (CLR & Core CLR) on Windows (racy) #205
Comments
The assert failure comes after uv_pipe_connect returns a negative status (this status changes randomly from run to run) causing ListenerSecondary.DispatchPipe to be disposed in a catch block. Despite the negative return value the uv_pipe_connect callback still gets invoked with a zero status. At this point the callback tries to use the already-disposed DispatchPipe. Since this only seems to happen with the 64 bit libuv.dll, I think we should wait for a new build of libuv before investigating this issue further. |
halter73
added a commit
that referenced
this issue
Sep 24, 2015
This fix prevents Libuv.pipe_connect from throwing when it shouldn't. When pipe_connect threw, an assertion failure would follow since the pipe handle would be closed prematurely. http://docs.libuv.org/en/v1.x/pipe.html#c.uv_pipe_connect #205
So it turns out not to be an issue with the native libuv.dll ... |
So cryptic!! |
halter73
added a commit
that referenced
this issue
Sep 24, 2015
This fix prevents Libuv.pipe_connect from throwing when it shouldn't. When pipe_connect threw, an assertion failure would follow since the pipe handle would be closed prematurely. http://docs.libuv.org/en/v1.x/pipe.html#c.uv_pipe_connect #205
halter73
added a commit
that referenced
this issue
Sep 24, 2015
This fix prevents Libuv.pipe_connect from throwing when the stack memory that was previously incorrectly interpreted as the int return value happens to be negative. When pipe_connect threw, an assertion failure would follow since the pipe handle would be closed prematurely. http://docs.libuv.org/en/v1.x/pipe.html#c.uv_pipe_connect #205
halter73
added a commit
that referenced
this issue
Sep 25, 2015
This fix prevents Libuv.pipe_connect from throwing when the stack memory that was previously incorrectly interpreted as the int return value happens to be negative. When pipe_connect threw, an assertion failure would follow since the pipe handle would be closed prematurely. http://docs.libuv.org/en/v1.x/pipe.html#c.uv_pipe_connect #205
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
DNX version: 1.0.0-beta8-15616
Kestrel version: 1.0.0-beta8-15614
When using an x64 DNX (either full CLR or Core CLR) on Windows, with Kestrel configured to use multiple listener threads (
IKestrelServerInformation.ThreadCount = Environment.ProcessorCount / 2
), it crashes on start (before any requests are made) most times. On full CLR an assert window is show:Exception stack trace:
Logged by @DamianEdwards
The text was updated successfully, but these errors were encountered: