Uh oh!
There was an error while loading. Please reload this page.
[ci-scan] Skip DnsGetHostAddresses_LocalhostSubdomainWithTrailingDot on Android (refs #127965) - #127983
Conversation
Android emulator DNS resolver returns non-loopback addresses for .localhost subdomain queries, causing Assert.All failures. Linked KBE: #127965 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Tagging subscribers to this area: @dotnet/runtime-infrastructure |
kotlarmilos
commented
May 11, 2026
@liveans Is this a sandbox problem where devices are blocked to access these ports? I think we had similar problem on Apple mobile recently |
There was a problem hiding this comment.
Pull request overview
This PR updates the System.Net.NameResolution functional tests to avoid a known Android-specific DNS resolution behavior difference by marking a single failing test as an active issue on Android.
Changes:
- Add an
[ActiveIssue(..., TestPlatforms.Android)]annotation toDnsGetHostAddresses_LocalhostSubdomainWithTrailingDot_ReturnsLoopback.
Show a summary per file
| File | Description |
|---|---|
| src/libraries/System.Net.NameResolution/tests/FunctionalTests/GetHostAddressesTest.cs | Adds an Android-only ActiveIssue mute for the localhost-subdomain-with-trailing-dot theory that is known to fail on Android DNS resolver behavior. |
Copilot's findings
- Files reviewed: 1/1 changed files
- Comments generated: 0
liveans
commented
May 11, 2026
seems like it, I believe it's environmental. |
Uh oh!
There was an error while loading. Please reload this page.
…non-loopback addresses (#128068) ## Description Dns falls back to resolving plain `localhost` when the OS resolver fails or returns zero addresses for a `*.localhost` subdomain (RFC 6761 §6.3). However, on Android the bionic `getaddrinfo` returns non-loopback addresses (link-local `fe80::*` and globally-routable IPv6) for `*.localhost`, bypassing the fallback and causing `Dns.GetHostAddresses("foo.localhost.")` to return non-loopback addresses. The same behavior was observed on iOS/tvOS/MacCatalyst. This was caused by the fallback condition only triggering on empty or failed OS responses; it is now extended to also trigger when the OS returns only non-loopback addresses, in both the sync and async paths. Six previously-disabled tests covering the same root cause are re-enabled in this PR. Fixes#127965. Fixes#127953. Supersedes the test-skip workarounds: - #127983 (merged) — `[ci-scan] Skip DnsGetHostAddresses_LocalhostSubdomainWithTrailingDot on Android` - #127742 (merged) — `[mobile] Skip failing Android localhost subdomain DNS tests` --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reasoning
The test
DnsGetHostAddresses_LocalhostSubdomainWithTrailingDot_ReturnsLoopbackfails on Android because the Android emulator DNS resolver returns link-local and globally-routable IPv6 addresses for.localhostsubdomain queries (foo.localhost.,bar.test.localhost.) instead of loopback addresses. This is a platform DNS resolver behavior difference (Android does not honor RFC 6761 §6.3 for subdomains of localhost), not a .NET product bug. The[ActiveIssue]annotation onTestPlatforms.Androidis the correct narrowly-scoped muting for this failure.KBE verification (four questions):
DnsGetHostAddresses_LocalhostSubdomainWithTrailingDot_ReturnsLoopback.Assert.All() Failure: ... Expected loopback address but got: fe80::....Impact on platforms
Errors log
First build it occurred
First seen in build 1411505 (2026-05-07) within the scanned window. Also present in 1413202. This is computed within the scanned window and may not be the true origin.
Linked issue
Linked KBE: #127965
Note
🔒 Integrity filter blocked 19 items
The following items were blocked because they don't meet the GitHub integrity level.
search_pull_requests: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".search_pull_requests: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".search_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".search_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".search_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".search_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".search_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".search_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".search_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".search_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".search_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".search_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".search_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".search_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".search_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".search_issues: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".To allow these resources, lower
min-integrityin your GitHub frontmatter: