-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GC crash in Kestrel Libuv and Sockets FunctionalTests/netcoreapp2.1 #10215
Comments
From @mikeharder on April 18, 2018 23:47 PR to enable diagnostic messages, which should tell us which specific test is hanging: aspnet/KestrelHttpServer#2505 |
From @mikeharder on April 19, 2018 19:25 I was able to get a local repro and capture dumps, and the root cause appears to be in the CLR (specifically the GC). Blocked waiting for assistance from the CLR. |
From @mikeharder on April 19, 2018 21:44 We believe the root cause is managed heap corruption. The ASP.NET team will attempt to find the root cause, which could be in either ASP.NET or CLR code. A separate issue is that once the managed heap is corrupted, fatal error reporting can trigger a deadlock in the GC: https://github.com/dotnet/coreclr/issues/17679. ReprosKestrel.Transport.Libuv.FunctionalTests\bin\Release\netcoreapp2.1http://aspnetci/viewLog.html?buildId=450255&buildTypeId=Lite_KestrelStressTest&tab=buildLog Kestrel.Transport.Sockets.FunctionalTests\bin\Release\netcoreapp2.1http://aspnetci/viewLog.html?buildId=451473&buildTypeId=Lite_KestrelStressTest&tab=buildLog |
From @mikeharder on April 19, 2018 21:49 I have captured two dumps from hung tests (both in |
From @mikeharder on April 19, 2018 23:28 According to CI logs, the first instance of this hang was 4/3/18 2:40 PM: http://aspnetci/viewLog.html?buildId=439512&tab=buildResultsDiv&buildTypeId=Lite_KestrelStressTest Earlier this day, the NETCoreApp dependency was updated from NETCoreApp 2.1.0-preview2-26330-03 to 2.1.0-preview3-26331-01: aspnet/Universe@f828c9d#diff-30dcc9789f8ea3c7632e4f054e60c072 It's likely the hang is related to the dependency update, either as a bug in the dependency itself, or a bug in ASP.NET that is exposed by the new dependency. |
It is a GC bug caused by C++ compiler optimizations. The following code in
Notice that the code reads the So what happens is that we read one value of the brick table, some other thread updates the brick table in the meantime, and the comparison uses the new value; but the rest of the method still uses the old value. |
From @mikeharder on April 18, 2018 18:42
Kestrel FunctionalTests are hanging frequently on CI:
KestrelHttpServer
http://aspnetci/viewLog.html?buildId=449083&buildTypeId=Lite_KestrelHttpServer&tab=buildLog&_focus=39538
http://aspnetci/viewLog.html?buildId=445522&buildTypeId=Lite_KestrelHttpServer&tab=buildLog
Win2012-Kestrel
http://aspnetci/viewLog.html?buildId=449994&tab=buildLog&buildTypeId=Lite_KestrelStressTest&logTab=tail
Copied from original issue: aspnet/KestrelHttpServer#2503
The text was updated successfully, but these errors were encountered: