You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Soak journal leak gate fails while listing macOS descriptors #307
Run the complete soak driver tests on macOS without weakening the journal descriptor leak check.
Evidence
On clean commit bf0bf7e4dddeae24f4e72530fc5eb546693075ac, make test-conformance fails on macOS 27.0.1 with Go 1.25.1:
TestRunRejectsInvalidInvocationWithoutOpeningJournal
soak_test.go:275: list open descriptors: lstat /dev/fd/3: bad file descriptor
conformance/soak/soak_test.go:298-305 uses os.ReadDir("/dev/fd") to count names.
The counter does not require entry metadata. conformance/soak/runner.go:95-100 closes each journal writer through defer.
The test must continue to detect a missing close.
Severity: Low. This test helper blocks required macOS source validation.
No production descriptor leak is established by this failure.
Proposed fix
Open /dev/fd and keep its directory handle open during File.Readdirnames(-1).
Close the handle before the helper returns.
Fail on every open or enumeration error and count every name.
Preserve the repeated leak comparison and prior-journal byte assertion.
Acceptance criteria
make test-conformance-invariants passes on clean committed source on the Mac and desktop 10.0.0.86.
Both full structured gates execute nonzero tests with zero failures and zero skips.
A clean isolated mutant that omits journal writer cleanup fails the retained descriptor comparison.
Independent review accepts the complete correction and confirms that no assertion or platform requirement was weakened.
The wider make test-conformance gate passes on the integrated candidate.
Release relationship
This defect blocks local validation for v0.4.0 and RC.2 preparation in #303.
The failed local log remains at .ignore/release-rc2/dispatch/source-quality-preflight.log.
No CI, publication, or issue closure follows from the proposed correction.
The descriptor counter keeps its directory open during Readdirnames(-1).
It reports open, enumeration, and cleanup errors.
It counts all names without filtering.
The journal assertions and eight repetitions remain unchanged.
The implementation also includes cfbcd3b840cfad7552715444680cd114b4023068.
Validation
make ci-source-quality passed on clean d205f479e1afeaa3adc759b0f830fcd98c8ccd9c on the Mac and desktop 10.0.0.86.
Both complete runs include make test-conformance and make test-conformance-invariants.
Both soak suites passed all 73 tests with zero failures and skipped tests.
The original clean invariant gates also passed on cfbcd3b840cfad7552715444680cd114b4023068 on both hosts.
make test-conformance-invariants rejected clean mutant fc44db8a0cf54143c9559e300288fb3d16340c98, derived from d205f479e1afeaa3adc759b0f830fcd98c8ccd9c.
That mutant removes only the production journal cleanup. The unchanged comparison observed 14 descriptors and expected 7.
Independent review accepted the complete source correction and its cleanup error check.
The separate simplification review found no justified deletion or abstraction.
The original macOS failure remains in source-quality-preflight.log.
The original mutant result remains in soak-descriptor-mutant.log.
The final mutant result remains in soak-descriptor-mutant-d205f479.log.
The desktop source-quality attempt with missing release tags remains in desktop-ci-source-quality-f40e7999.log.
Fetching the published tags corrected that prerequisite failure.
All logs remain under the owned .ignore/release-rc2/dispatch/ directory.
These results close this descriptor defect only.
The complete release and minimum-platform gates remain pending.
The rollback removed the reviewed descriptor-counter correction from current dev.
Fresh complete source quality on clean 669829b failed in TestRunRejectsInvalidInvocationWithoutOpeningJournal.
The helper reported lstat /dev/fd/3: bad file descriptor at conformance/soak/soak_test.go:275.
The current helper again uses os.ReadDir at line 300.
The active repair restores the previously reviewed Readdirnames implementation and checked directory close from cfbcd3b8 and d205f479.
It preserves the prior-journal byte assertion, eight repetitions, complete name count, and descriptor equality requirement.
The failed full run remains retained as source-quality-attempt3.log in the closeout records.
Fresh focused gates, the complete source-quality gate, and the required independent review remain pending.
This issue is reopened because its accepted correction is absent, not because the prior passing evidence changed.
Fixed in 57ee8a2b36f8025d5e9a48cf22dfd5028fbb4c0e through PR #336.
Change
The restored descriptor counter keeps its directory open during Readdirnames enumeration.
It checks open, enumeration, and close errors.
It counts every name without filtering.
The prior-journal byte comparison, eight repetitions, and descriptor equality assertion remain unchanged.
Validation
All normal results below ran on clean 812330ce71e2c7ab99c086a5b58ea0126400c321.
make test-conformance-invariants passed on the Mac and desktop 10.0.0.86.
Each complete structured gate passed 215 named tests, with zero failures or skips.
Each soak package passed all 73 tests.
Complete make test-conformance passed on both hosts.
Complete make ci-source-quality passed on both hosts.
Its Mac results contain 2,699 named Go passes, 269 RN tests, and 748 Kotlin tests, with zero failures or skips.
Clean isolated mutant 539dd74e44a316454c52e811dff5cc5041219efd removes only production journal cleanup.
The unchanged complete invariant gate failed only TestRunRejectsInvalidInvocationWithoutOpeningJournal on that mutant, with zero skips.
Its retained descriptor comparison observed 15 descriptors and required 7.
Independent review accepted the complete helper correction and all retained assertions.
Its separate simplification pass found no justified deletion or abstraction.
CI run 38172057464 passed all required pull-request checks.
CI checked e572ca6163be9a6b17a412f2cc0260b86a5f5f5a.
Its source tree equals local validation source 812330ce and merged dev 57ee8a2b.
Both source comparisons returned zero.
The restored FIFO cancellation control also passed in complete conformance validation on both hosts.
Clean parent-only cancellation mutant 36e8eae1108fdc1d9ef4670f52551b5809389910 failed its unchanged descendant assertion.
The test reported that the descendant survived cancellation, with zero skips.
The deliberate mutants remain outside the integration branch.
The fresh macOS failure remains retained as source-quality-attempt3.log.
The SDK, desktop Node, Cargo PATH, and missing-tag prerequisite failures remain retained with their original results.
Mac validation selects its installed SDK through SDKROOT, BINDGEN_EXTRA_CLANG_ARGS, and CFLAGS.
Desktop validation selects its installed toolchains and the published release tags.
Later passing runs do not replace those records.
The complete logs, source identities, mutation results, and independent review remain in the closeout records.
This closes the restored descriptor-counter defect. It grants no release or dependency exception.
Activity
mdspinali commentedon Oct 4, 2026
Fixed in
d205f479e1afeaa3adc759b0f830fcd98c8ccd9cChange
The descriptor counter keeps its directory open during
Readdirnames(-1).It reports open, enumeration, and cleanup errors.
It counts all names without filtering.
The journal assertions and eight repetitions remain unchanged.
The implementation also includes
cfbcd3b840cfad7552715444680cd114b4023068.Validation
make ci-source-qualitypassed on cleand205f479e1afeaa3adc759b0f830fcd98c8ccd9con the Mac and desktop10.0.0.86.make test-conformanceandmake test-conformance-invariants.cfbcd3b840cfad7552715444680cd114b4023068on both hosts.make test-conformance-invariantsrejected clean mutantfc44db8a0cf54143c9559e300288fb3d16340c98, derived fromd205f479e1afeaa3adc759b0f830fcd98c8ccd9c.The original macOS failure remains in
source-quality-preflight.log.The original mutant result remains in
soak-descriptor-mutant.log.The final mutant result remains in
soak-descriptor-mutant-d205f479.log.The desktop source-quality attempt with missing release tags remains in
desktop-ci-source-quality-f40e7999.log.Fetching the published tags corrected that prerequisite failure.
All logs remain under the owned
.ignore/release-rc2/dispatch/directory.These results close this descriptor defect only.
The complete release and minimum-platform gates remain pending.
mdspinali commentedon Oct 11, 2026
The rollback removed the reviewed descriptor-counter correction from current dev.
Fresh complete source quality on clean 669829b failed in TestRunRejectsInvalidInvocationWithoutOpeningJournal.
The helper reported lstat /dev/fd/3: bad file descriptor at conformance/soak/soak_test.go:275.
The current helper again uses os.ReadDir at line 300.
The active repair restores the previously reviewed Readdirnames implementation and checked directory close from cfbcd3b8 and d205f479.
It preserves the prior-journal byte assertion, eight repetitions, complete name count, and descriptor equality requirement.
The failed full run remains retained as source-quality-attempt3.log in the closeout records.
Fresh focused gates, the complete source-quality gate, and the required independent review remain pending.
This issue is reopened because its accepted correction is absent, not because the prior passing evidence changed.
mdspinali commentedon Oct 11, 2026
Fixed in
57ee8a2b36f8025d5e9a48cf22dfd5028fbb4c0ethrough PR #336.Change
The restored descriptor counter keeps its directory open during Readdirnames enumeration.
It checks open, enumeration, and close errors.
It counts every name without filtering.
The prior-journal byte comparison, eight repetitions, and descriptor equality assertion remain unchanged.
Validation
All normal results below ran on clean
812330ce71e2c7ab99c086a5b58ea0126400c321.make test-conformance-invariantspassed on the Mac and desktop 10.0.0.86.make test-conformancepassed on both hosts.make ci-source-qualitypassed on both hosts.539dd74e44a316454c52e811dff5cc5041219efdremoves only production journal cleanup.CI run 38172057464 passed all required pull-request checks.
CI checked
e572ca6163be9a6b17a412f2cc0260b86a5f5f5a.Its source tree equals local validation source
812330ceand merged dev57ee8a2b.Both source comparisons returned zero.
The restored FIFO cancellation control also passed in complete conformance validation on both hosts.
Clean parent-only cancellation mutant
36e8eae1108fdc1d9ef4670f52551b5809389910failed its unchanged descendant assertion.The test reported that the descendant survived cancellation, with zero skips.
The deliberate mutants remain outside the integration branch.
The fresh macOS failure remains retained as source-quality-attempt3.log.
The SDK, desktop Node, Cargo PATH, and missing-tag prerequisite failures remain retained with their original results.
Mac validation selects its installed SDK through SDKROOT, BINDGEN_EXTRA_CLANG_ARGS, and CFLAGS.
Desktop validation selects its installed toolchains and the published release tags.
Later passing runs do not replace those records.
The complete logs, source identities, mutation results, and independent review remain in the closeout records.
This closes the restored descriptor-counter defect. It grants no release or dependency exception.