Repository navigation
Conversation
MarcZX10
left a comment
There was a problem hiding this comment.
I checked the three declared predecessors: #9763, #10755 and #10929 are all still open, and I could not find a public acknowledgement in their PR discussions confirming an agreed landing order. The description says this is a draft pending that agreement, so I am leaving the code review pending rather than requesting a code change or approving it. The contribution rule requires the overlapping authors to agree which PR lands first and to record the dependency.
The current build workflow has its Windows job in progress and Linux product tests skipped; the author reports the focused Windows/UCRT tests, but no POSIX runtime run. Please link the agreed order when it is settled and revisit POSIX coverage before marking this ready.
MarcZX10
left a comment
There was a problem hiding this comment.
The focused checks have useful results now: the relinker builds on Windows, but its CTest run failed 1 of 369 tests because web_release exceeded its 20-second timeout; the other 368 passed. The PR changes no web tooling, so this looks unrelated to the diff, but the failed check should be understood or rerun before treating the matrix as green. The Linux relinker, relinker ASan, Ubuntu register-context, conventions, intake, labels, and eligibility jobs passed. Windows product tests and several macOS jobs are still pending; Linux product was skipped.
One readiness item: this PR's base SHA is 5bc84038c490a0427ff272e39e2a1cdf6fdc3c0e, while current main is 801d5b9bc11049e6274daca09d70690bd5b8d0a9. CONTRIBUTING asks PR branches to stay current with main, and the body describes this tested branch as based on 5bc8403. Please update/retest against the current base before marking this draft ready. Since the PR is draft, I am leaving a comment rather than approving it.
|
Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
|
The unchanged implementation now passes the same 12 focused stream cases on Windows and Ubuntu 22.04/WSL (GCC 11.4), including the POSIX stderr-owner reopen/close-all case. Proposed integration order: land #9763, #10755 and #10929 first, then rebase this draft and rerun the combined regressions. The conflicts need semantic handling: closed-stream adoption must publish the replacement handle to aliases; descriptor cleanup must remain inside the shared native-stream gate without holding the global registry mutex; pending UTF-16 state must reset and synchronize with aliases on close/reopen. The current branch does not include those PRs, and combined behavior is not yet tested. Please confirm or revise that order before this draft becomes ready. Its dependency list records proposed predecessors, not an agreed order. No duplicate fcloseall implementation was found by the overlap check. |
MarcZX10
left a comment
There was a problem hiding this comment.
I checked the updated head 1ec2f73ee67254dac42ad634b47d347e723c6a3d; the implementation is unchanged, but the commit removes the fcloseall debt entry. The PR body still says the console signature and edge cases have not been measured. That is an unresolved gap under the repository's documentation rules, so please retain a concise debt entry limited to the unverified console signature/behavior and relevant boundary conditions; the implementation itself need not be restated as debt.
On integration order, I can assess the technical overlap, but I cannot confirm agreement on behalf of #9763, #10755, or #10929's authors. All three remain open, and #10929 currently has change requests for the ungetwc pushback ordering when a low surrogate is pending. Please keep this draft until the affected authors agree to the order and that blocking issue is resolved. I am requesting changes for the missing debt note and unresolved integration agreement, not asserting a new runtime failure in this unchanged implementation.
|
@B-Howell I am coordinating #11872 (POSIX read/receive cancellation, head bcf5df1) with this PR under CONTRIBUTING.md. Proposed order: #11872 first, then #11831. Both branches change FileStream.hpp and share #10755 as a prerequisite. With #11872 first, the later registry/native-FILE lifetime integration should preserve FILE-before-descriptor exclusion order, kernel close/forget hooks and cancellation/HostWrite guard release before callbacks. Combined fcloseall/fclose/freopen and guest_io_descriptor_stdio_* checks should cover the lock/lifetime seam. Your existing #9763/#10755/#10929 dependencies remain yours; I have not run the combined branch. Would you agree to that order and record #11872 in your Depends on line for the ordering? If your PR needs to go first, please say so; I can handle the later conflict resolution on #11872 instead. This is a proposal awaiting your confirmation, not an existing agreement. AI-assisted coordination. |
|
@Felipebmaitan Agreed: #11872 first, then #11831. I've added #11872 to Depends on. When I rebase onto it (after #9763/#10755/#10929, whose authors have not confirmed the order yet), I'll keep FILE locks taken before descriptor locks, keep the kernel close/forget hooks, and release cancellation/HostWrite guards before callbacks run. Then I'll run combined fcloseall/fclose/freopen and guest_io_descriptor_stdio_* checks. No combined build or test has been run yet, so this stays a draft. AI-assisted (Claude Code). |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@MarcZX10 About the debt entry: As you asked, 97e4999 shortens it to what is still unmeasured or differs from the console:
The implementation isn't described in the entry any more. This commit only changes docs, and the executable source is the same as at On the order of the dependencies: I haven't claimed that the authors of #9763, #10755 or #10929 agreed. The only agreed order is #11872 then #11831, with @Felipebmaitan. I also haven't rebased onto current AI-assisted (Claude Code). |
|
Manual follow-up to the skipped comparisons in the overlap report (comment6438055323, refreshed October28). Target head: I reviewed the listed shared-file patches for all 152 candidates. This includes the newly listed #12511/#12514; #12510 was refreshed to
This PR remains draft/conflicting. The known dependency discussion still applies: #9763 landed; #10755/#10929/#11872 require follow-through, and only the #11872-before-this-PR ordering has recorded author acknowledgement. I have not run a combined integration build/test or established clean pairwise merges in this audit. Source integration and current-head verification remain pending. Freshness supplement to bot comment #6438055323 (updated 2026-10-28 18:39Z), for target head The current bot table has 155 unique candidates. The earlier manual table records 152 historical candidate reviews. The exact set delta is #11737 and #11333 removed after merging at 16:59Z and 18:27Z, respectively, and #12518, #12524, #12527, #12530 and #12532 added. Keep both removed rows in the earlier table as historical audit evidence, not as current open-candidate results. The 13 retained candidates listed below have moved heads; their historical rows remain intact and are refreshed here against the current shared-file patches.
Two candidate PRs have byte-identical full patches; for ten others the hunk hashes/contexts changed but every added/deleted payload line is identical; #12420 changed payload and has a fresh assessment above. Hunk/context changes do not establish clean merges.
This addendum reviews the listed current scoped patches only. It does not claim implementation compatibility, clean pairwise merges, author agreement on integration order, or combined test results. 152 candidate heads, scoped files and manual dispositions
AI-assisted: yes (Codex). Current-target adaptation supplement (October 28)I compared the actual shared code/test patches of 17 candidates with target The main integration does not complete these combinations:
The other reviewed code changes remain distinct: #5021 changes unlocked-status name qualification; #7081 adds For #7386/#8150/#12036/#12057/#12481, retain the scanner/random/unbuffered-update/host-CRT-layout/zero-transfer changes and tests. Dispatch all lifetime child modes, including All prior author-order and prerequisite qualifications remain. In particular, the recorded #11872-before-#11831 order is unchanged; unresolved #10755/#10929 coordination and combined integration remain open. Preserve capacity-only reservation, actual ID assignment at successful publication, and snapshot rechecks after the gate in both close-all passes when composing branches. This is a scoped source review: no pairwise merge, combined build/test, new author agreement or draft-promotion claim. Existing main-only tests do not establish these combinations. |
Follow-up on the debt entry and integration orderThanks for clarifying: The PR body still says the draft is pending order agreement with #10755 and #10929, both of which remain open. I do not see a recorded agreement from those authors or a declared dependency order in the checklist yet, and the tested integrated branch still says the combined branch has not been tested. I am leaving the review pending on that coordination/integration item; no new code defect is asserted. |
Update on the #10929 prerequisiteI re-reviewed #10929 on its current head and approved it: its pending-surrogate |
|
@MarcZX10 #10929 has now merged as #10755 remains open, and its order agreement plus the current-main/combined integration checks remain outstanding. This draft is not ready yet; no new build or test result is claimed here. The debt-documentation finding remains resolved as you recorded. AI-assisted: yes (Codex). |
|
@MarcZX10 Updated the existing draft to Windows 11 / WinLibs GCC 15.2.0 r7 / Release: four focused targets build, and nine selected stream/header cases each pass three repetitions after exact restoration (64.25 seconds). A rebuilt-library control removing only pending-state alias synchronization fails the new guest #10755 remains open and absent from this integration. I requested @Ragbie's order confirmation in #10755 (comment); the checklist explicitly labels it a proposed predecessor pending agreement. #10929 has landed and #11872 is closed. Combined #10755 tests, author agreement and subsequent reviewer acceptance remain open, so this stays draft. Historical overlap reports retain their exact pins; the new/changed scope in the current 170-candidate bot table still requires review. No Linux, full-suite, console or combined-open-prerequisite result is claimed. AI-assisted: yes (Codex). |
Bounded October 29 overlap-source supplementThis supplements the historical manual table for target I read the complete current shared-file patches for the34 added IDs below. Each patch was checked against GitHub file addition/deletion counts; heads are pinned here. This establishes scoped source findings only, without pairwise merge or combined build/test qualification.
Integration actions from these patches:
I also refreshed the expanded retained scopes #7648 ( Still pending: retained candidate heads have moved from their explicit old pins. Except the three retained rows just named, those current patches are not represented as re-reviewed. Historical comparisons stay pinned; removed rows are retained as audit history, without inferred landing semantics. The #10755 author-order/combined-validation gate remains open and this PR remains draft. No author consent, whole-PR compatibility, new combined execution, or readiness verdict follows. AI-assisted: yes (Codex). Three retained-head scope checks — October 29For #11831 at published
The attempted lifecycle-code filter yielded zero new lifecycle obligations in this bounded retained-scope selection: the historical moved list's FileAndHeap rows are the independent #9688 sort change and #10620 random reopen, already refreshed above. These three related rows were checked instead; no three lifecycle clearances are being asserted. All three still say Depends on:none, with no #11831 author-order agreement identified in their discussions. Their scoped source patches establish no new implementation dependency or need for another author ping. No merge, build/test, source/cache/branch change or runtime promise was added by this review. Keep the original170-row and retained-head freshness obligations scoped: other retained rows and current cancellation/reopen combinations are not refreshed or cleared here. The private #10755 comparison remains separate evidence. AI-assisted: yes (Codex). Frozen retained shared-scope batch — October 29I audited the 54-row intersection of the original 57 moved-head list with the saved 152-row source inventory. This is one frozen batch against main
Raw-identical rows: #10234, #10265, #11724, #11726. Same changed-line sets: #8937, #9087, #9688, #9761, #10002, #10158, #10165, #10200, #10253, #10345, #10615, #10620, #10749, #10780, #10989, #11172, #11270, #11341, #11421, #11632, #11634, #11773, #11793, #11849, #11895, #12122, #12146, #12149, #12160, #12178, #12468, #12480, #12510, #12511, #12514. These categories compare only the exact saved shared patches, not complete PR implementations or runtime behavior. Identical ordered added/deleted lines do not prove the same semantic effect on changed base/context; lifecycle integration still needs its own source/runtime review. All 68 old/current shared-file pairs have complete addition/deletion and hunk-range proofs. The 13 content changes need the following preservation when integrating the independent fcloseall debt:
Retired rows: #10927 merged as Provenance limit: eleven entries in the moved-head index used intermediate override pins different from the saved scoped-source pins. Two are the retired rows above; for #10989, #11421, #11773, #11793, #12365, #12420, #12468, #12510, #12511, this batch compares the explicitly retained older source snapshot, not the intervening pin. Their intermediate-pin-to-now equivalence remains unproved. #12518/#12524/#12532 are outside the saved 152 inventory and have no old scope in this batch; they remain separate pending rows. The historical 155/157/170 and original 57 baselines are not interchangeable. No new FileStream/FileAndHeap lifecycle content change was identified in these saved shared scopes, and the open PR file lists introduced no previously unlisted file of either name. The two retained FileAndHeap scopes (#9688 sort, #10620 random reopen) keep their existing separately qualified obligations. Old nonshared source is unavailable in these scoped snapshots, so no unchanged-General.cpp/FilePosition.cpp/JumpBuffer.cpp or whole-PR claim follows. This source-only batch adds no merge/build/test, author-order agreement, source/cache/branch change, runtime promise or readiness decision. Preserve candidate-specific debt/API changes and fcloseall independently. Other scopes, cancellation/reopen combinations and author/reviewer requirements remain separate; the private #10755 result does not clear them. AI-assisted: yes (Codex). Current warning scope and remaining integrationThe earlier October 29 warning snapshot contained 170 candidates. The frozen overlap-bot snapshot updated The historical outside-inventory IDs #12518/#12524/#12532 are absent from that captured table. Missing older scoped patches for those IDs do not create a current bot-row obligation. Their separate historical-source notes do not establish old-to-current equivalence, landing or runtime compatibility. The updated PR body distinguishes the functional #10755 cleanup prerequisite and accepted private results from pending public integration. October 30 — two additional libc debt scopesFrozen target #11831: #12605 updates eight existing signed/unsigned min/max vector-helper debt bullets to name std::invalid_argument versus the documented firmware13.00 invalid-range faults; nonempty bundled-libc/host evidence remains distinct. #12659 adds one scaled-floating NaN debt bullet retaining non-C-locale, other-SDK and console-execution unknowns. These are the notes’ recorded provenance, not new measurements from this review. The same two immutable candidate patches are reused for the two targets, with separate target-specific preservation dispositions.
These are fresh pinned debt-composition notes only. They establish no same-export, implementation/dependency, author-order, composed runtime or console-verification conclusion; the shared path alone settles none of those. No new source edit, build, test, cache/ref change or public write was performed. This does not refresh every retained row or clear the whole current table; existing readiness/integration gates and old test pins remain unchanged. AI-assisted: yes (Codex). October 30 - pinned #12659 debt follow-upAt Our target remains AI-assisted: yes (Codex). Seven libc runtime/interface source scopesPinned target remains #11831
Paths above are under AI-assisted: yes (Codex). Source-preservation follow-through for #11831 at
Owned contract retained: Require throws runtime_error, active in Release. Preserve alias pending-surrogate invalidation (old low surrogate must become Q after reopen), descriptor-invalid/EBADF after close-all, flushed/reopened payloads, repeated close-all, closed-stream reopen ABC, registry gate and old/new snapshot exclusion, and lock/race outcomes. Preserve all eight early child dispatches before argc==2 and all eight parent child-result==0 checks. Global standard-stream replacement, close-all, CRT exhaustion and watchdog termination remain isolated in subprocesses. Retain Win32 CreateProcess/30-second wait and Unix fork/exec/wait; locked-stream watchdogs/joins/unlocks and unique path cleanup must survive composition. Proof classes: 5 actual-merge-base raw reconstructions; 1 cached complete-primary patches. Existing published ABI/runtime evidence remains pinned to its original head/control/environment; no new build, test, merged composition, author ordering or whole-table approval is claimed. AI-assisted (Claude Code). Scoped libc API preservation follow-up — #11831Source-only review against owned Preserve exactly:
Apply declarations as scoped edits while preserving our own declarations; copying an older complete header could discard them. This does not establish implementation dependencies, agreed merge order, source compatibility of uninspected files, a successful merge/build, or runtime/console behavior. Other table paths and outstanding integration obligations remain separate. The three merged rows #12160/#12861/#12933 are historical scopes removed from the later 161-row bot capture; their selected declarations are checked against frozen main AI-assisted (Claude Code). Publication source freshness: #11773 and #11793 were refreshed to the saved 06:15 UTC guard pins. Both selected Api.hpp patches differ only in hunk coordinates; their complete bodies/context and ordered additions/deletions are unchanged. New raw patch and whole-file identities are recorded separately; no whole-branch, implementation or runtime equivalence is claimed. Later source-pin capture: the newer two API pins listed here come from the saved 2026-10-30T06:30:59.721645+00:00 publication guard and were matched by complete current primary file records. All selected raw patch strings are byte-identical to the preceding accepted source refresh; earlier guard times describe that earlier phase, not these later pins. This adds no whole-branch or runtime qualification. Bounded libc debt-source supplement for #11831Target source Keep the void FreeBSD-style fcloseall contract, ignored close errors, streams opened during the call left open, host-descriptor cost/throw caveat and unsupported concurrent ordinary I/O/destruction. These debt notes do not qualify native-FILE identity, aliases/UTF16, close admission or cancellation composition. The selected added/deleted debt paragraphs concern the following separate subjects; none replaces this target's own debt paragraph. During composition preserve both, and resolve overlapping foreign replacement paragraphs against the actual implementation rather than restoring stale text from hunk context.
Specific source distinctions:
The original captured debt queue also contained #12160, #12861 and #12933. The saved 05:58:44 bot refresh removes exactly those three from #11831 (164 to 161 rows; no additions or retained-row changes). Their three debt patches remain historical evidence here, not current #11831 warning rows. The frozen-main This is AI-assisted source/documentation review. Shared prose supplies no new prerequisite, author consent or runtime qualification. Existing source/interface, CI and explicit dependency obligations remain separate. Publication source freshness: eleven debt heads were refreshed from the saved 06:18 UTC guard. Their selected patches keep identical ordered added/deleted lines: ten differ only in hunk coordinates; #9087 also has inherited context updates (qsort_r, error-text/reference qualifications, bsearch_s zero stride, directory flock and _Fltrounds/logb positioning). Preserve that newer inherited context rather than restoring the old paragraphs. Raw patches and whole files are not identical; this is no whole-branch semantic or runtime equivalence claim. The same-head #12420 state changed to MERGED; its merge Later source-pin capture: the newer ten debt pins listed here come from the saved 2026-10-30T06:30:59.721645+00:00 publication guard and were matched by complete current primary file records. All selected raw patch strings are byte-identical to the preceding accepted source refresh; earlier guard times describe that earlier phase, not these later pins. This adds no whole-branch or runtime qualification. Additional #9087 source refresh at the saved 2026-10-30T06:38:18.321759+00:00 guard: the listed New captured #13186 debt intersection, source onlyAgainst owned Keep fcloseall's separate void ABI, unmeasured console signature/edge cases, ignored close errors, host-descriptor caveat and unsupported concurrent ordinary I/O/destruction. This prose does not qualify native FILE lifetime, aliases/UTF16, cancellation or the #10755 integration gate. No implementation/export, combined runtime, order or whole-table approval follows. Historical test pins remain unchanged. AI-assisted (Codex). |
|
Private combined validation now covers published #11831 The composition places descriptor cleanup inside CloseNativeUnderGate, retains FILE-before-positioned-lock scope across native close, and releases the ordinary reopen guard before allocating its replacement while retaining #11831's native FILE identity, registry/alias lifetimes, wide-state resets and host-output behavior. The original #10755 race/archive fixtures remain intact. An added actual fcloseall/alias case checks append/CLOEXEC, random and directory descriptor reuse. With identical fixtures, the #11831-alone arm passes ten selected cases and fails the three expected cleanup cases on both Windows and Linux; the new close-all control exits 204 at stale status flags. The combined arm builds and passes all 13 selected cases three times on each platform (39 passes/no skips): Windows 11/WinLibs GCC 15.2.0 r7 Release and Ubuntu 22.04.1/GCC 11.4 Release. Public-header audits and frozen-main conventions also pass. This is focused private combination evidence, with no full-suite or console claim. The source adaptation and fixtures are not included in the public #11831 branch yet. Author-order agreement, other overlap/composition obligations and subsequent public-head review remain separate; this result is not consent or readiness. The existing order proposal remains unchanged, and #11831 stays draft. AI-assisted: yes (Codex). |
|
The macOS x86_64 relinker job failed on published The job checked out main An earlier #9162 report records the same hosted diagnostic; I verified its reported head has byte-identical MULX emitter and test sources. Its follow-up also leaves the cause unresolved and records an existing diagnostic-only change. Those local passes are not proof of a hosted flake or a main runtime pass. This log lacks the failing operand case and expected/actual flag values; no causal fix is established. No assertions/source were changed, and no local rerun or CI retry was performed. AI-assisted: yes (Codex). |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Focused qualification of Windows 11 / WinLibs GCC 15.2.0 r7 and Ubuntu 22.04 WSL2 / GCC 11.4, Release, separate new caches, at most two build jobs, platforms serial: 36 passes per OS, 72 total; zero failures/skips. Eleven registered cases each ran three times (33), followed by three separate existing Built actual production libc and fixtures; same-build PE/ELF binding and native/runtime artifacts are retained. Release failure checks remain active. All six alternate log files were observed. Linux's native These results stay pinned to 4a/fd41; the earlier 136c 42-pass results and all historical controls retain their original pins. This is not targeted correctness approval of the separate GLIBC scanner, AI-assisted: yes (Codex). CI configuration prerequisite — 2026-10-30CI-only integration Configuration-only comparison used the exact exported four-file graphs: the old graphs match across #11831/#12271, the fixed graphs match across both integrations, and all three companion C++ files are unchanged. Two shared arms per OS were configured serially: Windows CMake 4.4.4 / WinLibs GCC 15.2.0 r7 / Ninja 1.13.2 and WSL CMake 3.22.1 / GCC 11.4 / Ninja 1.10.1. Both old arms failed on both duplicate names after genuine native compiler/Threads probes; both fixed arms configured/generated successfully. Each fixed generated inventory contains exactly 18 unique name/executable/mode mappings with 30-second timeouts. These are four configure checks (two expected RED, two GREEN), not 18 runtime passes. No fixture build or CTest execution occurred. The 72 native passes remain pinned to New-head hosted CI qualification remains pending after publication. No macOS tests were run locally; the earlier hosted failure and all historical results retain their original heads. This configuration result does not establish platform/runtime, whole-product or dependency-order clearance. Host-stream integration and focused follow-up — 2026-10-30Candidate Focused Release evidence on the same machine (Windows 11 / WinLibs GCC 15.2.0 r7; Ubuntu 22.04 WSL2 / GCC 11.4, glibc 2.35):
The later source amendments affect only Linux fixture/dispatch and Linux CMake registration; production and Windows test branches remain unchanged. The selected cases cover host-log isolation, both platform-specific keep-failure paths, all five guest-standard-stream modes, This integrates frozen main #10755 remains a functional public-branch integration/final-head qualification prerequisite, with author-order agreement and reviewer acceptance still outstanding. #13220 and #13390 remain open dependencies; preserving their source ancestry is not proof of main landing or author-order agreement. This PR stays draft. New-head hosted CI, current overlap/lifecycle/cancellation obligations, macOS/WebAssembly, full-suite, install/export, console/title/GPU and verified main landing are not cleared by these focused results. |
What
Implement the named fcloseall export using FreeBSD 11.4's void __fcloseall/_fwalk(fclose) behavior: visit streams present at entry and ignore individual close errors. The public PS5 3.20 libSceLibcInternal inventory establishes the export name; its console signature and edge cases have not been measured.
Tracked registrations, pinned wrapper lifetimes and shared per-native-stream gates let close-all coordinate with fclose, freopen and explicit stream locks without holding the registry mutex across blocking native operations. Windows reopen retains native FILE identity; aliases follow successful and failed reopen. Host output preservation completes before destructive closure. Known limitations are recorded in libc debt.
Draft: #10755 kernel descriptor-state cleanup is an implementation prerequisite for correct guest-descriptor reuse after fcloseall, not merely a proposed landing order. In the accepted same-main private comparison, the Windows #11831-alone close-all control
4e714d379658486989f0587195a321b7b116f76fexits 204 at stale status flags after descriptor reuse; compositionebd07d1d6b48e08fd32a60bd561239eede4816aewith exact #1075592f4276f28e9643fe7e336e1cc40ee02f30277dapasses 13 focused cases three times each (39 passes) on each of Windows and Linux (results). The combined close-all adaptation is not in public #11831, and neither public branch was changed by the comparison. The proposed #10755-before-#11831 landing order still lacks author agreement: #10755 (comment). #9763 and #10929 have landed and their closed-stream/pending-UTF16 behavior is retained in the current-main integration below. #11872 is closed, so it is no longer listed as an open dependency. The former #11872-before-#11831 agreement is historical, not proof that its cancellation implementation landed. Public-branch #10755 integration, qualification of that integrated head, author coordination and reviewer acceptance remain outstanding. Existing overlap reports remain pinned to their declared heads; this main integration does not refresh every historical comparison. The earlier October 29 warning snapshot contained 170 candidates. The frozen overlap-bot snapshot updated2026-10-30T00:18:59Zcontains 45 rows: 10 compared conflicts and 35 skipped comparisons. The mapped source evidence covers all 45 pinned candidate heads and shared paths (79 complete shared-file patches), with no missing head or path in that snapshot. This is source coverage only: historical reviews retain their original target pins, and it does not establish the same semantic effect on changed context, clean pairwise integration, runtime compatibility or author agreement. Existing lifecycle/cancellation composition obligations, including #12682/#12688/#12700/#12965, remain separate and are not cleared by the private #10755 result.Reference: https://github.com/freebsd/freebsd-src/blob/releng/11.4/lib/libc/stdio/fcloseall.c and https://github.com/freebsd/freebsd-src/blob/releng/11.4/lib/libc/stdio/fwalk.c.
Tested
Main-refresh candidate
4a435cca770907c13c2445505b3f7ef8fc7881cc, tree77eb45c4ad8ce58f4ed6a66852242ed71436b069, ordinary parents136c01112bef728d3b2937634665575f3430cc7cand frozen tested mainfd41cca5d9133081edc27e21f87f53d73b6aa53b:file_streamsinvocations using unique child-onlyANYPS5_LOG_FILEpaths (3 passes). All fiveguest_standard_streamscases are included: default, closed stdout, exclusive stdout, reopen closed stdout, update stdout. Other cases:public_headersaudit,guest_stream_purge,file_stream_status,file_streams,guest_freopen_host_standard, and Windowsguest_stream_buffer_host_writeor Linuxlog_file. Internal FileStreams child modes are not additional registered cases. Explicit 10/20/90-second timeouts remain; other selected cases use a 30-second runner limit./tmpscratch has bounded before/after observations only; transient actual paths and cleanup success are unknown. No install/export, full-suite, separate scanner/strerror_s/UDP correctness, console/title/GPU, cancellation-family or fix(libc): drop the kernel state of a descriptor that fclose or freopen closes #10755 descriptor-reuse qualification. Open fix(libc): drop the kernel state of a descriptor that fclose or freopen closes #10755 public integration/final-head, human/CI and coordination gates remain; draft stays draft. This does not clear every current overlap row.The previous
136c01112bef728d3b2937634665575f3430cc7c42-pass qualification remains historical. Historical verification below retains its original source pins and controls; none is retargeted to this candidate.Historical published integration commit
beba15a60f1223d6db34cc79cd282cb75a081c0d, treea7dcbf9df5df5f8f3ab6b1e95f1d0d4873addd6f, ordinary merge of main4c8cff191609bc5f28bf9ee2f93672b531285aa4into existing head3aac4f32d3fced7f0558a47541e517c2715ae246:cmake --build build --target file_streams_tests guest_freopen_host_standard_tests guest_standard_stream_tests guest_wide_stream_scan_tests --parallel 2passes.ctest --test-dir build -R '^(file_streams|guest_freopen_host_standard|guest_standard_streams.*|guest_wide_stream_scan|public_headers)$' --output-on-failure --repeat until-fail:3: 9/9 cases, each three repetitions, final restored run 64.25 seconds. Includes the lifetime child checks, closed-wrapper revival, snapshot publication and landed supplementary-wide-read/pushback regressions.getwc/freopenalias regression leaves low surrogates pending on source and alias, then reads the replacement file without stale halves. Removing only the two pending-state alias assignments and rebuilding actual libc madefile_streamsfail withReopen must discard the alias's old low surrogate(CTest 8, process 0xc0000409). Restored exact staged source, rebuilt all four targets, and obtained the final 9/9 result above.Checklist
Based on current
main; no other open PR implements the same functionsOne topic per PR; follow-ups go in a new PR
No comments in code except technical debt
Unimplemented paths throw (
NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt fileNo notes, investigation
.mdfiles or images added to the repository (attach them to this PR)New third-party code is a submodule built from source
Generic behaviour, not specific to one title
Depends on: fix(libc): keep host logging on the console when a guest reopens stdout or stderr #13390 (host-stream preservation prerequisite; original author ancestry retained), test(libc): register the macOS write watch fault tests once #13220 (shared write-watch CI configuration prerequisite), fix(libc): drop the kernel state of a descriptor that fclose or freopen closes #10755 (kernel descriptor-state cleanup required for correct fcloseall descriptor reuse; author-order agreement pending)
Fixes: none
Unblocks: none
GPUs tested: n/a
AI-assisted: yes
CI configuration prerequisite — 2026-10-30
CI-only integration
035245f793d7157dc0ea9a1219ced0bbafeca85d(tree8cabff0d10a59c419afec7badfb05f57e54acbaa) retains original #13220 commite9f09f54fabb6408d3e2711b8df10c10112ab00eas its second merge parent, after4a435cca770907c13c2445505b3f7ef8fc7881cc. Whole-tree and source-pin verification confirms onlycore/libs/tests/write_watch/CMakeLists.txtchanges: five lines deleting the repeated execute-fault/read-fault registration. No libc implementation or fixture source changes.Configuration-only comparison used the exact exported four-file graphs: the old graphs match across #11831/#12271, the fixed graphs match across both integrations, and all three companion C++ files are unchanged. Two shared arms per OS were configured serially: Windows CMake 4.4.4 / WinLibs GCC 15.2.0 r7 / Ninja 1.13.2 and WSL CMake 3.22.1 / GCC 11.4 / Ninja 1.10.1. Both old arms failed on both duplicate names after genuine native compiler/Threads probes; both fixed arms configured/generated successfully. Each fixed generated inventory contains exactly 18 unique name/executable/mode mappings with 30-second timeouts. These are four configure checks (two expected RED, two GREEN), not 18 runtime passes. No fixture build or CTest execution occurred.
The 72 native passes remain pinned to
4a435cca770907c13c2445505b3f7ef8fc7881cc/ frozenfd41cca5d9133081edc27e21f87f53d73b6aa53b; they were not rerun or retargeted to this integration. The functional #10755 public integration/final-head gate, author coordination, human/bot review and verified main landing remain open; this PR stays draft.New-head hosted CI qualification remains pending after publication. No macOS tests were run locally; the earlier hosted failure and all historical results retain their original heads. This configuration result does not establish platform/runtime, whole-product or dependency-order clearance.
Host-stream integration and focused follow-up — 2026-10-30
Candidate
0db63ae0011f859a41c04f6d277835f39e1c9938retains public035245f793d7157dc0ea9a1219ced0bbafeca85d, the ordinary main merge anchored to deliberately frozenbadd7cd5b8d3f06118d7aced81e8875cc71da407, original #13220e9f09f54fabb6408d3e2711b8df10c10112ab00e, and both original #13390 author commits through its exact head4cf81e1d1d4aebae35b813dd8dc89a118d72beba. This preserves upstream authorship and the existing stream-lifetime/alias logic. It adds #13390's host-output preservation and fixed Windows standard-FILE identity, then restores entry errno when a real keep helper returns a negative result and continues the guest reopen, matching its best-effort failure policy.Focused Release evidence on the same machine (Windows 11 / WinLibs GCC 15.2.0 r7; Ubuntu 22.04 WSL2 / GCC 11.4, glibc 2.35):
a3cb2a218b8754e930e2df68abab7fb581ca5deafails both real stdout/stderr keep-return cases specifically because errno leaks into the native-open callback. Candidateb49bb5c9ba74ab6d9d8df6674e10d3f270ff9041passes ten native cases and one audit-only header check. These runtime pins are retained; Windows was not rerun on the later Linux-only fixture amendments.00b952303c9ab2cf320e74c63dbefec795be3f5cpasses three native cases. Candidate0db63ae0011f859a41c04f6d277835f39e1c9938passes eleven native cases and one audit-only header check, with zero failures/skips. Each arm includes a direct nativefreopensetup in a fresh process and a real-helper/lease/gate/Reopen consumer in another, requiring identical return/errno for the same closed-stdout state and pathname. This is host-outcome coverage, not a Linux RED discriminator or a hardcoded ENOENT requirement.The later source amendments affect only Linux fixture/dispatch and Linux CMake registration; production and Windows test branches remain unchanged. The selected cases cover host-log isolation, both platform-specific keep-failure paths, all five guest-standard-stream modes,
file_streamsandguest_freopen_host_standard. Real production/fixture builds, Release checks, same-arm PE/CTest PATH or ELF/ldd bindings and artifacts were retained; no live CPU PID/module or patched-NID tracing is claimed. Both borrowed workspaces and their prior protected artifacts were restored, and all owned processes ended.This integrates frozen main
badd7cd, not every later main revision. A bounded source check at observed mainf1e340be4a6e67440f1d2b2574ede902140cbed4found the coupled stream implementation/helpers and libc CMake unchanged; two related fixtures switched temporary-file allocation to the shared helper (Linux still usesstd::tmpfile, Windows uses its temp-directory path). That later main context was not integrated or runtime-qualified here. All older qualifications above remain at their stated pins.#10755 remains a functional public-branch integration/final-head qualification prerequisite, with author-order agreement and reviewer acceptance still outstanding. #13220 and #13390 remain open dependencies; preserving their source ancestry is not proof of main landing or author-order agreement. This PR stays draft. New-head hosted CI, current overlap/lifecycle/cancellation obligations, macOS/WebAssembly, full-suite, install/export, console/title/GPU and verified main landing are not cleared by these focused results.