The forge workflow's test job has failed on every push to main since at least 11-05: eight tests fail on its runner without naming what they lack #67
Open
opened 2026-11-14 00:21:46 +00:00 by xemmerling
·
0 comments
No Branch/Tag specified
main
dev/schema-step-order
t-join-release
t-work-booking
t-ahead-deadlock-wip
t-hotfix-9ae
t-width-work
t-id-token-renew
t-claim-unkept
t-resume-live
t-run-record
t-all-lockfiles
t-relay-offset
t-blame-event
t-freer-links
t-load-tests
t-jobserver2
t-starved-timeout
t-client-pack
t-offline-config
t-test-plan
t-told-resume2
t-jobserver
t-told-resume
t-outbound2
t-crash-open-bench
t-told-once
guest-never-below-given
admit-page-cache-active
pooled-admission
driver-give-back
no-sizes
one-driver-per-check
archive/vm-root-share
archive/build-out-kept
archive/cargo-perf
archive/virtiofs-readdir-alloc
archive/vm-outputs-stream
archive/stable-verify-priority
archive/agents-1
archive/stack-parallel
archive/cpu-admission
archive/narrow-from-every-log
archive/old-t
archive/worker-store-gc
archive/failing-builds-kept
archive/vm-cargo-home
archive/lifecycle
archive/bench-own-cores
archive/place-test-binaries-nocopy
archive/vm-net-upload-stall
archive/booking-current-use
archive/archive-dep-out-dirs
archive/any-arch-shards
archive/prepare-stall-progress-ns20
archive/s2
archive/next-set-20
archive/store-full-waits
archive/fetch-caps-by-node
archive/vm-step-phases
archive/arm-only-for-arm
archive/deploy-all-workers
archive/lifecycle-staging
archive/lifecycle-1-wire
archive/fast-gate
archive/cargo-key-narrow
archive/log-leads-followup
archive/gate-limit
archive/prepare-stall-vm-bytes
archive/lifecycle-2-ends
archive/cache-hits-bind
archive/failing-reused
archive/oci-archive-direct
archive/prepare-stall-progress
archive/test-quarantine
archive/crash-safe-on-18
archive/build-script-etxtbsy
archive/old-release
archive/next-set-19c
archive/wait-reasons
archive/cache-put-best-effort
archive/hang-not-t-time
archive/shard-test-results
archive/vm-carry-on-17
archive/check-test-filter
archive/artifact-path-beneath
archive/stall-room-xfs
archive/build-dir-no-recopy
archive/cache-hits-link
archive/outputs-no-follow-on-copy
archive/outputs-no-follow
archive/next-set-19
archive/hang-detect
archive/stable-verify-stable-plan
archive/freer-target-only
archive/lease-pricing-narrow
archive/vm-outputs-once
archive/queue-place-starved
archive/publish-reads
archive/disk-warning-scratch
archive/outputs-no-copy
archive/wd-probe-3min
archive/watchdog-on-d65
archive/log-leads-with-excerpt
archive/queue-place
archive/prep-watchdog-progress
archive/cache-put-stack-room
archive/cache-put-stack
archive/place-by-pace
archive/nested-sync-helper
archive/next-set-18y
archive/archive-bins-by-env-19
archive/next-set-18
archive/disk-want-held
archive/young-booking-back
archive/flaky-tests-1027b
archive/next-set-17
archive/prep-start-at-close
archive/unpack-error-on-17
archive/server-memory-high
archive/vm-start-held
archive/vm-carry-on-14
archive/space-trim-registry-room
archive/file-cache-ns16
archive/unpack-error-final
archive/crash-safe-worker
archive/server-space-trim
archive/status-big-runs
archive/nested-tmp-volatile
archive/publish-refresh
archive/gc-cache-quiet-reads
archive/next-set-16
archive/vm14-proof
archive/csw-node-kill
archive/unpack-link
archive/vm-tests-15
archive/seccomp-allow-field
archive/flaky-tests-1027-ns15
archive/shard-fail-fast
archive/server-node-check
archive/live-log-restart
archive/unpack-no-orphans
archive/flaky-tests-1027
archive/fetch-share-images
archive/fetch-images-red4
archive/forget-cached
archive/put-file-once-ns15
archive/recheck-rank-15
archive/fetch-images-red3
archive/unpack-no-orphans-red2
archive/fetch-io-pass-followups
archive/sandbox-no-fallback-ns15
archive/unpack-no-orphans-red
archive/archive-bins-by-env-ns15
archive/ns15-proof
archive/next-set-15
archive/archive-bins-by-env
archive/vm-guest-panic-15
archive/sandbox-no-fallback
archive/recheck-rank
archive/placement-ahead-bound
archive/carry-keeps-listing
archive/registry-parallel-pull
archive/sandbox-tests-15
archive/attempt-log-live-15
archive/follow-progress-16
archive/follow-progress-15
archive/ns15-archive-base
archive/fetch-io-max-on-13
archive/fetch-images-red2
archive/transient-build-fail-15
archive/test-ended-early-15
archive/archive-keep-cleanup
archive/main-merge-14
archive/sandbox-clone3-fallback
archive/vm-carry-on-13
archive/fetch-io-sweep-15
archive/vm-root-disk-fixes
archive/vm-guest-panic
archive/follow-progress-14
archive/archive-keep-on-demand
archive/vm-exit-unseen
archive/file-cache-share
archive/bwrap-root-userns
archive/transient-build-fail
archive/fetch-io-max
archive/file-cache-guard-11
archive/fetch-io-sweep
archive/archive-build-dir-skip
archive/next-set-14
archive/wrapper-one-read
archive/archive-tmp-links
archive/attempt-log-live
archive/fetch-share-and-order
archive/vm-hang-io-wait
archive/vm-carry-fixes
archive/image-cancel
archive/test-ended-early
archive/sim-on-train3-bundle
archive/hits-layer-wip
archive/t-old-putfile
archive/archive-links
archive/stall-on-13
archive/carried-prep-completes
archive/put-file-once
archive/preview-14
archive/follow-progress
archive/gc-reads-dont-protect
archive/admission-replay-people
archive/people-pickup
archive/gc-pass-visible
archive/hits-layer
archive/own-build-priced
archive/compact-stamps-followup
archive/prepare-timing
archive/sim-on-train3
archive/next-set-13
archive/next-set-12b
archive/sim-on-next-set-12
archive/deploy-doc-no-kill
archive/next-set-12
archive/attempt-logs-real
archive/sim-tests-green
archive/shard-label-index
archive/young-booking
archive/next-set-11
archive/data-dir-config-env
archive/vm-sync-not-host-store
archive/attempt-logs
archive/wrapper-ro
archive/tests-wait-on-events
archive/blame-git-optional-needs
archive/job-file-headroom-impl
archive/next-set-10
archive/blame-verdict-fresh-parent
archive/compact-touched-stamps
archive/interactive-incremental-off
archive/follow-lost-lines-counted
archive/evict-test
archive/next-set-trial
archive/keys-cover-output-bytes
archive/file-cache-guard
archive/blame-after-parent
archive/test-filter-matching-nothing-fails
archive/s1-on-d96
archive/draining-node-queues
archive/tprev-checks-prod-next
archive/s1-dead
archive/follow-live-run
archive/guard-stopped-setup-text
archive/io-error-cause
archive/source-layer-whole
archive/clippy-groups
archive/worker-silence-grace
archive/price-touched
archive/prod-next
archive/batch1
archive/s1-on-prod-next
archive/vmcache/sandbox-copyup-pin
archive/s1-xfs-store
archive/warm-script-builds
archive/vmcache/setup-tag-digest
archive/vmcache/setup-should-fixes
archive/vmcache/setup-any-arch
archive/guard-livelock
archive/host-budget
archive/wire-format-test
archive/admission-replay
archive/switch-safe
archive/stall-window
archive/upgrade-carries-preparing
archive/static-init
archive/switch-proof-b
archive/carry-tokens
archive/seals-together
archive/switch-safe-storage
archive/switch-safe-worker
archive/batch-b-prev
archive/vmcache/batch-b
archive/carry-vm-helpers
archive/small-llvm-args-failed-log
archive/batch-a
archive/stall-hotfix
archive/prev-pacing
archive/u-try-wip
archive/u-try
archive/u-try-wip2
archive/flatten-verify
archive/poll-free
archive/flatten-tiers
archive/hotfix-cross
archive/pool-stall
archive/disk-pacing
archive/u-builds-from-graph
archive/mac-idle
archive/ship-direct
archive/vmcache/shards
archive/soft-margin
archive/behind-no-target
archive/filtered-binaries
archive/vmcache/setup-layers
archive/direct-off-prev
archive/probe-budget
archive/vm-helper-exit
archive/jobs-soft-bound
archive/vmcache/vm-disks
archive/vmcache/failure-outputs
archive/narrowed-not-verdict
archive/scratch-direct-off
archive/handover-holds
archive/memory-lines
archive/drain-destroys
archive/pool-size
archive/drain-own-frees
archive/test-schema-drop
archive/deploy-disk
archive/deploy-disk-lines
archive/clone-aware-freeing
archive/absolute-headroom
archive/zfs-pool-size
archive/u-int5
archive/u-load
archive/u-warn
archive/u-steer
archive/revert-stall-once
archive/guard-headroom
archive/u-int3
archive/u-readsets
archive/u-hermetic
archive/mem-virtio
archive/u-buildjobs
archive/u-waits
archive/u-three
archive/u-zfs-stall
archive/u-config
archive/u-lean
archive/u-e2e
archive/u-integrate2
archive/u-jobenv
archive/u-cache-blobs
archive/u-observe2
archive/u-sched-nospread
archive/u-node-bound
archive/u-sched-oom
archive/u-review-store
archive/u-observe
archive/u-review-engine
archive/u-review-srv
archive/u-review-node
archive/u-review-sched
archive/preempt-measured
archive/u-integrate
archive/u-eng
archive/lock-off-runtime
archive/u-vm
archive/u-gone
archive/u-offline
archive/ready-starve
archive/u-notices
archive/heads-never-superseded
archive/u-learn
archive/int
archive/u-graph
archive/u-umount
archive/supersede-followed
archive/preparing-booking
archive/u-xdev
archive/u-env
archive/u-poll
archive/u-wrap
archive/u-room
archive/u-wrap-try
archive/u-fixed
archive/unstall
archive/u-fix3
archive/u-cwd
archive/resume-supersedes
archive/server-heap
archive/u-harness
archive/u-macos
archive/u-node
archive/u-eng2
archive/u-leader
archive/u-cutover
archive/u-cache
archive/u-sched
archive/u-engine
archive/chore/agpl-license
archive/note-x86-disk-room
archive/pass-cost
archive/prod-defects
archive/clippy-false-greens
archive/t-pace-variance-prototype
archive/outputs-reattach
archive/fix-retry-needs
archive/no-supersede-uncached
archive/fix/promoted-view-mtime
archive/rb-merge
archive/ft-sched
archive/ft-node
archive/ft-engine
archive/fx-sim
archive/fx2-mem
archive/fx2-store
archive/fx2-ci
archive/fx-work
archive/fx-ci
archive/fx-sched
archive/fx-req
archive/fx-store
archive/fx-cache
archive/rb-storage
archive/rb-scheduling
archive/rb-sweep
archive/rb-tracking
archive/rb-workers
archive/rb-client
archive/rb-profiles
archive/rebuild
archive/batch-deploy
archive/fix-roll
archive/work
archive/fix-busy
archive/fix-perf
archive/fix-suite
archive/fix-spread
archive/fix-sig
archive/fix-wait
archive/fix-init
archive/sizing
archive/fix-drift
archive/delivery
archive/fix-snap
archive/fix-own
archive/fix-rollout
archive/fix-hang
archive/fix-tree
archive/images
archive/fill
archive/sched-gate-preparing-after
archive/takeover-sim
archive/image-d244b22
archive/image-ce8a09e
archive/image-c9ff4f7
archive/image-489bec9
archive/image-7e07ffb
archive/image-583ea93
archive/image-8e1cd2c
archive/image-fbf0a9c
archive/image-6924e11
archive/image-29cabc3
archive/image-97ebb0e
archive/image-d0e23ac
archive/image-319fce9
archive/image-4f689e1
archive/image-feacbcd
archive/image-d5d9446
archive/image-6b86940
archive/fix/dedup-priority-promotion
archive/image-a5b0fe3
archive/image-462afb1
archive/image-f39d42c
archive/image-6e71fb4
archive/image-0c62329
archive/resources
archive/image-112b6a6
archive/image-8b06530
archive/image-5ae7cd8
archive/fmt-fix-in-t-toml
archive/image-arm64
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
tilo/t#67
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The forge's own workflow for t (
.forgejo/workflows/ci.yml) has not had a passingtestjob on main in any run I sampled back to 2026-11-05.fmtandclippypass. Nobody reads it, me included until tonight, so it no longer tells a regression from its standing failures. Read from the job logs withfgj run view <run> --log-failed.What fails, by run
e5835fde)6ea02834)node::observe::tests::every_lookup_once_units_begin_is_recorded_per_processnode::observe::tests::a_build_script_reading_git_head_is_keyed_by_itnode::observe::tests::what_a_linker_and_the_programs_it_runs_read_is_the_linksnode::observe::tests::a_handle_opens_again_after_the_host_forgot_its_inode(mine, new in6ea02834)node::pasta_flows::linux::tests::a_destroyed_socket_resets_its_peernode::sandbox::tests::a_job_s_own_process_is_told_from_what_its_launch_started_for_itnode::sandbox::linux::tests::starts_from_the_template_copy_none_of_the_running_jobs_mountsnode::cgroup::tests::a_job_past_its_memory_high_is_throttled_never_killed_and_its_node_is_told_at_onceci::tests::a_check_failing_across_a_range_of_heads_is_probed_log2_times,ci::tests::checks_failing_across_a_range_of_heads_share_log2_probe_runsRun 1125 also failed four tests that pass today (
layers::every_module_imports_only_what_its_layer_allows,proto::tests::every_route_is_classified,harness::tests::a_dropped_harness_kills_its_group,jobs::flight::tests::evaluations_run_wide_within_the_sets_in_hand).What each says
ECONNREFUSED(onceENOTCONN), e.g.src/node/observe.rs:1842:38: called Result::unwrap() on an Err value: Os { code: 111, kind: ConnectionRefused }. The mount itself succeeds. That errno is what the kernel gives once the server's answer to INIT was refused, andSources::initanswers with an error whenadd_capabilities(KERNEL_WANTS)finds an ability missing (passthrough needs Linux 6.9, idmapped FUSE 6.12). Not confirmed: the runner's kernel version is not in the log, and the server's own error is never printed because the test panics before it joins the server thread.stat, before it reachesopen_by_handle_at. So defef173's need (handles, for a refusal withEPERM) is not what that runner hit; it may still be right for another machine.a_destroyed_socket_resets_its_peer:src/node/pasta_flows.rs:432:27: destroying the held socket: No such file or directory (os error 2).a_job_s_own_process_is_told_from_what_its_launch_started_for_it:src/node/sandbox.rs:2575:9: pasta and a helper alone.starts_from_the_template_copy_none_of_the_running_jobs_mounts:src/node/sandbox.rs:1955:13: a start from the worker's copies all its 274 mounts: [273, 273, …].Why it matters
volume,unprivileged.testcheck declaresroot,fuse,score,volumemissing, so the mounted tests of the source server return early there. Together: those tests pass on no machine that runs on every push. The fix for #65/#66 (6ea02834) is proven by the reproduction on testing and by production, not by its mounted test.scripts/privileged-tests.shis the one place they can run, by hand.What I am doing
One developer is taking this: each of these tests either passes on the workflow's runner or fails naming the exact need it lacks (
src/testing.rs), and the workflow declares each such need with its reason, as it does forvolumeandunprivileged. Proof is the workflow's own run on a pull request. No change to what t does on a node. If a test turns out to show a fault in t rather than in the machine, it gets an issue of its own instead.00:30Z 11-14: main's head
c2d52b34, run 1452The
testjob failed again: 3,323 run, 6 failed, 1 timed out. The same tests as in run 1450 except the mount-count test, which passed this time (so it is not steady). My mounted test still fails at its first read through the mount withECONNREFUSED(src/node/observe.rs:1842:38), with defef173'sNeed::Handlesin: that change does not reach what this runner hits.00:57Z 11-14: first trial on the runner (branch
dev/forge-ci, commitec41199e, run 1454)The commit makes each failing test name what the machine lacks or print the fact that decides it, and corrects two tests that assumed too much. fmt and clippy passed. Test: 3,323 run, 6 failed, none timed out.
Linux 6.12.47-kvm-podesta refused the mount's first request (Connection refused), and the source server said: the FUSE handshake: the kernel lacks InitFlags(FUSE_PASSTHROUGH)fusekernel.a_destroyed_socket_resets_its_peerLinux 6.12.47-kvm-podesta names no socket for the four-tuple of one /proc/net/tcp lists (No such file or directory)sockdiag.a_job_s_own_process_is_told_from_what_its_launch_started_for_itthe cgroup holds ["30266 pasta.avx2 NSpid 30266 1", "30268 tilo-job-init NSpid 30268", "30305 sleep NSpid 30305"]runs_owntakes it for a process of the job. Production's worker runs t's own build (pasta 2026_10_02.cba3570-t1). Whether that is the machine's lack or a fault inruns_ownis being decided from the code.a_job_past_its_memory_high_is_throttled_never_killed_and_its_node_is_told_at_oncememory.highof 64 MiB under its 128 MiBmemory.max; the half that is killed at its limit now has nomemory.high.starts_from_the_template_copy_none_of_the_running_jobs_mountsNext: the workflow declares
fusekernelandsockdiagwith their reasons, and the pasta test gets its decision.01:19Z 11-14: landed as
86e00d08and3b8072d8fusekernelandsockdiagdeclared in the workflow): fmt and clippy pass; test 3,323 run, 3,322 passed, 1 failed. The four mounted tests and the socket test now skip and the workflow's last step prints them by reason, with the kernel's release.86e00d08(the tests say what their machine lacked; two tests corrected) and3b8072d8(the workflow declares the runner's two limits, with what would lift them: a guest kernel with CONFIG_FUSE_PASSTHROUGH=y, and with CONFIG_INET_DIAG, CONFIG_INET_TCP_DIAG and CONFIG_INET_DIAG_DESTROY).a_job_s_own_process_is_told_from_what_its_launch_started_for_it. It is not the runner's lack: it shows a fault in t, filed as #68, whose fix is on trial now. Thetestjob turns green with it.Still true after this: the source server's mounted tests run on no machine that runs on every push. They need a runner kernel with FUSE passthrough, or
scripts/privileged-tests.shby hand.01:54Z 11-14: the workflow's
testjob is green on mainRun 1459, for
95935ccd(the fix for #68 on top of the two commits above): fmt, clippy and test all succeeded. It is the first greentestjob on main in every run I sampled back to 11-05. The trial before it on the runner (run 1456): 3,326 tests run, 3,326 passed, 42 skipped, with the skips printed by reason.What stays open here:
fusekernelandsockdiag. With t-testing declaringfuseandrootmissing, those tests still run on no machine on every push. A guest kernel withCONFIG_FUSE_PASSTHROUGH=y,CONFIG_INET_DIAG,CONFIG_INET_TCP_DIAGandCONFIG_INET_DIAG_DESTROYwould close that; then drop the two names from the workflow.testjob on main means something, so it should be read after every push.