Run CRC bins in process without a fork (InProcessBin) #1421
Labels
No labels
P0
P1
P2
P3
bug
category/code-change
category/cross-repo
category/eval-run
category/investigation
category/no-test-target
category/owner-ruling
category/prose-artifact
category/recurring-chore
category/structure
category/umbrella
crc-refactor
create
delete
enhancement
filed-by/agent
filed-by/user
frozen
lint-rule
needs-info
needs-triage
next
plugin/cc-architect
plugin/os
plugin/os-adr
plugin/os-aidd-lint
plugin/os-backlog
plugin/os-context
plugin/os-doc-hygiene
plugin/os-sdlc
plugin/os-vault
project/cc-os
ready-for-agent
ready-for-human
recurring
review
rule-proposal
update
waiting
wayfinder:grilling
wayfinder:map
wayfinder:map
wayfinder:research
wayfinder:task
wayfinder:task
wontfix
worklist/deviations
worklist/lint-rule
worklist/new-implement-build
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jared/cc-os#1421
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
InProcessBin#forkedatplugins/os-sdlc/tests/support/in_process_bin.rb:58forks a process to run CRC bins.The fork exists because
ExpectedConstantsleaves loaders behind in the parent process.Blocked by the
ExpectedConstantsloader-leak ticket A (see comment).Removing the fork also lets the #1327 journey tracer see os-sdlc bin calls.
Reproduce
n/a: refactor of test support; the existing tests are the proof.
Approach
Run the CRC bins in process, and delete
InProcessBin#forked.Required work:
def forkedinplugins/os-sdlc/tests/support/in_process_bin.rbAcceptance criteria
plugins/os-sdlc/tests/support/in_process_bin.rbis read, thenInProcessBin#forkedis gone.tests/crc/*_bin_test.rbrun, then they pass.Owner sketch
Origin
References #1390.
VERDICT: CREATE
Blocked by #1420 (ExpectedConstants leaves loaders registered). Remove the fork only after #1420 lands.
Resolution
Done: InProcessBin#forked and its marshal helpers removed; CRC bins run in process. boot restores $stdout/$stderr in ensure and uses block Dir.chdir. tests/in_process_bin_test.rb deleted (covered only fork marshal/child-exit paths). Hand-finished outside the pipeline: a test-only ticket fails at guard-map test-reviewer (#1416).
Evidence: main
bb9f1f88. Full os-sdlc suite 2767 runs, 0 failures; wall time 61.6s before, 46.9s after; sqlite fork warnings gone. Every tests/crc/*_bin_test.rb passes. rubocop clean on in_process_bin.rb.Follow-ups: none