Skip to content

[test] Fix test_poll_blocking_asyncify flake: start the clock before arming the timer - #27728

Closed
guybedford wants to merge 1 commit into
emscripten-core:mainfrom
guybedford:fix-poll-asyncify-flake
Closed

guybedford wants to merge 1 commit into
emscripten-core:mainfrom
guybedford:fix-poll-asyncify-flake

Conversation

@guybedford

Copy link
Copy Markdown
Collaborator

Fixes #27727.

In test_unblock_poll, emscripten_set_timeout(write_to_pipe, 1000) was armed before clock_gettime(&begin), so any delay between the two (preemption on a loaded CI machine, GC) shortens the measured duration below the timer's 1000 ms and trips the >= 1000 - TIMEOUT_MARGIN_MS assertion. The failing log shows exactly that: 994 ms against a 995 ms floor.

Reproduced deterministically by inserting a 10 ms spin between the two calls (993 ms), and verified the reordering keeps the duration >= 1000 with the same spin in place.

The pthread variants (test_poll_blocking.c, test_select_blocking.c, test_pselect_blocking.c) already take begin before starting the delayed writer; this brings the asyncify variant in line.

Made with AI assistance under my review

@sbc100

sbc100 commented Sep 17, 2026

Copy link
Copy Markdown
Collaborator

Ha, I guess our agents raced to fix this :) #27729

@guybedford guybedford closed this Sep 17, 2026
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.

test_poll_blocking_asyncify can be flaky in CI

2 participants