fix: stabilize process streams, ARM64 LLVM ownership, and IOCP restart - #606
Merged
LunaStev merged 3 commits intoSep 12, 2026
Merged
Conversation
Fixes wavefnd#558. Snapshot changing sources before remapping standard streams, preserve closed standard slots, and clean up temporary descriptors. Add bounded native regressions for shared output, cycles, and invalid sources.
Fixes wavefnd#493. Link the Rust host and libxml2 with the static MSVC CRT required by the pinned LLVM SDK's embedded rpmalloc. The failing native artifact imports _strdup from the dynamic CRT but routes LLVMDisposeMessage to rpmalloc free. Keep normal string disposal and exercise C API message/layout ownership in native ARM64 CI.
Fixes wavefnd#531. Track associated socket ownership separately from the executor, drain operations before releasing its reference, and reclaim ports after the last managed socket closes. Exercise repeated exchange, cancellation, executor restart, and both socket-close orderings with bounded native regressions and Windows target coverage.
This was referenced Sep 12, 2026
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.
Fix child stream remapping, native ARM64 compiler allocator ownership, and Windows socket reuse across executor shutdown. Each issue has its own commit.
RUSTFLAGS, which overrides Cargo target configuration. Keep ordinary LLVM string destruction and add a native LLVM message/layout allocation-and-disposal test.The allocator diagnosis uses the existing native ARM64 diagnostic artifact. Its PDB and disassembly show
LLVMCopyStringRepOfTargetDatacalling the dynamic-CRT_strdupimport, whileLLVMDisposeMessagebranches to the executable's rpmallocfree; the recorded crash RVA0xae8a98lies in that function. The static CRT keeps these allocation helpers in the same allocator domain. This corrects the linkage rather than bypassing disposal.Validation:
cargo test --locked --workspace --all-targets --jobs 2: 195 tests passed on Linux.cargo clippy --locked --workspace --all-targets --jobs 2 -- -D warnings, Rust formatting, std policy, workflow YAML parsing, andgit diff --checkpassed.Fixes #558
Fixes #493
Fixes #531