Skip to content

[✨ Triage] dotnet/runtime#127565 by github-actions[bot] - System.Net.Sockets IPv6 dual-mode tests fail on Android wi ... #205

@MihuBot

Description

@MihuBot

Triage for dotnet/runtime#127565.
Repo filter: All networking issues.
MihuBot version: 5a5ee7.
Ping MihaZupan for any issues.

This is a test triage report generated by AI, aimed at helping the triage team quickly identify past issues/PRs that may be related.
Take any conclusions with a large grain of salt.

Tool logs
dotnet/runtime#127565: System.Net.Sockets IPv6 dual-mode tests fail on Android with Connection refused by github-actions[bot]
Extracted 5 search queries: System.Net.Sockets dual-mode IPv6 tests failing on Android 'Connection refused' to ::1, Android emulator / Helix missing IPv6 support causing socket tests to fail, DualModeConnectAsync_DnsEndPointToHost_Helper Connection refused ::1 on Android, SocketAsyncEventArgsTest.Connect_Parallel_FailsOver (preferIPv6: True) failing on Android, Skip IPv6-specific socket tests on Android (SkipOnPlatform/TestPlatforms.Android)
Found 25 candidate issues
  • Issue #127422 (Apr 25 2026) - "Android socket tests failing with IPv6 connectivity issues"
    Summary: Automated runner identified the same pattern of failures (SocketException: Connection refused when tests try to talk to ::1) and concluded these are infrastructure/environment issues on the Android Helix pool. Recommendations were to skip IPv6-specific tests on Android and to investigate emulator/Helix IPv6 configuration. The issue was used to track the Android regressions and was closed (notes indicate similar follow-up work). Relevance: near‑duplicate to the new issue and supports the immediate skip-on-Android recommendation.

  • Issue #124751 (Feb 23 2026) - "DNS localhost subdomain tests with AddressFamily fail on Android"
    Summary: Detailed analysis of name-resolution behaviour on Android: family-specific getaddrinfo("localhost", AF_INET/AF_INET6) can fail on Android while AF_UNSPEC succeeds. The issue explains the RFC-6761 fallback logic and suggests two fixes: (a) change fallback to resolve with AF_UNSPEC then filter by family, or (b) fix the emulator/Helix resolver. Relevance: explains why name-resolution tests fail on Android and shows this is a platform/environment difference (not a product bug).

  • PR #124752 (Feb 23 2026) - "Disable localhost subdomain AddressFamily tests on Android"
    Summary: Adds ActiveIssue skips for the two AddressFamily-based localhost-subdomain tests on Android. Rationale: consistent failures on Android CI due to the resolver behaviour discussed in #124751. Relevance: precedence for disabling name-resolution tests on Android while infra or code changes are evaluated.

  • PR #127420 (Apr 25 2026) (merged Apr 28 2026) - "[mobile] Skip DnsGetHostEntry_LocalHost test on Android"
    Summary: Added platform skip (converted to ActiveIssue during review) for a GetHostEntry_LocalHost test on Android because Android emulators return non-loopback addresses for "localhost". Discussion focused on using ActiveIssue vs SkipOnPlatform and ensuring the skip references an appropriate tracking issue. Relevance: immediate remediation already applied for a related name-resolution test; shows team practice prefers ActiveIssue with tracking when possible.

  • Issue #104709 (Jul 11 2024, closed Jul 23 2024) - "[android] Connection issues in Sockets and Functional networking tests"
    Summary: Earlier outage where Android devices/emulators lacked internet connectivity (Network is unreachable) causing many socket/functional test failures. The infrastructure issue was resolved (internet restored) and the issue closed. Relevance: demonstrates Android Helix infrastructure can and has caused broad networking test failures; useful precedent when engaging DNCEng.

  • Issue #23798 (Oct 10 2017) - "Unit tests are failing if IPv6 is not configured"
    Summary: Longstanding guidance: tests must not assume IPv6 is configured on every test machine. The discussion proposed test-time checks (e.g., try binding IPv6 loopback) and skipping IPv6-only tests when IPv6/loopback is not available. Relevance: provides a recommended approach for test authors — detect IPv6 availability at runtime and skip IPv6-specific tests rather than fail.

  • Issue #50568 (Apr 1 2021) - "System.Net.Sockets.Tests fails on Android"
    Summary: Historic collection of socket tests failing on Android; many of those tests were disabled or skipped over time. Comments highlight that some failures are due to platform limitations rather than product bugs. Relevance: shows pattern of Android-specific socket limitations and precedent for disabling tests on Android.

  • PR #75341 (Sep 9 2022) - "Skip Quic IPv6 tests on unsupported platforms"
    Summary: Adds skips for IPv6 tests on platforms where IPv6 would produce EADDRNOTAVAIL, i.e., a precedent to skip IPv6 tests on platforms/environments that don't reliably support IPv6. Relevance: policy precedent for skipping IPv6 tests when platform doesn't support them.

  • Issue #95228 (Nov 25 2023, closed Dec 2 2023) - "Broken Build: Linux build with ipv6 connectivity"
    Summary: A developer system with IPv6 led to intermittent "Connection reset by peer" during restore/download; packet captures showed retransmits and server RSTs. The root cause was environmental/network-level and not a runtime bug. Relevance: an example showing IPv6 networking can cause varied failures (not always product bugs) and that packet captures / infra investigation may be needed.

  • Issue #123797 (Jan 30 2026) - "Assert.Equal failure in SocketAsyncEventArgsTest.Connect_Parallel_FailsOver ..."
    Summary: A test very similar to one listed in the new issue (Connect_Parallel_FailsOver) failed on tvOS with unexpected local endpoint (127.0.0.1). The thread concluded platform-specific investigation was needed. Relevance: shows that Connect_Parallel_FailsOver has had platform-specific failures previously (not unique to Android) — useful context when judging whether to skip the test vs investigate the product code.

Conclusions / actionable points from the related history

  • This class of failures has repeatedly been an infrastructure/platform issue on Android (and other mobile CI queues). Prior work has:
    • disabled/skipped name-resolution localhost tests on Android (PR #127420, #124752),
    • recommended skipping IPv6 tests where the platform/emulator lacks IPv6,
    • and advised detecting IPv6/loopback availability in tests (#23798).
  • Two reasonable near-term options:
    1. Add ActiveIssue/SkipOnPlatform annotations for the failing IPv6 dual-mode socket tests (prefer ActiveIssue with a tracking issue so the skip is discoverable), mirroring prior PRs for name-resolution tests.
    2. Engage dnceng to verify whether IPv6 can be enabled/configured in the Android Helix queue (if enabling IPv6 in the emulator/host is feasible and desired, that may be the longer-term fix).
  • If you go the skip route, follow existing precedents: prefer ActiveIssue(...) with a link to this tracking issue and limit the skip to tests that require IPv6 loopback (::1) or set preferIPv6=true. If you prefer a runtime skip, add a small helper that checks whether binding IPv6 loopback succeeds (per discussion in #23798) and skip tests when not available.

If you want, I can:

  • propose a concise ActiveIssue attribute list for the exact test methods named in the new issue, or
  • draft a small runtime OSSupportsIPv6+loopback check helper to gate the IPv6 tests.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions