Skip to content

promise microtask ordering: bare .then() chain resolves after a later combinator #9377

Description

@proggeramlug

Symptom

promise_reaction_slot_overflow::degenerate_then_chain_survives_combinator
fails on an ordering difference — both values are correct, the sequence is
reversed:

expected: "chain: 9\nall: 9\n"
actual:   "all: 9\nchain: 9\n"

The assertion message states the intent: "a bare p.then() pass-through chain
must survive a later combinator"
.

Not a regression from the current release window

Confirmed with clean builds (cargo clean first — an incremental target dir
across checkouts produces false verdicts here):

commit result
83754818ea (Aug-31 release pin) FAILED
b39778201b (current pin) FAILED
b39778201b + #9372 + #9375 FAILED

So it predates the window and is independent of #9226 (the source of the two
regressions fixed in #9372/#9375).

Why it went unnoticed

cargo-test-perry shards run only in the full tier (tags / dispatch /
release branches), never on main. In the Aug-31 full tier six of eight shards
failed early — shard 7 ran 3 of 35 test binaries — so many tests, including this
one, produced no verdict at all. An absent result reads as health.

Reproduces locally

macOS/aarch64 as well as ubuntu-latest, so no Linux-specific repro is needed:

cargo build -p perry -p perry-runtime-static -p perry-stdlib-static
RUST_TEST_THREADS=1 cargo test -p perry --test promise_reaction_slot_overflow

(build the -static wrappers first — otherwise a stale archive yields a
commit-coherence refusal rather than a test result)

Blocking

full-suite-gate fails on it, so it blocks any release cut until fixed or
triaged.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions