Skip to content

goroot: reduce xfail backlog across go1.24-go1.26#1773

Open
cpunion wants to merge 91 commits intogoplus:feat/go126-source-patch-cifrom
cpunion:analysis/goroot-xfail-priority
Open

goroot: reduce xfail backlog across go1.24-go1.26#1773
cpunion wants to merge 91 commits intogoplus:feat/go126-source-patch-cifrom
cpunion:analysis/goroot-xfail-priority

Conversation

@cpunion
Copy link
Copy Markdown
Collaborator

@cpunion cpunion commented Mar 31, 2026

Summary

This PR continues the goroot xfail cleanup on top of #1759.

It keeps the current scope limited to:

  • Go 1.24 ~ 1.26
  • ubuntu + macos
  • cases that do not depend on debug/trace/finalizer/liveness

Included

  • runtime/SSA fixes for channel/select, nil/interface loads, zero-sized allocations, string slicing, and integer div/rem edge cases
  • removal of stale xfails once the corresponding cases pass on both darwin/arm64 and linux/amd64
  • narrowed goroot matrix and refreshed xfail inventory carried from the earlier runner work
  • test/goroot runner support for an opt-in -directive-mode=runlike path covering additional run-like directives without changing the default CI scope yet

Current XFail Inventory

Current test/goroot/xfail.yaml inventory in this branch:

  • 409 xfails
  • 18 host skips
  • 4 timeout overrides
  • 431 total entries

Current Runner Scope

test/goroot now has three discovery modes:

  • legacy
  • ci (current CI behavior)
  • runlike (broader local/experimental expansion)

All modes use the same default directories:

  • ., ken, chan, interface, internal/runtime/sys, syntax, dwarf, fixedbugs, codegen, abi, typeparam, typeparam/mdempsky, arenas
  • cases must still match build.Context.MatchFile

legacy mode

legacy is the original narrow subset:

  • only directive run
  • only when the directive has no arguments

Bare // run counts:

  • linux/amd64: Go 1.24.11 = 975, Go 1.25.0 = 983, Go 1.26.0 = 996
  • linux/arm64: Go 1.24.11 = 973, Go 1.25.0 = 981, Go 1.26.0 = 994
  • darwin/arm64: Go 1.24.11 = 972, Go 1.25.0 = 980, Go 1.26.0 = 993

ci mode

ci is the current PR's widened CI surface:

  • run
  • run <args>
  • runoutput
  • rundir
  • runindir
  • buildrun

Current run-family counts with -directive-mode=ci:

  • linux/amd64: Go 1.24.11 = 1141, Go 1.25.0 = 1149, Go 1.26.0 = 1162
  • linux/arm64: Go 1.24.11 = 1139, Go 1.25.0 = 1147, Go 1.26.0 = 1159
  • darwin/arm64: Go 1.24.11 = 1138, Go 1.25.0 = 1146, Go 1.26.0 = 1158

runlike mode

runlike remains available for broader local expansion and additionally includes:

  • buildrundir

Current run-like counts with -directive-mode=runlike:

  • linux/amd64: Go 1.24.11 = 1145, Go 1.25.0 = 1153, Go 1.26.0 = 1166
  • linux/arm64: Go 1.24.11 = 1141, Go 1.25.0 = 1149, Go 1.26.0 = 1161
  • darwin/arm64: Go 1.24.11 = 1140, Go 1.25.0 = 1148, Go 1.26.0 = 1160

Remaining mixed errorcheckandrundir cases are still counted separately because they need an errorcheck-aware harness rather than a pure run/output comparator:

  • linux/amd64: 5 on Go 1.24.11 / 1.25.0 / 1.26.0
  • linux/arm64: 5 on Go 1.24.11 / 1.25.0 / 1.26.0
  • darwin/arm64: 5 on Go 1.24.11 / 1.25.0 / 1.26.0

Intentionally Excluded For Now

  • debug
  • trace
  • finalizer
  • liveness
  • errorcheckandrundir in the runner mode used by CI (needs an errorcheck-compatible execution path)
  • buildrundir in CI mode for now

Known buildrundir blockers found during local expansion:

  • retjmp.go: translated asm return-jump semantics still diverge (panic: f2 not called)
  • asmhdr.go: plan9asm constant expansion still rejects string consts (panic: "test" not an Int)

Validation

Each stale-xfail removal in this branch was rechecked on both:

  • darwin/arm64
  • linux/amd64

Recent regression fix additionally verified with:

  • LLGO_BUILD_CACHE=0 go run ./cmd/llgo test ./test/std/archive/tar
  • ./dev/docker.sh amd64 ... ./dev/llgo.sh test -timeout=20m github.com/goplus/llgo/test/std/archive/tar

Current runner expansion verified locally with:

  • go test ./internal/build -count=1
  • go test ./test/goroot -count=1
  • /Users/lijie/sdk/go1.26.0/bin/go test ./test/goroot -run '^TestGoRootRunCases$' -count=1 -timeout 60m -args -goroot /Users/lijie/sdk/go1.26.0 -go /Users/lijie/sdk/go1.26.0/bin/go -directive-mode ci -case '^(args\.go|strength\.go|alias3\.go|fixedbugs/issue29612\.go|fixedbugs/issue46234\.go)$'
  • go test ./internal/build -run 'TestPkgSFiles(QueryForTempDirPackage|ListsAsmForTempDirPackage)|TestPlan9Asm' -count=1

Known follow-up from the broader local runlike path:

  • buildrundir is not yet safe to enable in CI because of the two blockers above.

cpunion added 30 commits March 31, 2026 10:26
@cpunion cpunion force-pushed the analysis/goroot-xfail-priority branch from 52d5a6e to 8aa1361 Compare April 2, 2026 03:15
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 5, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 92.19%. Comparing base (6b1e842) to head (0ed0610).

Additional details and impacted files
@@                      Coverage Diff                       @@
##           feat/go126-source-patch-ci    #1773      +/-   ##
==============================================================
- Coverage                       93.16%   92.19%   -0.98%     
==============================================================
  Files                              48       49       +1     
  Lines                           13616    13745     +129     
==============================================================
- Hits                            12686    12672      -14     
- Misses                            742      871     +129     
- Partials                          188      202      +14     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant