Skip to content

test(daemon-ipc): 10s onset budget for the startup-lock observation waits - #1312

Closed
DeusData wants to merge 1 commit into
mainfrom
test/daemon-ipc-onset-budget
Closed

DeusData wants to merge 1 commit into
mainfrom
test/daemon-ipc-onset-budget

Conversation

@DeusData

Copy link
Copy Markdown
Owner

Release run 30322785509 failed on windows-latest x64 1/2: test_daemon_ipc.c:1075 ASSERT(startup_observed) — first occurrence in 6 runs. Attribution: the awaited state (startup thread holding cbm-startup-v2.lock while the test's reader lock blocks the rendezvous write) is stable once reached; only the onset is timing-dependent, and the 200ms poll budget missed thread-spawn + IPC preamble on a starved runner. Per the flaky-test ladder this is the legitimate budget-bump case (stable state, budget sole flake source): both sibling onset waits go 200ms → 10s, healthy runs still exit on first observation. 46/46 locally; 2× ARM64 VM verification in flight. Unblocks v0.9.1-rc.1.

…aits

Both Windows rendezvous tests poll for the startup thread to be observed
holding cbm-startup-v2.lock. That state is stable once reached — the test's
own reader lock blocks the rendezvous write, so the startup lock stays held
— only the onset (thread spawn + IPC preamble) is timing-dependent, and the
200ms budget missed it on a starved x64 runner (release run 30322785509,
test_daemon_ipc.c:1075 ASSERT(startup_observed), first occurrence in 6
runs). Raise both onset budgets to 10s; a healthy run still exits on first
observation. Per the flaky-test ladder this is the legitimate budget case:
stable awaited state, budget as the sole flake source.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
@DeusData

Copy link
Copy Markdown
Owner Author

Closing unmerged: falsified by local verification before merge. With the 10s budget in place, 2× ARM64 VM runs still failed the sibling test (daemon_ipc_windows_rendezvous_bridges_concurrent_lifetime_owner, ASSERT(startup_observed)) on an idle 18-core machine — so the observed state is not stable-after-onset and no onset budget fixes it. The startup path (acquire → prepare_handoff → release) can collapse the busy window to microseconds when the rendezvous-write retry resolves fast, making the lock-busy probe another transient-window sample. Correct fix needs the deterministic route (production seam à la the application_job_thread held-gate, or observing a persistent side-effect instead of live lock state) — tracked for the follow-up, branch kept.

@DeusData DeusData closed this Jul 28, 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.

1 participant