async_lane: fix LaneTaskTest re-park race flake; neutral scope names in examples + test - #542
Merged
Merged
Conversation
…from libcvc core Two things, both in the async_lane layer: 1. Flake fix — LaneTaskTest.ProcessChrootedTo*ReceivesCrossThreadHashPosts asserted status(pid) == waiting immediately after pump_until(got.size()==50). But got is appended INSIDE apply-built (the msg-recv body); the moment the 50th value lands, the resident process has not yet re-entered (msg-recv …) and is momentarily `ready`, not `waiting`. The assert intermittently read `ready` (status 0 vs the expected waiting 3) and flaked under --gtest_shuffle in CI (recipe lane). Fixed by pumping until both processes have settled back to waiting instead of asserting it on the same tick the last value arrived. Verified 500x on the specific test and 20x shuffled full suite, 0 failures. 2. Layering — "demo3" is a cvc::dbg DEMO; it should not be named in libcvc core. Renamed the scope/channel/test-name uses to the neutral "app" in async_lane.h's doc-comment examples and in async_lane_test.cpp. No behavior change (the scope string is arbitrary). (Remaining demo3 mentions in nav comments are cleaned up separately.)
transfix
enabled auto-merge
October 2, 2026 17:02
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the flaky
LaneTaskTest.ProcessChrootedToApp…ReceivesCrossThreadHashPosts(renamed from a downstream-app-specific name) that failed in the recipe lane under--gtest_shuffle, and removes a downstream application's name from libcvc core.1. Re-park race. The test asserted
status(pid) == waitingimmediately afterpump_until(got.size()==50). Butgotis appended insideapply-built(themsg-recvbody); the instant the 50th value lands, the resident process hasn't re-entered(msg-recv …)yet and is momentarilyready, notwaiting. The assert intermittently readready(enum 0) vs expectedwaiting(3) → flake. Fixed by pumping until both processes settle back towaitinginstead of asserting it on the same tick the last value arrived. Verified: 500× the specific test + 20× shuffled full suite, 0 failures.2. Layering. The doc-comment examples and the test used a downstream application's name as the scope — libcvc core shouldn't name its consumers. Renamed the scope/channel/test-name uses to the neutral
appinasync_lane.h's doc-comment examples andasync_lane_test.cpp(the scope string is arbitrary; no behavior change). The remaining mentions of that application in nav comments (material.h,nav_material_deploy_test.cpp) are cleaned up in a separate PR.Test-only + doc-comment change; no production logic touched.