-
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
Test: System.Net.Sockets.Tests.SendReceiveEap.SendToRecvFrom_Datagram_UDP(loopbackAddress: ::1) failed in CI #1712
Comments
This issue is repro on OuterLoop_CentOS7.1_release (build#123), detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_centos7.1_release/123/testReport/System.Net.Sockets.Tests/SendReceiveEap/SendToRecvFrom_Datagram_UDP_loopbackAddress____1_/ |
@stephentoub this test was added about three weeks ago. Any thoughts? We should probably disable it.
Also there are two Assert.True's here without any userMessage param so that should be added. |
The test itself has actually been in the repo since 2015: What changed a few weeks ago was allowing the test to work with the various Async APIs on Socket, e.g. allowing it to work with the EAP, Task, and APM methods (and the sync ones), rather than just the APM ones. It's possible an issue was introduced as part of that conversion. |
Failed again on build 20170324.01 |
@steveharter, actually, FYI, it looks like the test has failed not just on EAP but also on APM, which was the one that previously existed. |
@steveharter, this looks like the same problem as was fixed for some other tests in https://github.com/dotnet/corefx/issues/5185. The test is sending 10 packets over UDP and expecting all 10 to be received, which isn't guaranteed. There's even a TODO in the test stating that it needs to be hardened against such loss: |
FWIW according to jdash, the tests started failing on 3/9/2017. The refactoring work was on 2/26/2017 - dotnet/corefx@ca392ca#diff-5d77ee23eb2ea596e218f9c1ef09d793
|
I believe many timeouts or proposed UDP packet loss are interference from other tests that happen to listen on another tests port, where tests do a receivefrom on a port that they did not bind to (IPV4\IPV4 dual mode tests), so the 'bad' test receives the data causing the 'good' test to timeout or miss some data. This is mostly a Linux issue due to the randomness in port assignment (vs Windows which is incremental). So if the refactoring isn't to blame, perhaps a new or other modified test is (that was added\modified on or a few days before 3/9/2017). |
Stress testing Windows 10 resulted in this test starting but not finishing (so not considered a failure in CI reports), unlike Linux which does fail in CI. For the Windows 10 repro, a background exception was reported that may have originated from that test, or from the other test that was currently running: System.Net.Sockets.Tests.DualModeConnectToIPAddressArray.DualModeConnect_IPAddressListToHost_Throws
For Linux, possible interference from the DualMode test which mixes\matches IPv4\v6 addresses expecting failures, which may randomly have port collisions on linux so those should be disabled.
|
Overall it looks like 1/week failure rate ... borderline for addressing it in 2.0. Given that this is most likely just bad test and we're tight on workforce for 2.0, we will keep it in Future - I marked it as 'wishlist' as it should be on top of our Future backlog. |
I could not find any recent failure. Please reopen if this fails again. |
No failures because test case is disabled:
|
This is a major blocker for implementing #938, since we need a robust way to test UDP, if we want to cover those changes. |
This failure is likely not about port stealing or any other direct interference with other tests. The test tends to fail when CPU load is high. I can reproduce the failure by running the Theory's cases on a 2 VCPU Linux system in parallel with one single other test case that calculates PI. |
…44591) Some `SendReceive` socket tests may be prone to timing issues on CI. This seems to be the root cause of #1712. We need a reliable way to run such tests to unblock the work on new UDP socket API-s in #33418. This PR defines a new `SendReceiveNonParallel` test group, moving `SendToRecvFrom_Datagram_UDP` into that group. Since this is already a significant reorganization, it seemed reasonable to also: - Harmonize naming: all SendReceive test classses are now named either `SendReceive_[SubVariant]` or `SendReceiveNonParallel_[SubVariant]` - Split `SendReceive.cs` into multiple files: - `SendReceive.cs` for the parallel variants - `SendReceiveNonParallel.cs` for the new, non-parallel variants - Rename the non-generic class `SendReceive` to `SendReceiveMisc` (to avoid name collision and confusion with `SendReceive<T>`) and move it to `SendReceiveMisc.cs` - Move `SendReceiveListener` and `SendReceiveUdpClient` to separate files, rename `SendReceiveListener` to `SendReceiveTcpClient`
Fixes dotnet#1712. Some RVA data blobs within the compiler are special and contain other dependencies the compiler needs to look at during scanning phase. This fixes an issue where the `<Module>` type wasn't having its metadata generated in optimized builds because the scanning phase never saw the `<Module>` type being allocated and didn't predict it as needing metadata. The p/invoke fixup blob references the `<Module>` type as "a type from the assembly that contained the p/invoke". We need to scan the fixup blob during the scanning phase so that the type is seen.
Failed test: System.Net.Sockets.Tests.SendReceiveEap.SendToRecvFrom_Datagram_UDP(loopbackAddress: ::1)
Configuration: OuterLoop_CentOS7.1_debug (build#123)
Message:
Stack Trace:
Detail: https://ci.dot.net/job/dotnet_corefx/job/master/job/outerloop_centos7.1_debug/123/consoleText
The text was updated successfully, but these errors were encountered: