Skip to content

ci: pin rust-toolchain.toml to nightly-2026-04-28 (bd-at72)#177

Merged
cscheid merged 1 commit into
mainfrom
bugfix/ci-rust-min-stack
May 11, 2026
Merged

ci: pin rust-toolchain.toml to nightly-2026-04-28 (bd-at72)#177
cscheid merged 1 commit into
mainfrom
bugfix/ci-rust-min-stack

Conversation

@cscheid
Copy link
Copy Markdown
Member

@cscheid cscheid commented May 11, 2026

Summary

The TS Test Suite workflow has been failing on every push to main since 2026-05-10 with SIGSEGV in rustc nightly during the wasm32-unknown-unknown release build. The first iteration of this PR tried two RUST_MIN_STACK bumps (16 MB, then 32 MB) — both worked exactly long enough to expose a deeper crash, with rustc's own hint escalating to 64 MB and the SIGSEGV moving between quarto-pandoc-types, quarto-ast-reconcile, and tokio. That's not a fixed-size stack deficit; it's a regression in some rustc / LLVM pass.

To isolate the trigger, I installed two dated nightlies side-by-side (nightly-2026-04-28 and nightly-2026-05-11) and built wasm-quarto-hub-client against each. nightly-2026-04-28 (rustc commit 52b6e2c20, 2026-04-27) builds cleanly in 38 seconds. nightly-2026-05-11 (commit 4b0c9d76a, 2026-05-10) SIGSEGVs reliably with the same backtrace shape CI sees — through FPPassManager::runOnModule and LLVMRustWriteOutputFile, i.e. inside LLVM optimization codegen. CI was pulling the broken nightly because rustup fetches the latest unfdated nightly on every clean run; local environments don't reproduce because their cached nightly predates 2026-05-10.

This PR pins rust-toolchain.toml to nightly-2026-04-28 — the date matches what the team already has cached locally, so it should be byte-for-byte the same rustc everyone is currently running. The earlier RUST_MIN_STACK env-var changes in the workflow files have been dropped; the pin replaces them entirely. We'll bump the pinned date once upstream resolves the regression (tracked in bd-at72).

Test plan

  • Local reproduction of the CI failure with nightly-2026-05-11 — confirmed SIGSEGV
  • Local cargo xtask verify (full) with the pinned nightly-2026-04-28 — passes
  • CI on this PR — expected to be green
  • Once merged, rebase bugfix: multi-line block quote inside list item (bd-vet6) #176 onto main and confirm its CI also goes green

Closes bd-at72.

The TS Test Suite workflow has been failing on every push to main since
2026-05-10 with SIGSEGV in rustc nightly during the wasm32-unknown-unknown
release build (opt-level=3). Two attempts to widen RUST_MIN_STACK (16 MB,
then 32 MB) only chased the crash to deeper crates -- rustc's suggested
value escalated to 64 MB and the crash moved between quarto-pandoc-types,
quarto-ast-reconcile, and tokio. Not a fixed-size stack deficit.

Bisection via dated rustup nightlies, run locally on macOS aarch64:

- nightly-2026-04-28 (commit 52b6e2c20, 2026-04-27) -- wasm32 build
  completes cleanly in 38s
- nightly-2026-05-11 (commit 4b0c9d76a, 2026-05-10) -- reliable SIGSEGV
  in LLVM ThinLTO codegen, matches CI exactly

CI was running nightly-2026-05-11 because rustup pulls latest nightly on
every run; the previous green CI dates (last on 2026-05-08) pulled a
build from before the regression landed. The bug appears to be in LLVM's
ThinLTO/optimization passes (backtrace through FPPassManager::runOnModule
and LLVMRustWriteOutputFile), not in rustc Rust-side code.

Pin nightly to 2026-04-28 -- the date that matches the cached toolchain
the team is already running locally -- until upstream stabilizes nightly
again. Bump the date when the regression is resolved.

Drops the earlier RUST_MIN_STACK env-var changes from the workflow files
(they didn't help, and a single mechanism is cleaner than belt-and-suspenders).
@cscheid cscheid force-pushed the bugfix/ci-rust-min-stack branch from 3c35c1a to 368e2cc Compare May 11, 2026 17:15
@cscheid cscheid changed the title ci: set RUST_MIN_STACK=16777216 for wasm32 build workflows (bd-at72) ci: pin rust-toolchain.toml to nightly-2026-04-28 (bd-at72) May 11, 2026
@cscheid cscheid merged commit 5339415 into main May 11, 2026
4 checks passed
@cscheid cscheid deleted the bugfix/ci-rust-min-stack branch May 11, 2026 17:37
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