GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||
GeezerVison is showing github.com (truncated) — Acquire m_instanceLock before calling _ValidateDistributionNameAndPathNotInUse() by OneBlue · Pull Request #41855 · microsoft/WSL Conversation
Collaborator
Summary of the Pull RequestThis change fixes a race conditions caused by PR Checklist
Detailed Description of the Pull Request / Additional commentsValidation Steps Performed
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page. All reactions
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🟢 Approval recommendedThe focused locking change correctly protects enumeration and is compatible with the recursive mutex used by existing callers. 0 open findings What changed in this PRFixes a race during distribution import by protecting distribution enumeration with the session instance lock. Changes:
🧠 Review effort: Balanced 💡 Add a
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page. All reactions
Ben Hillis (benhillis)
approved these changes
Uh oh!
There was an error while loading. Please reload this page.
Daman Mulye (damanm24)
added a commit
that referenced
this pull request
* repo: modify CODEOWNERS to change wsl-maintainers to wsl-reviewers team (#41617) Co-authored-by: Ben Hillis <[email protected]> * Localization change from build: 157736413 (#41621) Co-authored-by: WSL localization <[email protected]> * CLI: Global option scopes for nested commands (related to compose support) (#41546) * Change default relay buffer size to 64KiB (#41603) The current logic uses a fixed 4KiB buffer for stdio relay on the Windows side. And uses an initial 4KiB buffer for stdio relay on the Linux side, which grows only if the message won't fit. This can severely limit the relay performance in some situations. For example, in #41572, when redirecting stdout to a SMB share. This PR increases thedefault relay buffer size to 64KiB. Which shows significant performance improvements according to buffer size tests. * Fix redirect stdout and stderror to the same file overlapping (#41611) Currently the stdout and stderr relay tracks the output offset separately. And when redirected to the same file, the writes could overlap. This PR uses the append mode for overlap io writes instead of the separate offsets in the relay. So, the file write offset is correctly tracked by the system. * move installer log collection after repro (#41620) The installer log files were collected before the log collection starts. Which will miss the user repro. This PR moves it after the user repro. * wslc: add --digests to image list for docker parity (#41457) Co-authored-by: Copilot <[email protected]> * Localization change from build: 157843092 (#41630) Co-authored-by: WSL localization <[email protected]> * Explicitely return SOCKET from WSLCPluginAPI_ProcessGetFd() (#41626) * In mirrored mode, handle route update as add instead of replace (#41391) In mirrored mode, handle route update as add instead of replace Remove usage of route update as it can overwrite routes on other interfaces. add tests that verify host routing changes are correctly reflected in Linux --------- Co-authored-by: Catalin-Emil Fetoiu <[email protected]> * Add wslc events command (#41608) * Don't fail the UnitTests::Warnings test case if GlobalSecureAccess VPN is running (#41638) * Don't fail the UnitTests::Warnings test case if GlobalSecureAccess VPN is running * Cleanup diff * Fix test * Wait for wslservice to be started when running tests (#41639) * Wait for wslservice to be started when running tests * Fail on timeout * Improve check * Format * Create new namespaces for distro cgroups (#41512) In 2.9.8, the distro processes are separated into their own cgroups. But they remain in the same cgroup namespace. That caused compatibility issues with softwares that assume a fixed systemd cgroup layout. For example, rootless docker and nerdctl. Fixes on Moby and nertctl are being worked on. However, to avoid issues with other software, WSL's cgroup handling should also be improved. This PR creates new cgroup namespaces for the distros. So, to the non-critical distro processes, the systemd cgroup layout stays the same as before. This PR also introduces a cgroup structure change to accomplish this. The systemd init is moved from wsl-user/distro-N/systemd to wsl-user/distro-N. And the initialization of the distro-N controllers is handled by systemd instead. The processes are also moved into the non-systemd cgroup in systemdless distros. This makes sure that sub-group controllers can be enabled in the distro root. Cgroup v2 is now enforced when distro isolation is enabled. Instead of constructing an unusable cgroup v1 layout when cgroup v1 and distro isolation are both enabled. * Fix unnecessary delay in the port tracking loop (#41472) Before this change, an additional 10ms delay was added in the port tracker loop presumably to make the main loop slower than the worker loop. So, the worker result does not get super dated. This is not reliable. And the 10ms delay also slows down every consecutive bind call. This PR refactors the thread synchronization method. So, the timing between those two loops is more deterministic. And removes the performance penalty for all bind calls. * Localization change from build: 157954210 (#41643) Co-authored-by: WSL localization <[email protected]> * wslc: add --follow-link to cp (#41501) Co-authored-by: Copilot <[email protected]> * Disable unstable bind cap test and re-enable Loopback test that was incorrectly disabled- #41648 (#41648) Co-authored-by: Catalin-Emil Fetoiu <[email protected]> * Move objects shared by wslc.exe and the tests to src/windows/common (#41619) * Move objects shared by wslc.exe and the tests to src/windows/common Co-authored-by: Copilot <[email protected]> * Link yaml-cpp, advapi32 and Crypt32 into common Co-authored-by: Copilot <[email protected]> * Drop yaml-cpp, advapi32 and crypt32 from wslclib now that common provides them Co-authored-by: Copilot <[email protected]> * Move wslc code in common under common/wslc and namespace CLI types as wslc::cli Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> * Fix various protocol parsing issues (#41637) * Save state * Use proper arrays * Format * Add new tests * Cleanup tests * Cleanup diff * Format * Apply PR feedback * Apply PR feedback * Format * Apply PR feedback * Move logging call * Apply PR feedback * Apply PR feedback * Localization change from build: 157980831 (#41647) Co-authored-by: WSL localization <[email protected]> * Add WSLC network lifecycle events (#41576) * Add WSLC network lifecycle events * Localize pending network prune errors * Fix network operation wait ownership and cleanup ordering * Fix prune event correlation after timed-out * Fix network event rollback and timeout recovery * Format * Forward Docker network events directly * Restore lock_guard after removing event waits * fix test * align event stream test helpers after merge * feedback * Fix potential out of bound access when pretty-printing string field in init messages (#41664) * Localization change from build: 158197536 (#41662) Co-authored-by: WSL localization <[email protected]> * simplify event reader cleanup and remove unused include (#41667) * Fix ipv4 forwarding when both v4 and v6 ports are listening * Fix config's handling of non-ascii characters (#41657) When parsing the config file, non-ascii utf-16 values are casted into char. This will mangle non-ascii values in the config file. For example, a custom kernel path containing Chinese characters will cause WSL_E_CUSTOM_KERNEL_NOT_FOUND. This PR removes the faulty static cast and stores the config value in wstring instead of string. So non-ascii values are preserved. * Prevent potential invalid access for string array pretty print (#41673) * resolve comments (#41642) This is a follow up to PR #41512 Remove the redundant restore cgroup namespace code. Simplify the cgroup check logic by moving the retry inside the debug shell. Add a new systemd boot timeout test. * Use a static CRT in debug builds (#41684) * Fix potential test failure in BrokenDistroImport by not assuming the disk's block device in WSL (#41686) * Update releaseScripts reference from v1 to v2 (#41687) * INcrease the VM termination timeout to 30 seconds (#41688) * Impersonate the caller before making various filesystem operations (#41689) * Impersonate the caller before making various filesystem operations * Apply PR feedback * Support STDIN through SDK (#41698) * stdin flag * add winrt test, fix coroutine bug in streams * Followup to STDIN PR (#41703) * Add ability to format your branch (#41699) * Remove references to WSLC being in a preview (#41704) * Don't write to the install log file if it's a reparse point (#41705) * Use the latest ESRP signing key code (#41640) * Use the latest ESRP signing key code * Only change key code * Restore original pipeline line endings Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> * Refactor event stream cancellation waits (#41696) * Don't expect the brd module logline to stabilize the CustomDmesgOutput test case (#41714) * Use WSL icon for developer docs (#41715) * Use WSL icon for developer docs Co-authored-by: Copilot <[email protected]> Copilot-Session: ce78a21f-e946-4e9c-b2ea-934a5b0935f3 * Reuse docs logo as favicon Co-authored-by: Copilot <[email protected]> Copilot-Session: ce78a21f-e946-4e9c-b2ea-934a5b0935f3 --------- Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: ce78a21f-e946-4e9c-b2ea-934a5b0935f3 * Fix: update drvfs gid uid after default uid is set in oobe (#41521) For a newly installed distro, the drvfs are initially mount as 0:0. And is not updated after oobe sets the default uid. This could cause access issues before the distro is restarted. This PR updates the auto mounted drvfs gid uid before completing the oobe. The non-auto mounted shares are not remounted to avoid breaking user set gid uid values. * Update WSLC SDK API documentation (#41677) * Update WSLC SDK API documentation Co-authored-by: Copilot <[email protected]> * Update docs * Update docs * Quick fixes --------- Co-authored-by: Copilot <[email protected]> Co-authored-by: Craig Loewen <[email protected]> * Updated README (#41723) * Expose kernel headers and perf to distributions (#41400) * Expose kernel headers and perf to distributions Mount kernel-matched headers and perf tooling from the artifacts VHD into each distribution, expose perf through the default environment, and cover the resulting paths and replacement behavior. Co-authored-by: Copilot <[email protected]> Copilot-Session: cdebc331-ad3e-492e-9591-c25587c859c5 * Address kernel artifact review feedback Correct the documented header target and directory fallback, and log failures while removing mount path environment variables. Co-authored-by: Copilot <[email protected]> Copilot-Session: cdebc331-ad3e-492e-9591-c25587c859c5 --------- Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: cdebc331-ad3e-492e-9591-c25587c859c5 * Use iterators in FromJson to avoid copies (#41641) * Use iterators in FromJson to avoid copies * Cleanup * Fix template build * Format * Use a retry with timeout in HostPortCantBeBoundByGuest (#41728) * Run the nightly tests on ge-current (#41725) * Don't fail configuring the consommé loopback adapter when ipv6 is disabled (#41729) * Enable experimental sparse VHD creation (#41726) * Refine sparse VHD creation policy Co-authored-by: Copilot <[email protected]> * Enable experimental sparse VHD creation in WSL Co-authored-by: Copilot <[email protected]> * Make sparse VHD unsafe flag optional Co-authored-by: Copilot <[email protected]> * Keep fixed VHD creation non-sparse Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> * Update Microsoft.RemoteDesktop.Client.MSRDC.SessionHost to version 1.2.7391 (#41730) Co-authored-by: Ben Hillis <[email protected]> * Fix WSL container event timestamps (#41717) * Revert "Enable RedirectionGuard process mitigation" (#41744) * Revert "Enable RedirectionGuard process mitigation (#41542)" This reverts commit e53598d. * Add comments * Fix comment * Add --format json to wslc events (#41734) * Update the DACL to only allow access to the user when creating virtual disks (#41678) * Update the DACL to only allow access to the user when creating virtual disks * Save state * Increase test coverage * Fix test * Apply PR feedback * Apply PR feedback * Format * Apply PR suggestions * Apply PR suggestions * Clarify container image localization context (#41743) Add translator guidance distinguishing container images from pictures or photos for the affected WSLC strings. Co-authored-by: Copilot <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: 88d3d4b4-5a0e-4d97-9ed4-0fcd856e61de * Add RLCPlus-9 and RLCPlus-10 (Rocky Linux Plus, CIQ) (#41323) * Add RLCPlus-9 and RLCPlus-10 (Rocky Linux Plus, CIQ) * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <[email protected]> * Re-trigger CI: xattr check confirmed clean (no security.selinux attributes found), all four combinations remain boot-tested --------- Co-authored-by: Copilot Autofix powered by AI <[email protected]> * Fix race condition on system distro & init port access (#41762) * archlinux: Release 2026.10.01.179549 (#41755) This is an automated release [1]. [1] https://gitlab.archlinux.org/archlinux/archlinux-wsl/-/blob/main/.gitlab-ci.yml * Enable automatic vNUMA for large WSL VMs (#41741) * Enable automatic vNUMA for WSL VMs Add the HCS NUMA topology object so HCS can derive a supported virtual topology for large processor counts instead of requiring WSL to clamp the VM to 256 processors. Co-authored-by: Copilot <[email protected]> Copilot-Session: ea0c67c5-0211-479b-a7b5-59aebb19b71c * Gate automatic vNUMA on Germanium Preserve the existing single-node HCS configuration on older Windows builds where vNUMA topology creation is unsupported. Co-authored-by: Copilot <[email protected]> Copilot-Session: ea0c67c5-0211-479b-a7b5-59aebb19b71c * Remove vNUMA test coverage Co-authored-by: Copilot <[email protected]> Copilot-Session: ea0c67c5-0211-479b-a7b5-59aebb19b71c --------- Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: ea0c67c5-0211-479b-a7b5-59aebb19b71c * Exclude wslc.exe and wslcsession.exe from custom LSP providers (#41767) * Exclude wslc.exe and wslcsession.exe from custom LSP providers * Include container.exe * Localization change from build: 159271766 (#41772) Co-authored-by: WSL localization <[email protected]> * Reuse EmptyObject for HCS NUMA configuration (#41768) Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> * Implement container health notifications to wslc events (#41763) * Save state * Increase test coverage * Remove useless state * Replace TableOutput with TableData model and TableRenderer (#41700) Co-authored-by: Copilot <[email protected]> * refactor container cp task to be simpler and move logic to container service and common filesystem helpers (#41668) Co-authored-by: Copilot Autofix powered by AI <[email protected]> * Use a fallback gateway if no ipv4 gateway is available in consommé networking (#41779) * Record Docker die and stop events with parity (#41770) * Save state (#41780) * Localization change from build: 159357096 (#41786) Co-authored-by: WSL localization <[email protected]> * Update issue template for WSLC (#41778) * Update issue tempalte for WSLC * Fix description * Run the nightly tests on Windows Server 2025 (#41760) * Run the nightly tests on ge-current * Run the nightly tests on Windows Server 2025 * Skip some network tests * Update name * Fix mirrored check * Use the server field * Localization change from build: 159470205 (#41800) Co-authored-by: WSL localization <[email protected]> * Fix various issues preventing the ModernOOBE test from running multiple times on the same test_distro (#41781) * Remove unused delay-load options (#41804) Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> * Disable pushing to the store by default (#41782) * Scope down the ephemeral port range in various consommé tests (#41805) * Fix race condition in LifetimeManager (#41807) * Use DistroFileChange instead of going through wsl.localhost (#41810) * Explicitely setup impersonation when instanciating IWslSupport (#41815) * Wait for bound ports to be released by the port relay in the tests (#41817) * Support reading the wslc image build context from stdin (#41765) Co-authored-by: Copilot <[email protected]> * Update Microsoft.WSL.Kernel to 6.18.54.1 (#41822) * Add logic to reject commands with extra arguments (#41821) * Add logic to reject commands with extra arguments * Simplify tests * Improve wslc event filters (#41809) * Localization change from build: 159727887 (#41826) Co-authored-by: WSL localization <[email protected]> * Make the binfmt mount writable (#41808) * Make the binfmt mount writeable * Apply PR suggestions * Match container and network filters across event types (#41818) * Fix incorrect wsl.conf warnings being displayed when creating a new distribution (#41820) * Convert EnsureCaseSensitiveDirectoryRecursive to iterative traversal (#40347) * Convert EnsureCaseSensitiveDirectoryRecursive to iterative traversal Replace unbounded recursive depth-first traversal with an iterative approach using an explicit stack. A deeply nested directory tree could overflow the thread stack during the recursive calls. The iterative version collects directories in reverse post-order during traversal, then marks them bottom-up (children before parents), preserving the ordering invariant that EnsureCaseSensitiveDirectory relies on for its early-exit optimization. Bug: 61964147, 61974992, 61911308, 61463090 Co-authored-by: Copilot <[email protected]> * Add deep-nesting regression test for case-sensitive recursion The original recursive EnsureCaseSensitiveDirectoryRecursive could blow the Windows 1 MB thread stack at a few hundred levels of nesting because each frame carried a FILE_ID_BOTH_DIR_INFORMATION enumeration buffer. The iterative implementation in this PR moves that state to the heap, so a very deep tree must complete without crashing. The test creates a 1024-level chain via the \\\\?\\ long-path prefix (cumulative path length exceeds MAX_PATH) and then calls EnsureCaseSensitiveDirectory on the root. Cleanup goes through the same long-path prefix so remove_all can see every component. Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> * Add publishing to DCAT, nuget to the release pipeline (#41549) * Add a testpass on rs_base2 (#41832) * Run the nightly tests on rs_base2 * Update tests for os change * Update tests * Localization change from build: 159856815 (#41839) Co-authored-by: WSL localization <[email protected]> * Fix the security model link in SECURITY.md (#41835) #41605 moved the security model to doc/docs/technical-documentation/security.md; the link in SECURITY.md still pointed at doc/docs/security.md. * Fix RLCPlus distribution manifest formatting (#41841) Restore canonical JSON indentation without changing distribution data so the distribution validation workflow passes its formatting check. Co-authored-by: Copilot <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: aa251cac-d075-47a8-8757-92e013a714d8 * Update GitPython to resolve Dependabot alerts (#41840) Upgrade both Python tooling requirement pins to 3.1.62, which fixes all four advisories reported across eight Dependabot alerts. Co-authored-by: Copilot <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: aa251cac-d075-47a8-8757-92e013a714d8 * Fix CaseSensitivityDeepNesting test build failure (#41849) Co-authored-by: Copilot <[email protected]> * Reorganize test/windows into common/, wsl/, and wslc/ (#41661) * Reorganize test/windows and split WSLCTests.cpp into per-domain files Co-authored-by: Copilot <[email protected]> * Split wslc tests into per-layer directories and move common unit tests under common/unit Co-authored-by: Copilot <[email protected]> * Flatten test/windows into common/, wsl/, wslc/ and move wslc helpers to common Co-authored-by: Copilot <[email protected]> * Port master's WSLC event and network tests into the split test files Co-authored-by: Copilot <[email protected]> * Revert WSLCTests.cpp split so the change is file moves only Co-authored-by: Copilot <[email protected]> * Update test layout guidance for common/wsl/wslc split Co-authored-by: Copilot <[email protected]> * Make CaseSensitivityDeepNesting testDir static constexpr so the lambda can use it Co-authored-by: Copilot <[email protected]> * Drop static from CaseSensitivityDeepNesting testDir so it can be captured Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> * Fix e2fsck return code 1 treated as failure in resize (#41720) e2fsck -f -y returns 1 or 2 when there were errors fixed. However, the resize implementation currently only accepts 0 as a success. This PR adds 1 and 2 to the accepted return codes. * Document WSL architecture and contributor commands for Copilot (#41843) Co-authored-by: Copilot <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: 25aa9436-0656-41c8-a222-d81d6414a9e6 * Add WSLC volume events (#41831) * Fix incorrect AAAA DNS resolution for static DNS records causing resolution failure in musl (#41859) * Fix race condition causing potential use-after-free in NatNetworking (#41850) * Acquire m_instanceLock before calling _ValidateDistributionNameAndPathNotInUse() (#41855) * Acquire m_instanceLock before calling _ValidateDistributionNameAndPathNotInUse * Cleanup diff * Cleanup diff * Make the store publish stage opt-in (#41857) * Remove the gate before publishing nuget packages, and rename to avoid confusion (#41858) * Remove the gate before publishing nuget packages, and rename to avoid confusion * Complete nuget * Fail bind() requests that fail in Windows (#41856) * Don't add swiotlb=force with the hv_pci swiotlb pool (#41829) The hv_pci pool is created with force_bounce set, so virtio devices bounce through it without the global flag. swiotlb=force only made every other device, mainly hv_storvsc, bounce all its I/O through the default 64 MB pool, which runs out under load (#41828). * Fix potential crash caused by error during session initialization (#41887) * Add a /hyperv to triage hyper-v issues (#41885) * Localization change from build: 160297307 (#41890) Co-authored-by: WSL localization <[email protected]> * Increase the default commited stack size to 64KB (#41888) * Increase the default commited stack size to 64KB * Fix formatting of stack size comment in CMakeLists Co-authored-by: Copilot Autofix powered by AI <[email protected]> --------- Co-authored-by: Copilot Autofix powered by AI <[email protected]> * suppress systemctl is-system-running pulling error messages (#41881) The systemctl is-system-running polling can produce error messages like Failed to connect to bus: No such file or directory before d-bus is ready. And those error messages are duplicated into /dev/kmsg by wsl. This PR suppresses the error messages as those are not useful for the polling result. * Disable unsafe move constructors in ScopedRelay (#41897) * Wait for the drvfs initialization thread to exit before destroying WslCoreVm (#41895) * Fix potential crash by use-after-free by in the stdin relay thread (#41894) * Release resources that could call callbacks before returning from HcsVirtualMachine's constructor on failure (#41908) * Narrow volume event publish ordering comments (#41889) * Apply clang-format to merged files Co-authored-by: Copilot <[email protected]> Copilot-Session: f2cf5bc5-64ce-4bfc-a921-ae7ca379ad64 * Add wslc cp alias for wslc container cp (#41902) * Add wslc cp alias for wslc container cp Co-authored-by: Copilot <[email protected]> * Move wslc cp usage examples under generated usage line with color Co-authored-by: Copilot <[email protected]> * Use cp short description key and add cp help example tests Co-authored-by: Copilot <[email protected]> * Remove cp help examples Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> * Fix potential starvation in COMImplClass::Disconnect (#41912) * Use repository NuGet configuration for out-of-tree builds (#41916) * Fix a potential use-after-free between plugin calls and WSLCSessionManagerImpl's destruction (#41911) * Save state * Simplify reset logic * Prepare for PR * Add missing synchronization around load WinHttp proxy methods (#41909) * Add missing synchronization around load WinHttp proxy methods * Fix loading logic * Fix missing synchronization on m_httpProxyStateTracker access (#41907) * Fix missing synchronization on m_httpProxyStateTracker access * Update header * Use the instance lock instead * Format * Fix potential deadlock in between VM exit callback and session shutdown (#41910) * Fix potential deadlock in between VM exit callback and ~LxssUserSessionImpl * Cleanup diff * Fix potential use-after-free in EpollWatcher (#41896) * Match docker -v parsing: LTR spec parser, shared validation, config-v… (#41905) * Match docker -v parsing: LTR spec parser, shared validation, config-volume anonymous volumes Co-authored-by: Copilot <[email protected]> * Reject extra colons in -v mode section Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> * Mount bind volumes during cp on non-running containers (#41906) * Mount bind volumes during cp on non-running containers Co-authored-by: Copilot <[email protected]> * Mirror issue repro in bind mount cp test Co-authored-by: Copilot <[email protected]> * Throw on deleted container in archive mounts, generate test tar in container Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> * reap sub processes during shutdown to unblock systemd (#41899) After the cgroup isolation change. The process tree looks like this: ``` init (systemd) in the distro cgroup namespace init (wsl) in the root cgroup namespace login in the distro cgroup namespace ``` And the poweroff sequence is: WSL init resets the signal handlers, which sets SIGCHLD to default. WSL init calls systemctl poweroff systemd kills processes in it's cgroup namespace like the login process. And skips processes like the wsl init in the root namespace. The WSL init does not reap the killed sub process. Making it a zombie in the distro namespace. Systemd waits for the zombie processes and blocks. The timeout in init finally shutsdown with RB_POWER_OFF. This could cause the terminate to wait for the timeout and slow down the termination. This PR adds a waitpid loop that reaps any subprocesses of the WSL init during systemd poweroff. So systemd is no longer stuck by the zombie processes. And it calls BR_POWER_OFF itself to kill the WSL processes in the same PID namespace but in the root cgroup namespace. * Localization change from build: 160603855 (#41933) Co-authored-by: WSL localization <[email protected]> * Fix incorrect srwlock usage in when initializing drvfs (#41925) * Fix potential deadlock in WSL1 instance termination (#41922) * Fix potential deadlock in WSL1 instance termination * Differenciate using instance ids * Prepare for PR * Fix potential use-after-free if the WSLC VM is killed while the last session COM reference is being released (#41946) --------- Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Blue <[email protected]> Co-authored-by: WSL localization <[email protected]> Co-authored-by: David Bennett <[email protected]> Co-authored-by: Feng Wang <[email protected]> Co-authored-by: ggarzia-MSFT <[email protected]> Co-authored-by: Copilot <[email protected]> Co-authored-by: FetoiuCatalin <[email protected]> Co-authored-by: Catalin-Emil Fetoiu <[email protected]> Co-authored-by: beena352 <[email protected]> Co-authored-by: Flor Chacón <[email protected]> Co-authored-by: JohnMcPMS <[email protected]> Co-authored-by: Keith Horton <[email protected]> Co-authored-by: Craig Loewen <[email protected]> Co-authored-by: Patrick Swartz <[email protected]> Co-authored-by: Copilot Autofix powered by AI <[email protected]> Co-authored-by: Arch Linux Technical User <[email protected]> Co-authored-by: Mitchell Levy <[email protected]> Co-authored-by: Franco Ceballos Rastello <[email protected]> Co-authored-by: Oleg Tsvetkov <[email protected]> Co-authored-by: Tuna Birgün <[email protected]> Copilot-Session: ce78a21f-e946-4e9c-b2ea-934a5b0935f3 Copilot-Session: cdebc331-ad3e-492e-9591-c25587c859c5 Copilot-Session: 88d3d4b4-5a0e-4d97-9ed4-0fcd856e61de Copilot-Session: ea0c67c5-0211-479b-a7b5-59aebb19b71c Copilot-Session: aa251cac-d075-47a8-8757-92e013a714d8 Copilot-Session: 25aa9436-0656-41c8-a222-d81d6414a9e6 Copilot-Session: f2cf5bc5-64ce-4bfc-a921-ae7ca379ad64
David Bennett (dkbennett)
added a commit
that referenced
this pull request
* Fix tracked routes being collapsed by incomplete comparison (#41393) Mirrored route tracking used an incomplete comparator that considered only route class, destination address, and metric. Distinct routes with different prefix lengths or next hops could therefore be treated as equivalent and silently omitted. The fix preserves the existing route-class ordering while using the complete EndpointRoute comparison for route identity. Regression tests cover prefix length, next hop, metric, exact duplicates, and dependency ordering. * Add github issue suggestion in user visible error (#41432) This PR adds a "search or file issue on github" suggestion in all user visible errors to: Help users find solutions faster. Collect more user reported issues to help reliability improvements. This PR also updates all tests checking the error message to use a unified function for creating the expected error message. * Match Docker output for prune operations and container inspection (#41430) Cleanup various miscellaneous output divergences Co-authored-by: Copilot <[email protected]> * CLI: Mount PR followup & fix two docker parser bugs (#41436) * Invalid the TestImageRegistry cache after running prune --all (#41442) * Fix unit test build failure on arm64 (#41437) * Solve various issues found by verifier (#41445) * Save state * Save state * Save state * Cleanup diff * Add a command line option to run the tests under verifier (#41440) * Save state * Save state * Save state * Add a /verifier option to run-tests.ps1 to run the test under verifier * Localization change from build: 155859879 (#41450) Co-authored-by: WSL localization <[email protected]> * Fix various arm64 test failures (#41444) * Fix various arm64 test failures * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <[email protected]> * Fix LF * Format * Cleanup diff --------- Co-authored-by: Copilot Autofix powered by AI <[email protected]> * Fix unity build ODR collisions on duplicate file-local constants (#41446) * CLI: Align alias listing with docker, Apple and other CLIs (#41439) * Align container list format with Docker specifications (#41375) wslc: match column order, status text, and json shape for container list Co-authored-by: Copilot <[email protected]> * Localization change from build: 156161979 (#41479) Co-authored-by: WSL localization <[email protected]> * wslc: alias -f to --format on inspect commands for docker parity (#41463) Co-authored-by: Copilot <[email protected]> * CLI: Add explicit per-command argument overrides (#41478) * archlinux: Release 2026.09.01.176721 (#41493) This is an automated release [1]. [1] https://gitlab.archlinux.org/archlinux/archlinux-wsl/-/blob/main/.gitlab-ci.yml * Fix WSLC parser unit test argument overrides (#41496) Update the remaining parser test call site to use ArgumentOverrides after the Argument::Create API change. Co-authored-by: Copilot <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: eb7946ff-cc0b-4ff1-a059-571334b1c988 * Fix systemd-tmpfiles failure on systemd v261+ with systemd boot disabled (#41491) In systemd v261, the systemd's tmpfiles.d/x11.conf was changed from D! to D. systemd/systemd@5474cad. This means the systemd-tmpfiles command will try to execute it when called out of the boot sequence. In the linked issue's case, it's called by the post install script by dpkg. This will fail as the wsl override is not in place when systemd is disabled. This PR enables the wsl override file generation for all distros with wslg enabled, regardless of if the distro boots with systemd. * Fix unvalidated TerminalProfileSize during distribution import (#41495) * Fix unvalidated TerminalProfileSize when importing a distribution _ProcessImportResultMessage constructed the terminal profile string_view using the message-supplied TerminalProfileSize without validating it against the received buffer length. Use the bounds-checked two-argument span::subspan() overload (matching the existing ShortcutIconSize handling a few lines above) so an inconsistent size value throws instead of producing a string_view that runs past the end of the buffer. Co-authored-by: Copilot <[email protected]> Copilot-Session: 35281c30-3d08-4f05-8c84-2ce4711023d5 * format source --------- Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> Copilot-Session: 35281c30-3d08-4f05-8c84-2ce4711023d5 * Bump WSL DeviceHost to 1.2.62 (#41499) * Bump WSL DeviceHost to 1.2.62 Co-authored-by: damanm24 <[email protected]> * Correct WSL DeviceHost version to 1.2.62-0 Co-authored-by: damanm24 <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: damanm24 <[email protected]> * Enable unity build repo-wide via WSL_UNITY_BATCH_SIZE (#41441) Enable unity build repo-wide via WSL_UNITY_BATCH_SIZE Co-authored-by: Copilot <[email protected]> * Add wslc system info command (#41408) * updated source code paths in the wslservice tab (#41509) Co-authored-by: Tega Ajise <[email protected]> * Harden Windows macros against dangling-else ambiguity (#41513) * Harden Windows macros against dangling-else ambiguity * Harden Windows macros against dangling-else ambiguity * Fix dangling-else bugs in FAIL_FAST_IF and EMIT_USER_WARNING macros (#41504) * Fix dangling-else bugs in FAIL_FAST_IF and EMIT_USER_WARNING macros Both macros were bare if-statements without do/while(0) guards, causing the dangling else problem when used as a single statement under an if. * Fix dangling-else bugs in FAIL_FAST_IF and EMIT_USER_WARNING macros * harden EMIT_USER_WARNING macro on Windows against dangling-else * Fix dangling-else bugs in FAIL_FAST_IF and EMIT_USER_WARNING macros * Fix intermittent ImportDistroInvalidTar test failures (#41490) * Fix test to be more resilient * Make WSL1 more lenient, make WSL2 exact * Wslc events (#40971) * Revert "Mount plugin folders on behalf of the user owning the wsl session" (#41331) (#41515) Temporarily reverting the identity-based plugin folder mount change (both the WslCoreVm.cpp behavior change and the accompanying MountFolderAccess test coverage) introduced in #41331. This reverts commit 78b9cf2. Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> * Add container restart runtime support (#41454) * Fix p9 drvfs read only mount regression (#41487) #41129 introduces a regression where the ";ro" option is passed to the host for p9 shares. However, that option is not supported by the p9 server and causes the mount to fail. This PR removes the special handling of "ro" in the common parser. And use MountParseFlags to add the required virtio option. * Fix WSLC Plan9 mount and image-build failures (#41535) * Fix WSLC Plan9 mounts using a per-user server * remove debug code * wslc: add --size to inspect for docker parity (#41489) Co-authored-by: Copilot <[email protected]> * Bump actions/deploy-pages in the github-actions group (#41537) Bumps the github-actions group with 1 update: [actions/deploy-pages](https://github.com/actions/deploy-pages). Updates `actions/deploy-pages` from 5.0.0 to 5.0.1 - [Release notes](https://github.com/actions/deploy-pages/releases) - [Commits](actions/deploy-pages@cd2ce8f...368f825) --- updated-dependencies: - dependency-name: actions/deploy-pages dependency-version: 5.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add wslc container restart command (#41435) * init: fix dhcpcd option name in bridged-mode config (#41538) * init: fix dhcpcd option name in bridged-mode config dhcpcd has no option named "broadcast"; option 28 is "broadcast_address". dhcpcd 10 rejects the whole "option" line, so DNS servers, domain, search list, hostname and MTU were never requested from the DHCP server, leaving /mnt/wsl/resolv.conf without nameservers on servers that honour the PRL. * init: apply clang-format to dhcpcd config string The longer broadcast_address option name pushed the literal past the 130-column limit in .clang-format. Split it as clang-format does; the concatenated value is unchanged. * Update SLE15SP7 [QU5] (#41506) * Host plugin Plan9 shares as the session user (#41548) * Host plugin Plan9 shares as the session user Use a dedicated per-user Plan9 server for plugin folder mounts so host filesystem permissions are preserved without relying on HCS-managed share identity. Co-authored-by: Copilot <[email protected]> Copilot-Session: c20b1da0-c613-489d-92a3-9c27527c0c54 * Simplify plugin Plan9 port plumbing Use the fixed plugin port directly in mini_init and mirror the existing per-user Plan9 server lifecycle. Co-authored-by: Copilot <[email protected]> Copilot-Session: c20b1da0-c613-489d-92a3-9c27527c0c54 * Recreate stopped plugin Plan9 servers Recreate the per-user server before adding a share when its process is no longer running. Co-authored-by: Copilot <[email protected]> Copilot-Session: c20b1da0-c613-489d-92a3-9c27527c0c54 --------- Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: c20b1da0-c613-489d-92a3-9c27527c0c54 * Fix virtiofs bind mounts exposing files as root-owned (#40719) (#40733) * Fix virtiofs bind mounts exposing files as root-owned (#40719) Add the 'metadata' option to virtiofs shares created via HcsVirtualMachine::AddShare (the WSLC/Docker container path). Without this option, the virtiofs device host cannot persist per-file uid/gid in NTFS extended attributes, so all files default to uid=0/gid=0 regardless of the creating user. This matches the behavior of the regular distro mount path (WslCoreVm::AddVirtioFsShare) which receives metadata/uid/gid options from the Linux init's ConvertDrvfsMountOptionsToPlan9. Also adds a regression test (WindowsMountsVirtioFsFileOwnership) that verifies file ownership is preserved on virtiofs mounts. Fixes #40719 Co-authored-by: Copilot <[email protected]> * Address code review feedback - Add inline comment explaining why 'metadata' is required - Use unique mount point (/virtiofs-ownership-test) to avoid test interference - Use numeric UID (su '#65534') instead of username to avoid environment dependency Co-authored-by: Copilot <[email protected]> * test: use 'nobody' user instead of numeric UID in virtiofs ownership test The su command with numeric UID syntax ('#65534') requires the user to exist in /etc/passwd. Use the 'nobody' account directly since it is already available in the test VHD. Co-authored-by: Copilot <[email protected]> * fix: wrap long test command strings to satisfy clang-format 130-col limit Co-authored-by: Copilot <[email protected]> * test: unmount inline with VERIFY_SUCCEEDED to match file convention Replace the scope_exit unmount cleanup with an inline VERIFY_SUCCEEDED call at the end of the test, matching every other mount test in this file (e.g. WindowsMountsVirtioFsShareReuse). This also asserts the unmount HRESULT rather than silently swallowing it. Co-authored-by: Copilot <[email protected]> Copilot-Session: 9213b7da-c5c8-4d9c-89ab-e80048d288a2 * Fix Windows mount test API calls Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> Co-authored-by: Blue <[email protected]> Copilot-Session: 9213b7da-c5c8-4d9c-89ab-e80048d288a2 * wslc: match docker prune semantics (confirmation prompt, -f aliases --force) (#41455) Co-authored-by: Copilot <[email protected]> * wslc: add --all to image list for docker parity (#41456) Co-authored-by: Copilot <[email protected]> * wslc: add --details to container logs for docker parity (#41467) Co-authored-by: Copilot <[email protected]> Co-authored-by: JohnMcPMS <[email protected]> * Localization change from build: 157218885 (#41559) Co-authored-by: WSL localization <[email protected]> * Don't fail the installation if DeprovisionMsix() fails (#41453) * Don't fail the installation if DeprovisionMsix() fails * Apply PR feedback * Notice change from build: 157227119 (#41564) Co-authored-by: WSL notice <[email protected]> * wslc: add --size to container list for docker parity (#41477) Co-authored-by: Copilot <[email protected]> * wslc: add --all-tags to push for docker parity (#41500) Co-authored-by: Copilot <[email protected]> * Fix build issue for wslsettings, and add more logging to the pipelines (#40388) * Validate variable-length message strings (#41567) Co-authored-by: Copilot <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: 3086bdaf-bc43-4fed-88d1-3a95a21fd14e * Fix WSLC fallback gateway collision (#41547) Avoid selecting the guest IPv4 address as its synthesized default gateway when the host adapter does not expose one. Co-authored-by: Copilot <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: ce168659-cb9d-4f0e-8fd1-2834d065ba9d * Reduce distro termination log noise (#41541) Co-authored-by: Copilot <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: adf24228-67c0-452e-9cc2-c698a8d7b3b7 * Localization change from build: 157277214 (#41571) Co-authored-by: WSL localization <[email protected]> * CLI: Add global options to root help, adjust options usage (#41534) * Add global options to root help, adjust options usage to match CLI conventions * Trim some unnecessary test code * Localization change from build: 157310027 (#41574) Co-authored-by: WSL localization <[email protected]> * wslc: add docker --quiet to image load, image push and container cp (#41466) Co-authored-by: Copilot <[email protected]> * Tear down the stale plugin Plan9 server before recreating it (#41565) When the per-user plugin Plan9 server is no longer running, the previous instance was dropped without a Teardown call, so it could still hold the Plan9 port when the replacement tries to bind it. Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> Copilot-Session: 0d028ad4-fe5e-4ef1-9832-18ee0e4825cc * Use a locally imported version of docker/dockerfile instead of downloading it from the default registry (#41575) * Use a locally imported version of docker/dockerfile instead of downloading it from the default registry * Cleanup diff * Use canonical path in VolumeMount_Parse_ReturnExpectedResult (#41577) * Document WSL security model (#41556) * Document WSL security model Clarify WSL trust boundaries and explain that configuration settings do not establish a sandbox. Co-authored-by: Copilot <[email protected]> Copilot-Session: c77eaf09-799a-416e-b4b4-19f37a4201ef * Update WSL security model explanation Co-authored-by: Copilot Autofix powered by AI <[email protected]> * Clarify WSL isolation guidance Distinguish functional distribution separation from a security boundary and recommend a separately managed VM for untrusted workloads. Co-authored-by: Copilot <[email protected]> Copilot-Session: c77eaf09-799a-416e-b4b4-19f37a4201ef * Document shared WSL VM trust model Clarify that elevated and non-elevated sessions can share utility VM state and are not separate guest security boundaries. Co-authored-by: Copilot <[email protected]> Copilot-Session: c77eaf09-799a-416e-b4b4-19f37a4201ef --------- Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot Autofix powered by AI <[email protected]> Copilot-Session: c77eaf09-799a-416e-b4b4-19f37a4201ef * Bump GitPython to 3.1.59 (#41580) Resolves open Dependabot alerts for GitPython <= 3.1.58 in distributions/requirements.txt and tools/devops/requirements.txt. Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> Copilot-Session: 6fcfe0f1-6be5-4913-ab36-71823443cc36 * Remove two noisy warnings from the distro validation scripts (#41579) * Remove two noisy warnings from the distro validation scripts * Cleanup diff * Fix formatting of USR_SHARE_WSL assignment Co-authored-by: Copilot Autofix powered by AI <[email protected]> --------- Co-authored-by: Copilot Autofix powered by AI <[email protected]> * Fix activating a stopping service treated as OOM (#41460) The current factory function for LxssUserSession and WSLCSessionManager translates the error code CO_E_SERVER_STOPPING to S_FALSE. Which combined with *ppCreated == NULL causes COM to treat this as an OOM. Leading to error messages like this when activating a stopping service: Not enough memory resources are available to complete this operation. Error code: Wsl/E_OUTOFMEMORY This PR removes this conversion. So, COM actually retries when the service is stopping. And returns CO_E_SERVER_EXEC_FAILURE if the retry times out. * Set distributionStartTimeout to 2 minutes in the tests to solve distribution start timeouts errors (#41583) * Set distributionStartTimeout to 2 minutes in the tests to solve distribution start timeouts errors * Update tests * Localization change from build: 157504221 (#41602) Co-authored-by: WSL localization <[email protected]> * Enable RedirectionGuard process mitigation (#41542) Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> * Updates Ubuntu latest LTS images (#41465) * Updates Ubuntu 26.04 to the .1 release Just announced today. Also published the up-to-date Ubuntu package to MS Store, but I'm not referencing it here. * Updates the 24.04.5 images just released today. * Use the cdimages.u.c host for consistency --------- Co-authored-by: Carlos Nihelton <[email protected]> * diagnostics: improve collect-wsl-logs for analysis (summary.json, README, profile info, WSL/guest state) (#40776) * diagnostics: record capture profile in collected logs collect-wsl-logs.ps1 did not record which WPR profile was used for a capture. When analyzing an archive (e.g. a networking-only capture that lacks the WSL core trace providers), there was no way to tell which profile produced it without inferring it from the provider mix. Write a collection-info.txt into the log folder capturing the selected LogProfile, the mapped WPRP profile and file, the Dump and RestartWslReproMode switches, and the collection timestamp. Co-authored-by: Copilot <[email protected]> * diagnostics: collect WSL version, guest state, and drop empty dumps Add three further debugging improvements to collect-wsl-logs.ps1: - Collect wsl --version / --status / --list --verbose into wsl-info.txt instead of forcing analyzers to infer the version and distro layout from the appx package and registry. - Collect guest-side state (dmesg, free, uptime, ulimit, pid_max, threads-max, process/thread counts, top RSS) into linux_diagnostics.log after the repro. This is the data needed to diagnose in-distro failures such as 'Resource temporarily unavailable' (EAGAIN) from resource limits. - Remove 0-byte dump files left behind when MiniDumpWriteDump fails, so the archive only contains real dumps. Also set WSL_UTF8 and the console output encoding so wsl.exe output is captured to the log files readably. Co-authored-by: Copilot <[email protected]> * diagnostics: add summary.json and README.md to log archive Make collected log archives easier to analyze (by a human or an agent) without having to run tools or infer state from individual artifacts: - summary.json: machine-readable overview of the capture - profile, WSL/Windows versions, networking mode, installed distributions and their state, .wslconfig presence, and an inventory of non-empty dumps. - README.md: an index of the archive contents describing each file, plus a note on how to decode logs.etl and how to tell when a non-default log profile was used. Co-authored-by: Copilot <[email protected]> * diagnostics: address PR feedback (utf8 wsl-info, wsl.exe timeouts, slimmer summary.json) - Write wsl-info.txt as UTF-8 instead of the PS5.1 default UTF-16LE. - Guard every newly-added wsl.exe call (wsl-info and guest diagnostics) with a timeout via a background job so a deadlocked service or bad VM state cannot hang log collection. - Drop the duplicated distro-registry enumeration and .wslconfig networkingMode parsing from summary.json; that state is readily derived from HKCU.txt and the archived .wslconfig. Co-authored-by: Copilot <[email protected]> * diagnostics: drop wsl-info.txt and guest diagnostics collection Remove the unconditional wsl.exe calls this PR introduced (wsl-info.txt and linux_diagnostics.log) along with the now-unused timeout helper, per review feedback that the log collection script should not call wsl.exe (which can hang if the service is deadlocked or the VM is in a bad state). Pre-existing networking-profile wsl.exe calls are left untouched. Co-authored-by: Copilot <[email protected]> * collect-wsl-logs: drop bundled summary.json and README per review OneBlue noted the agent-readable index and the summary values are redundant in every archive (an analyzer can derive them from the archive contents). Keep only collection-info.txt, which records non-derivable capture provenance (which WPR profile/switches were used). Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> * Move security model under technical documentation (#41605) * Move security model under technical documentation Co-authored-by: Copilot <[email protected]> Copilot-Session: 43c7b692-ffc5-43bf-88b9-ecc927a1aa55 * Move security model into technical documentation Co-authored-by: Copilot <[email protected]> Copilot-Session: 43c7b692-ffc5-43bf-88b9-ecc927a1aa55 --------- Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: 43c7b692-ffc5-43bf-88b9-ecc927a1aa55 * Fix typos (#41589) * Don't stop parsing linux config files on invalid lines (#41606) * wslc: add --all-tags to pull for docker parity (#41494) Co-authored-by: Copilot <[email protected]> * Added WSL container to OOBE (#41402) * Pre merge Localization strings prior to GA (#41585) Co-authored-by: Copilot <[email protected]> * wslc: keep image list json CreatedSince locale-invariant (#41609) Co-authored-by: Copilot <[email protected]> * Localization change from build: 157621275 (#41610) Co-authored-by: WSL localization <[email protected]> * Warn on an escaped CR in wsl.conf instead of dropping it silently (#41591) `case '\r': break;` made a backslash before a CR the only unrecognised escape the parser accepts without a diagnostic. In a CRLF file that left the value truncated at the backslash and the remainder parsed as its own line, with nothing reported. Letting it fall into the default case gives the same MessageConfigInvalidEscape warning as any other bad escape. As with those, the line is then discarded rather than kept truncated. * Localization change from build: 157667513 (#41614) Co-authored-by: WSL localization <[email protected]> * Set a restricted ephemeral port range for test case ConsommeTests::PortZeroBindIsTracked (#41616) * repo: modify CODEOWNERS to change wsl-maintainers to wsl-reviewers team (#41617) Co-authored-by: Ben Hillis <[email protected]> * Localization change from build: 157736413 (#41621) Co-authored-by: WSL localization <[email protected]> * CLI: Global option scopes for nested commands (related to compose support) (#41546) * Change default relay buffer size to 64KiB (#41603) The current logic uses a fixed 4KiB buffer for stdio relay on the Windows side. And uses an initial 4KiB buffer for stdio relay on the Linux side, which grows only if the message won't fit. This can severely limit the relay performance in some situations. For example, in #41572, when redirecting stdout to a SMB share. This PR increases thedefault relay buffer size to 64KiB. Which shows significant performance improvements according to buffer size tests. * Fix redirect stdout and stderror to the same file overlapping (#41611) Currently the stdout and stderr relay tracks the output offset separately. And when redirected to the same file, the writes could overlap. This PR uses the append mode for overlap io writes instead of the separate offsets in the relay. So, the file write offset is correctly tracked by the system. * move installer log collection after repro (#41620) The installer log files were collected before the log collection starts. Which will miss the user repro. This PR moves it after the user repro. * wslc: add --digests to image list for docker parity (#41457) Co-authored-by: Copilot <[email protected]> * Localization change from build: 157843092 (#41630) Co-authored-by: WSL localization <[email protected]> * Explicitely return SOCKET from WSLCPluginAPI_ProcessGetFd() (#41626) * In mirrored mode, handle route update as add instead of replace (#41391) In mirrored mode, handle route update as add instead of replace Remove usage of route update as it can overwrite routes on other interfaces. add tests that verify host routing changes are correctly reflected in Linux --------- Co-authored-by: Catalin-Emil Fetoiu <[email protected]> * Add wslc events command (#41608) * Don't fail the UnitTests::Warnings test case if GlobalSecureAccess VPN is running (#41638) * Don't fail the UnitTests::Warnings test case if GlobalSecureAccess VPN is running * Cleanup diff * Fix test * Wait for wslservice to be started when running tests (#41639) * Wait for wslservice to be started when running tests * Fail on timeout * Improve check * Format * Create new namespaces for distro cgroups (#41512) In 2.9.8, the distro processes are separated into their own cgroups. But they remain in the same cgroup namespace. That caused compatibility issues with softwares that assume a fixed systemd cgroup layout. For example, rootless docker and nerdctl. Fixes on Moby and nertctl are being worked on. However, to avoid issues with other software, WSL's cgroup handling should also be improved. This PR creates new cgroup namespaces for the distros. So, to the non-critical distro processes, the systemd cgroup layout stays the same as before. This PR also introduces a cgroup structure change to accomplish this. The systemd init is moved from wsl-user/distro-N/systemd to wsl-user/distro-N. And the initialization of the distro-N controllers is handled by systemd instead. The processes are also moved into the non-systemd cgroup in systemdless distros. This makes sure that sub-group controllers can be enabled in the distro root. Cgroup v2 is now enforced when distro isolation is enabled. Instead of constructing an unusable cgroup v1 layout when cgroup v1 and distro isolation are both enabled. * Fix unnecessary delay in the port tracking loop (#41472) Before this change, an additional 10ms delay was added in the port tracker loop presumably to make the main loop slower than the worker loop. So, the worker result does not get super dated. This is not reliable. And the 10ms delay also slows down every consecutive bind call. This PR refactors the thread synchronization method. So, the timing between those two loops is more deterministic. And removes the performance penalty for all bind calls. * Localization change from build: 157954210 (#41643) Co-authored-by: WSL localization <[email protected]> * wslc: add --follow-link to cp (#41501) Co-authored-by: Copilot <[email protected]> * Disable unstable bind cap test and re-enable Loopback test that was incorrectly disabled- #41648 (#41648) Co-authored-by: Catalin-Emil Fetoiu <[email protected]> * Move objects shared by wslc.exe and the tests to src/windows/common (#41619) * Move objects shared by wslc.exe and the tests to src/windows/common Co-authored-by: Copilot <[email protected]> * Link yaml-cpp, advapi32 and Crypt32 into common Co-authored-by: Copilot <[email protected]> * Drop yaml-cpp, advapi32 and crypt32 from wslclib now that common provides them Co-authored-by: Copilot <[email protected]> * Move wslc code in common under common/wslc and namespace CLI types as wslc::cli Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> * Fix various protocol parsing issues (#41637) * Save state * Use proper arrays * Format * Add new tests * Cleanup tests * Cleanup diff * Format * Apply PR feedback * Apply PR feedback * Format * Apply PR feedback * Move logging call * Apply PR feedback * Apply PR feedback * Localization change from build: 157980831 (#41647) Co-authored-by: WSL localization <[email protected]> * Add WSLC network lifecycle events (#41576) * Add WSLC network lifecycle events * Localize pending network prune errors * Fix network operation wait ownership and cleanup ordering * Fix prune event correlation after timed-out * Fix network event rollback and timeout recovery * Format * Forward Docker network events directly * Restore lock_guard after removing event waits * fix test * align event stream test helpers after merge * feedback * Fix potential out of bound access when pretty-printing string field in init messages (#41664) * Localization change from build: 158197536 (#41662) Co-authored-by: WSL localization <[email protected]> * simplify event reader cleanup and remove unused include (#41667) * Fix ipv4 forwarding when both v4 and v6 ports are listening * Fix config's handling of non-ascii characters (#41657) When parsing the config file, non-ascii utf-16 values are casted into char. This will mangle non-ascii values in the config file. For example, a custom kernel path containing Chinese characters will cause WSL_E_CUSTOM_KERNEL_NOT_FOUND. This PR removes the faulty static cast and stores the config value in wstring instead of string. So non-ascii values are preserved. * Prevent potential invalid access for string array pretty print (#41673) * resolve comments (#41642) This is a follow up to PR #41512 Remove the redundant restore cgroup namespace code. Simplify the cgroup check logic by moving the retry inside the debug shell. Add a new systemd boot timeout test. * Use a static CRT in debug builds (#41684) * Fix potential test failure in BrokenDistroImport by not assuming the disk's block device in WSL (#41686) * Update releaseScripts reference from v1 to v2 (#41687) * INcrease the VM termination timeout to 30 seconds (#41688) * Impersonate the caller before making various filesystem operations (#41689) * Impersonate the caller before making various filesystem operations * Apply PR feedback * Support STDIN through SDK (#41698) * stdin flag * add winrt test, fix coroutine bug in streams * Followup to STDIN PR (#41703) * Add ability to format your branch (#41699) * Remove references to WSLC being in a preview (#41704) * Don't write to the install log file if it's a reparse point (#41705) * Use the latest ESRP signing key code (#41640) * Use the latest ESRP signing key code * Only change key code * Restore original pipeline line endings Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> * Refactor event stream cancellation waits (#41696) * Don't expect the brd module logline to stabilize the CustomDmesgOutput test case (#41714) * Use WSL icon for developer docs (#41715) * Use WSL icon for developer docs Co-authored-by: Copilot <[email protected]> Copilot-Session: ce78a21f-e946-4e9c-b2ea-934a5b0935f3 * Reuse docs logo as favicon Co-authored-by: Copilot <[email protected]> Copilot-Session: ce78a21f-e946-4e9c-b2ea-934a5b0935f3 --------- Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: ce78a21f-e946-4e9c-b2ea-934a5b0935f3 * Fix: update drvfs gid uid after default uid is set in oobe (#41521) For a newly installed distro, the drvfs are initially mount as 0:0. And is not updated after oobe sets the default uid. This could cause access issues before the distro is restarted. This PR updates the auto mounted drvfs gid uid before completing the oobe. The non-auto mounted shares are not remounted to avoid breaking user set gid uid values. * Update WSLC SDK API documentation (#41677) * Update WSLC SDK API documentation Co-authored-by: Copilot <[email protected]> * Update docs * Update docs * Quick fixes --------- Co-authored-by: Copilot <[email protected]> Co-authored-by: Craig Loewen <[email protected]> * Updated README (#41723) * Expose kernel headers and perf to distributions (#41400) * Expose kernel headers and perf to distributions Mount kernel-matched headers and perf tooling from the artifacts VHD into each distribution, expose perf through the default environment, and cover the resulting paths and replacement behavior. Co-authored-by: Copilot <[email protected]> Copilot-Session: cdebc331-ad3e-492e-9591-c25587c859c5 * Address kernel artifact review feedback Correct the documented header target and directory fallback, and log failures while removing mount path environment variables. Co-authored-by: Copilot <[email protected]> Copilot-Session: cdebc331-ad3e-492e-9591-c25587c859c5 --------- Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: cdebc331-ad3e-492e-9591-c25587c859c5 * Use iterators in FromJson to avoid copies (#41641) * Use iterators in FromJson to avoid copies * Cleanup * Fix template build * Format * Use a retry with timeout in HostPortCantBeBoundByGuest (#41728) * Run the nightly tests on ge-current (#41725) * Don't fail configuring the consommé loopback adapter when ipv6 is disabled (#41729) * Enable experimental sparse VHD creation (#41726) * Refine sparse VHD creation policy Co-authored-by: Copilot <[email protected]> * Enable experimental sparse VHD creation in WSL Co-authored-by: Copilot <[email protected]> * Make sparse VHD unsafe flag optional Co-authored-by: Copilot <[email protected]> * Keep fixed VHD creation non-sparse Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> * Update Microsoft.RemoteDesktop.Client.MSRDC.SessionHost to version 1.2.7391 (#41730) Co-authored-by: Ben Hillis <[email protected]> * Fix WSL container event timestamps (#41717) * Revert "Enable RedirectionGuard process mitigation" (#41744) * Revert "Enable RedirectionGuard process mitigation (#41542)" This reverts commit e53598d. * Add comments * Fix comment * Add --format json to wslc events (#41734) * Update the DACL to only allow access to the user when creating virtual disks (#41678) * Update the DACL to only allow access to the user when creating virtual disks * Save state * Increase test coverage * Fix test * Apply PR feedback * Apply PR feedback * Format * Apply PR suggestions * Apply PR suggestions * Clarify container image localization context (#41743) Add translator guidance distinguishing container images from pictures or photos for the affected WSLC strings. Co-authored-by: Copilot <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: 88d3d4b4-5a0e-4d97-9ed4-0fcd856e61de * Add RLCPlus-9 and RLCPlus-10 (Rocky Linux Plus, CIQ) (#41323) * Add RLCPlus-9 and RLCPlus-10 (Rocky Linux Plus, CIQ) * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <[email protected]> * Re-trigger CI: xattr check confirmed clean (no security.selinux attributes found), all four combinations remain boot-tested --------- Co-authored-by: Copilot Autofix powered by AI <[email protected]> * Fix race condition on system distro & init port access (#41762) * archlinux: Release 2026.10.01.179549 (#41755) This is an automated release [1]. [1] https://gitlab.archlinux.org/archlinux/archlinux-wsl/-/blob/main/.gitlab-ci.yml * Enable automatic vNUMA for large WSL VMs (#41741) * Enable automatic vNUMA for WSL VMs Add the HCS NUMA topology object so HCS can derive a supported virtual topology for large processor counts instead of requiring WSL to clamp the VM to 256 processors. Co-authored-by: Copilot <[email protected]> Copilot-Session: ea0c67c5-0211-479b-a7b5-59aebb19b71c * Gate automatic vNUMA on Germanium Preserve the existing single-node HCS configuration on older Windows builds where vNUMA topology creation is unsupported. Co-authored-by: Copilot <[email protected]> Copilot-Session: ea0c67c5-0211-479b-a7b5-59aebb19b71c * Remove vNUMA test coverage Co-authored-by: Copilot <[email protected]> Copilot-Session: ea0c67c5-0211-479b-a7b5-59aebb19b71c --------- Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: ea0c67c5-0211-479b-a7b5-59aebb19b71c * Exclude wslc.exe and wslcsession.exe from custom LSP providers (#41767) * Exclude wslc.exe and wslcsession.exe from custom LSP providers * Include container.exe * Localization change from build: 159271766 (#41772) Co-authored-by: WSL localization <[email protected]> * Reuse EmptyObject for HCS NUMA configuration (#41768) Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> * Implement container health notifications to wslc events (#41763) * Save state * Increase test coverage * Remove useless state * Replace TableOutput with TableData model and TableRenderer (#41700) Co-authored-by: Copilot <[email protected]> * refactor container cp task to be simpler and move logic to container service and common filesystem helpers (#41668) Co-authored-by: Copilot Autofix powered by AI <[email protected]> * Use a fallback gateway if no ipv4 gateway is available in consommé networking (#41779) * Record Docker die and stop events with parity (#41770) * Save state (#41780) * Localization change from build: 159357096 (#41786) Co-authored-by: WSL localization <[email protected]> * Update issue template for WSLC (#41778) * Update issue tempalte for WSLC * Fix description * Run the nightly tests on Windows Server 2025 (#41760) * Run the nightly tests on ge-current * Run the nightly tests on Windows Server 2025 * Skip some network tests * Update name * Fix mirrored check * Use the server field * Localization change from build: 159470205 (#41800) Co-authored-by: WSL localization <[email protected]> * Fix various issues preventing the ModernOOBE test from running multiple times on the same test_distro (#41781) * Remove unused delay-load options (#41804) Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> * Disable pushing to the store by default (#41782) * Scope down the ephemeral port range in various consommé tests (#41805) * Fix race condition in LifetimeManager (#41807) * Use DistroFileChange instead of going through wsl.localhost (#41810) * Explicitely setup impersonation when instanciating IWslSupport (#41815) * Wait for bound ports to be released by the port relay in the tests (#41817) * Support reading the wslc image build context from stdin (#41765) Co-authored-by: Copilot <[email protected]> * Update Microsoft.WSL.Kernel to 6.18.54.1 (#41822) * Add logic to reject commands with extra arguments (#41821) * Add logic to reject commands with extra arguments * Simplify tests * Improve wslc event filters (#41809) * Localization change from build: 159727887 (#41826) Co-authored-by: WSL localization <[email protected]> * Make the binfmt mount writable (#41808) * Make the binfmt mount writeable * Apply PR suggestions * Match container and network filters across event types (#41818) * Fix incorrect wsl.conf warnings being displayed when creating a new distribution (#41820) * Convert EnsureCaseSensitiveDirectoryRecursive to iterative traversal (#40347) * Convert EnsureCaseSensitiveDirectoryRecursive to iterative traversal Replace unbounded recursive depth-first traversal with an iterative approach using an explicit stack. A deeply nested directory tree could overflow the thread stack during the recursive calls. The iterative version collects directories in reverse post-order during traversal, then marks them bottom-up (children before parents), preserving the ordering invariant that EnsureCaseSensitiveDirectory relies on for its early-exit optimization. Bug: 61964147, 61974992, 61911308, 61463090 Co-authored-by: Copilot <[email protected]> * Add deep-nesting regression test for case-sensitive recursion The original recursive EnsureCaseSensitiveDirectoryRecursive could blow the Windows 1 MB thread stack at a few hundred levels of nesting because each frame carried a FILE_ID_BOTH_DIR_INFORMATION enumeration buffer. The iterative implementation in this PR moves that state to the heap, so a very deep tree must complete without crashing. The test creates a 1024-level chain via the \\\\?\\ long-path prefix (cumulative path length exceeds MAX_PATH) and then calls EnsureCaseSensitiveDirectory on the root. Cleanup goes through the same long-path prefix so remove_all can see every component. Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> * Add publishing to DCAT, nuget to the release pipeline (#41549) * Add a testpass on rs_base2 (#41832) * Run the nightly tests on rs_base2 * Update tests for os change * Update tests * Localization change from build: 159856815 (#41839) Co-authored-by: WSL localization <[email protected]> * Fix the security model link in SECURITY.md (#41835) #41605 moved the security model to doc/docs/technical-documentation/security.md; the link in SECURITY.md still pointed at doc/docs/security.md. * Fix RLCPlus distribution manifest formatting (#41841) Restore canonical JSON indentation without changing distribution data so the distribution validation workflow passes its formatting check. Co-authored-by: Copilot <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: aa251cac-d075-47a8-8757-92e013a714d8 * Update GitPython to resolve Dependabot alerts (#41840) Upgrade both Python tooling requirement pins to 3.1.62, which fixes all four advisories reported across eight Dependabot alerts. Co-authored-by: Copilot <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: aa251cac-d075-47a8-8757-92e013a714d8 * Fix CaseSensitivityDeepNesting test build failure (#41849) Co-authored-by: Copilot <[email protected]> * Reorganize test/windows into common/, wsl/, and wslc/ (#41661) * Reorganize test/windows and split WSLCTests.cpp into per-domain files Co-authored-by: Copilot <[email protected]> * Split wslc tests into per-layer directories and move common unit tests under common/unit Co-authored-by: Copilot <[email protected]> * Flatten test/windows into common/, wsl/, wslc/ and move wslc helpers to common Co-authored-by: Copilot <[email protected]> * Port master's WSLC event and network tests into the split test files Co-authored-by: Copilot <[email protected]> * Revert WSLCTests.cpp split so the change is file moves only Co-authored-by: Copilot <[email protected]> * Update test layout guidance for common/wsl/wslc split Co-authored-by: Copilot <[email protected]> * Make CaseSensitivityDeepNesting testDir static constexpr so the lambda can use it Co-authored-by: Copilot <[email protected]> * Drop static from CaseSensitivityDeepNesting testDir so it can be captured Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> * Fix e2fsck return code 1 treated as failure in resize (#41720) e2fsck -f -y returns 1 or 2 when there were errors fixed. However, the resize implementation currently only accepts 0 as a success. This PR adds 1 and 2 to the accepted return codes. * Document WSL architecture and contributor commands for Copilot (#41843) Co-authored-by: Copilot <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: 25aa9436-0656-41c8-a222-d81d6414a9e6 * Add WSLC volume events (#41831) * Fix incorrect AAAA DNS resolution for static DNS records causing resolution failure in musl (#41859) * Fix race condition causing potential use-after-free in NatNetworking (#41850) * Acquire m_instanceLock before calling _ValidateDistributionNameAndPathNotInUse() (#41855) * Acquire m_instanceLock before calling _ValidateDistributionNameAndPathNotInUse * Cleanup diff * Cleanup diff * Make the store publish stage opt-in (#41857) * Remove the gate before publishing nuget packages, and rename to avoid confusion (#41858) * Remove the gate before publishing nuget packages, and rename to avoid confusion * Complete nuget * Fail bind() requests that fail in Windows (#41856) --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: Feng Wang <[email protected]> Co-authored-by: ggarzia-MSFT <[email protected]> Co-authored-by: Copilot <[email protected]> Co-authored-by: Blue <[email protected]> Co-authored-by: WSL localization <[email protected]> Co-authored-by: Copilot Autofix powered by AI <[email protected]> Co-authored-by: beena352 <[email protected]> Co-authored-by: Arch Linux Technical User <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> Co-authored-by: damanm24 <[email protected]> Co-authored-by: tega-ajise <[email protected]> Co-authored-by: Tega Ajise <[email protected]> Co-authored-by: Eamon <[email protected]> Co-authored-by: Kevin Vega <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: DesertRatUa <[email protected]> Co-authored-by: Scott Bradnick <[email protected]> Co-authored-by: Stephen Halter <[email protected]> Co-authored-by: JohnMcPMS <[email protected]> Co-authored-by: Flor Chacón <[email protected]> Co-authored-by: Carlos Nihelton <[email protected]> Co-authored-by: Carlos Nihelton <[email protected]> Co-authored-by: Anton Kesy <[email protected]> Co-authored-by: Craig Loewen <[email protected]> Co-authored-by: Leo Camus <[email protected]> Co-authored-by: FetoiuCatalin <[email protected]> Co-authored-by: Catalin-Emil Fetoiu <[email protected]> Co-authored-by: Keith Horton <[email protected]> Co-authored-by: Patrick Swartz <[email protected]> Co-authored-by: Mitchell Levy <[email protected]> Co-authored-by: Franco Ceballos Rastello <[email protected]> Copilot-Session: eb7946ff-cc0b-4ff1-a059-571334b1c988 Copilot-Session: 35281c30-3d08-4f05-8c84-2ce4711023d5 Copilot-Session: c20b1da0-c613-489d-92a3-9c27527c0c54 Copilot-Session: 9213b7da-c5c8-4d9c-89ab-e80048d288a2 Copilot-Session: 3086bdaf-bc43-4fed-88d1-3a95a21fd14e Copilot-Session: ce168659-cb9d-4f0e-8fd1-2834d065ba9d Copilot-Session: adf24228-67c0-452e-9cc2-c698a8d7b3b7 Copilot-Session: 0d028ad4-fe5e-4ef1-9832-18ee0e4825cc Copilot-Session: c77eaf09-799a-416e-b4b4-19f37a4201ef Copilot-Session: 6fcfe0f1-6be5-4913-ab36-71823443cc36 Copilot-Session: 43c7b692-ffc5-43bf-88b9-ecc927a1aa55 Copilot-Session: ce78a21f-e946-4e9c-b2ea-934a5b0935f3 Copilot-Session: cdebc331-ad3e-492e-9591-c25587c859c5 Copilot-Session: 88d3d4b4-5a0e-4d97-9ed4-0fcd856e61de Copilot-Session: ea0c67c5-0211-479b-a7b5-59aebb19b71c Copilot-Session: aa251cac-d075-47a8-8757-92e013a714d8 Copilot-Session: 00be3fc6-dbb0-468d-9b5d-3952df94be35 Copilot-Session: 25aa9436-0656-41c8-a222-d81d6414a9e6
Daman Mulye (damanm24)
added a commit
that referenced
this pull request
* repo: modify CODEOWNERS to change wsl-maintainers to wsl-reviewers team (#41617) Co-authored-by: Ben Hillis <[email protected]> * Localization change from build: 157736413 (#41621) Co-authored-by: WSL localization <[email protected]> * CLI: Global option scopes for nested commands (related to compose support) (#41546) * Change default relay buffer size to 64KiB (#41603) The current logic uses a fixed 4KiB buffer for stdio relay on the Windows side. And uses an initial 4KiB buffer for stdio relay on the Linux side, which grows only if the message won't fit. This can severely limit the relay performance in some situations. For example, in #41572, when redirecting stdout to a SMB share. This PR increases thedefault relay buffer size to 64KiB. Which shows significant performance improvements according to buffer size tests. * Fix redirect stdout and stderror to the same file overlapping (#41611) Currently the stdout and stderr relay tracks the output offset separately. And when redirected to the same file, the writes could overlap. This PR uses the append mode for overlap io writes instead of the separate offsets in the relay. So, the file write offset is correctly tracked by the system. * move installer log collection after repro (#41620) The installer log files were collected before the log collection starts. Which will miss the user repro. This PR moves it after the user repro. * wslc: add --digests to image list for docker parity (#41457) Co-authored-by: Copilot <[email protected]> * Localization change from build: 157843092 (#41630) Co-authored-by: WSL localization <[email protected]> * Explicitely return SOCKET from WSLCPluginAPI_ProcessGetFd() (#41626) * In mirrored mode, handle route update as add instead of replace (#41391) In mirrored mode, handle route update as add instead of replace Remove usage of route update as it can overwrite routes on other interfaces. add tests that verify host routing changes are correctly reflected in Linux --------- Co-authored-by: Catalin-Emil Fetoiu <[email protected]> * Add wslc events command (#41608) * Don't fail the UnitTests::Warnings test case if GlobalSecureAccess VPN is running (#41638) * Don't fail the UnitTests::Warnings test case if GlobalSecureAccess VPN is running * Cleanup diff * Fix test * Wait for wslservice to be started when running tests (#41639) * Wait for wslservice to be started when running tests * Fail on timeout * Improve check * Format * Create new namespaces for distro cgroups (#41512) In 2.9.8, the distro processes are separated into their own cgroups. But they remain in the same cgroup namespace. That caused compatibility issues with softwares that assume a fixed systemd cgroup layout. For example, rootless docker and nerdctl. Fixes on Moby and nertctl are being worked on. However, to avoid issues with other software, WSL's cgroup handling should also be improved. This PR creates new cgroup namespaces for the distros. So, to the non-critical distro processes, the systemd cgroup layout stays the same as before. This PR also introduces a cgroup structure change to accomplish this. The systemd init is moved from wsl-user/distro-N/systemd to wsl-user/distro-N. And the initialization of the distro-N controllers is handled by systemd instead. The processes are also moved into the non-systemd cgroup in systemdless distros. This makes sure that sub-group controllers can be enabled in the distro root. Cgroup v2 is now enforced when distro isolation is enabled. Instead of constructing an unusable cgroup v1 layout when cgroup v1 and distro isolation are both enabled. * Fix unnecessary delay in the port tracking loop (#41472) Before this change, an additional 10ms delay was added in the port tracker loop presumably to make the main loop slower than the worker loop. So, the worker result does not get super dated. This is not reliable. And the 10ms delay also slows down every consecutive bind call. This PR refactors the thread synchronization method. So, the timing between those two loops is more deterministic. And removes the performance penalty for all bind calls. * Localization change from build: 157954210 (#41643) Co-authored-by: WSL localization <[email protected]> * wslc: add --follow-link to cp (#41501) Co-authored-by: Copilot <[email protected]> * Disable unstable bind cap test and re-enable Loopback test that was incorrectly disabled- #41648 (#41648) Co-authored-by: Catalin-Emil Fetoiu <[email protected]> * Move objects shared by wslc.exe and the tests to src/windows/common (#41619) * Move objects shared by wslc.exe and the tests to src/windows/common Co-authored-by: Copilot <[email protected]> * Link yaml-cpp, advapi32 and Crypt32 into common Co-authored-by: Copilot <[email protected]> * Drop yaml-cpp, advapi32 and crypt32 from wslclib now that common provides them Co-authored-by: Copilot <[email protected]> * Move wslc code in common under common/wslc and namespace CLI types as wslc::cli Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> * Fix various protocol parsing issues (#41637) * Save state * Use proper arrays * Format * Add new tests * Cleanup tests * Cleanup diff * Format * Apply PR feedback * Apply PR feedback * Format * Apply PR feedback * Move logging call * Apply PR feedback * Apply PR feedback * Localization change from build: 157980831 (#41647) Co-authored-by: WSL localization <[email protected]> * Add WSLC network lifecycle events (#41576) * Add WSLC network lifecycle events * Localize pending network prune errors * Fix network operation wait ownership and cleanup ordering * Fix prune event correlation after timed-out * Fix network event rollback and timeout recovery * Format * Forward Docker network events directly * Restore lock_guard after removing event waits * fix test * align event stream test helpers after merge * feedback * Fix potential out of bound access when pretty-printing string field in init messages (#41664) * Localization change from build: 158197536 (#41662) Co-authored-by: WSL localization <[email protected]> * simplify event reader cleanup and remove unused include (#41667) * Fix ipv4 forwarding when both v4 and v6 ports are listening * Fix config's handling of non-ascii characters (#41657) When parsing the config file, non-ascii utf-16 values are casted into char. This will mangle non-ascii values in the config file. For example, a custom kernel path containing Chinese characters will cause WSL_E_CUSTOM_KERNEL_NOT_FOUND. This PR removes the faulty static cast and stores the config value in wstring instead of string. So non-ascii values are preserved. * Prevent potential invalid access for string array pretty print (#41673) * resolve comments (#41642) This is a follow up to PR #41512 Remove the redundant restore cgroup namespace code. Simplify the cgroup check logic by moving the retry inside the debug shell. Add a new systemd boot timeout test. * Use a static CRT in debug builds (#41684) * Fix potential test failure in BrokenDistroImport by not assuming the disk's block device in WSL (#41686) * Update releaseScripts reference from v1 to v2 (#41687) * INcrease the VM termination timeout to 30 seconds (#41688) * Impersonate the caller before making various filesystem operations (#41689) * Impersonate the caller before making various filesystem operations * Apply PR feedback * Support STDIN through SDK (#41698) * stdin flag * add winrt test, fix coroutine bug in streams * Followup to STDIN PR (#41703) * Add ability to format your branch (#41699) * Remove references to WSLC being in a preview (#41704) * Don't write to the install log file if it's a reparse point (#41705) * Use the latest ESRP signing key code (#41640) * Use the latest ESRP signing key code * Only change key code * Restore original pipeline line endings Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> * Refactor event stream cancellation waits (#41696) * Don't expect the brd module logline to stabilize the CustomDmesgOutput test case (#41714) * Use WSL icon for developer docs (#41715) * Use WSL icon for developer docs Co-authored-by: Copilot <[email protected]> Copilot-Session: ce78a21f-e946-4e9c-b2ea-934a5b0935f3 * Reuse docs logo as favicon Co-authored-by: Copilot <[email protected]> Copilot-Session: ce78a21f-e946-4e9c-b2ea-934a5b0935f3 --------- Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: ce78a21f-e946-4e9c-b2ea-934a5b0935f3 * Fix: update drvfs gid uid after default uid is set in oobe (#41521) For a newly installed distro, the drvfs are initially mount as 0:0. And is not updated after oobe sets the default uid. This could cause access issues before the distro is restarted. This PR updates the auto mounted drvfs gid uid before completing the oobe. The non-auto mounted shares are not remounted to avoid breaking user set gid uid values. * Update WSLC SDK API documentation (#41677) * Update WSLC SDK API documentation Co-authored-by: Copilot <[email protected]> * Update docs * Update docs * Quick fixes --------- Co-authored-by: Copilot <[email protected]> Co-authored-by: Craig Loewen <[email protected]> * Updated README (#41723) * Expose kernel headers and perf to distributions (#41400) * Expose kernel headers and perf to distributions Mount kernel-matched headers and perf tooling from the artifacts VHD into each distribution, expose perf through the default environment, and cover the resulting paths and replacement behavior. Co-authored-by: Copilot <[email protected]> Copilot-Session: cdebc331-ad3e-492e-9591-c25587c859c5 * Address kernel artifact review feedback Correct the documented header target and directory fallback, and log failures while removing mount path environment variables. Co-authored-by: Copilot <[email protected]> Copilot-Session: cdebc331-ad3e-492e-9591-c25587c859c5 --------- Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: cdebc331-ad3e-492e-9591-c25587c859c5 * Use iterators in FromJson to avoid copies (#41641) * Use iterators in FromJson to avoid copies * Cleanup * Fix template build * Format * Use a retry with timeout in HostPortCantBeBoundByGuest (#41728) * Run the nightly tests on ge-current (#41725) * Don't fail configuring the consommé loopback adapter when ipv6 is disabled (#41729) * Enable experimental sparse VHD creation (#41726) * Refine sparse VHD creation policy Co-authored-by: Copilot <[email protected]> * Enable experimental sparse VHD creation in WSL Co-authored-by: Copilot <[email protected]> * Make sparse VHD unsafe flag optional Co-authored-by: Copilot <[email protected]> * Keep fixed VHD creation non-sparse Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> * Update Microsoft.RemoteDesktop.Client.MSRDC.SessionHost to version 1.2.7391 (#41730) Co-authored-by: Ben Hillis <[email protected]> * Fix WSL container event timestamps (#41717) * Revert "Enable RedirectionGuard process mitigation" (#41744) * Revert "Enable RedirectionGuard process mitigation (#41542)" This reverts commit e53598d. * Add comments * Fix comment * Add --format json to wslc events (#41734) * Update the DACL to only allow access to the user when creating virtual disks (#41678) * Update the DACL to only allow access to the user when creating virtual disks * Save state * Increase test coverage * Fix test * Apply PR feedback * Apply PR feedback * Format * Apply PR suggestions * Apply PR suggestions * Clarify container image localization context (#41743) Add translator guidance distinguishing container images from pictures or photos for the affected WSLC strings. Co-authored-by: Copilot <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: 88d3d4b4-5a0e-4d97-9ed4-0fcd856e61de * Add RLCPlus-9 and RLCPlus-10 (Rocky Linux Plus, CIQ) (#41323) * Add RLCPlus-9 and RLCPlus-10 (Rocky Linux Plus, CIQ) * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <[email protected]> * Re-trigger CI: xattr check confirmed clean (no security.selinux attributes found), all four combinations remain boot-tested --------- Co-authored-by: Copilot Autofix powered by AI <[email protected]> * Fix race condition on system distro & init port access (#41762) * archlinux: Release 2026.10.01.179549 (#41755) This is an automated release [1]. [1] https://gitlab.archlinux.org/archlinux/archlinux-wsl/-/blob/main/.gitlab-ci.yml * Enable automatic vNUMA for large WSL VMs (#41741) * Enable automatic vNUMA for WSL VMs Add the HCS NUMA topology object so HCS can derive a supported virtual topology for large processor counts instead of requiring WSL to clamp the VM to 256 processors. Co-authored-by: Copilot <[email protected]> Copilot-Session: ea0c67c5-0211-479b-a7b5-59aebb19b71c * Gate automatic vNUMA on Germanium Preserve the existing single-node HCS configuration on older Windows builds where vNUMA topology creation is unsupported. Co-authored-by: Copilot <[email protected]> Copilot-Session: ea0c67c5-0211-479b-a7b5-59aebb19b71c * Remove vNUMA test coverage Co-authored-by: Copilot <[email protected]> Copilot-Session: ea0c67c5-0211-479b-a7b5-59aebb19b71c --------- Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: ea0c67c5-0211-479b-a7b5-59aebb19b71c * Exclude wslc.exe and wslcsession.exe from custom LSP providers (#41767) * Exclude wslc.exe and wslcsession.exe from custom LSP providers * Include container.exe * Localization change from build: 159271766 (#41772) Co-authored-by: WSL localization <[email protected]> * Reuse EmptyObject for HCS NUMA configuration (#41768) Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> * Implement container health notifications to wslc events (#41763) * Save state * Increase test coverage * Remove useless state * Replace TableOutput with TableData model and TableRenderer (#41700) Co-authored-by: Copilot <[email protected]> * refactor container cp task to be simpler and move logic to container service and common filesystem helpers (#41668) Co-authored-by: Copilot Autofix powered by AI <[email protected]> * Use a fallback gateway if no ipv4 gateway is available in consommé networking (#41779) * Record Docker die and stop events with parity (#41770) * Save state (#41780) * Localization change from build: 159357096 (#41786) Co-authored-by: WSL localization <[email protected]> * Update issue template for WSLC (#41778) * Update issue tempalte for WSLC * Fix description * Run the nightly tests on Windows Server 2025 (#41760) * Run the nightly tests on ge-current * Run the nightly tests on Windows Server 2025 * Skip some network tests * Update name * Fix mirrored check * Use the server field * Localization change from build: 159470205 (#41800) Co-authored-by: WSL localization <[email protected]> * Fix various issues preventing the ModernOOBE test from running multiple times on the same test_distro (#41781) * Remove unused delay-load options (#41804) Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> * Disable pushing to the store by default (#41782) * Scope down the ephemeral port range in various consommé tests (#41805) * Fix race condition in LifetimeManager (#41807) * Use DistroFileChange instead of going through wsl.localhost (#41810) * Explicitely setup impersonation when instanciating IWslSupport (#41815) * Wait for bound ports to be released by the port relay in the tests (#41817) * Support reading the wslc image build context from stdin (#41765) Co-authored-by: Copilot <[email protected]> * Update Microsoft.WSL.Kernel to 6.18.54.1 (#41822) * Add logic to reject commands with extra arguments (#41821) * Add logic to reject commands with extra arguments * Simplify tests * Improve wslc event filters (#41809) * Localization change from build: 159727887 (#41826) Co-authored-by: WSL localization <[email protected]> * Make the binfmt mount writable (#41808) * Make the binfmt mount writeable * Apply PR suggestions * Match container and network filters across event types (#41818) * Fix incorrect wsl.conf warnings being displayed when creating a new distribution (#41820) * Convert EnsureCaseSensitiveDirectoryRecursive to iterative traversal (#40347) * Convert EnsureCaseSensitiveDirectoryRecursive to iterative traversal Replace unbounded recursive depth-first traversal with an iterative approach using an explicit stack. A deeply nested directory tree could overflow the thread stack during the recursive calls. The iterative version collects directories in reverse post-order during traversal, then marks them bottom-up (children before parents), preserving the ordering invariant that EnsureCaseSensitiveDirectory relies on for its early-exit optimization. Bug: 61964147, 61974992, 61911308, 61463090 Co-authored-by: Copilot <[email protected]> * Add deep-nesting regression test for case-sensitive recursion The original recursive EnsureCaseSensitiveDirectoryRecursive could blow the Windows 1 MB thread stack at a few hundred levels of nesting because each frame carried a FILE_ID_BOTH_DIR_INFORMATION enumeration buffer. The iterative implementation in this PR moves that state to the heap, so a very deep tree must complete without crashing. The test creates a 1024-level chain via the \\\\?\\ long-path prefix (cumulative path length exceeds MAX_PATH) and then calls EnsureCaseSensitiveDirectory on the root. Cleanup goes through the same long-path prefix so remove_all can see every component. Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Ben Hillis <[email protected]> Co-authored-by: Copilot <[email protected]> * Add publishing to DCAT, nuget to the release pipeline (#41549) * Add a testpass on rs_base2 (#41832) * Run the nightly tests on rs_base2 * Update tests for os change * Update tests * Localization change from build: 159856815 (#41839) Co-authored-by: WSL localization <[email protected]> * Fix the security model link in SECURITY.md (#41835) #41605 moved the security model to doc/docs/technical-documentation/security.md; the link in SECURITY.md still pointed at doc/docs/security.md. * Fix RLCPlus distribution manifest formatting (#41841) Restore canonical JSON indentation without changing distribution data so the distribution validation workflow passes its formatting check. Co-authored-by: Copilot <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: aa251cac-d075-47a8-8757-92e013a714d8 * Update GitPython to resolve Dependabot alerts (#41840) Upgrade both Python tooling requirement pins to 3.1.62, which fixes all four advisories reported across eight Dependabot alerts. Co-authored-by: Copilot <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: aa251cac-d075-47a8-8757-92e013a714d8 * Fix CaseSensitivityDeepNesting test build failure (#41849) Co-authored-by: Copilot <[email protected]> * Reorganize test/windows into common/, wsl/, and wslc/ (#41661) * Reorganize test/windows and split WSLCTests.cpp into per-domain files Co-authored-by: Copilot <[email protected]> * Split wslc tests into per-layer directories and move common unit tests under common/unit Co-authored-by: Copilot <[email protected]> * Flatten test/windows into common/, wsl/, wslc/ and move wslc helpers to common Co-authored-by: Copilot <[email protected]> * Port master's WSLC event and network tests into the split test files Co-authored-by: Copilot <[email protected]> * Revert WSLCTests.cpp split so the change is file moves only Co-authored-by: Copilot <[email protected]> * Update test layout guidance for common/wsl/wslc split Co-authored-by: Copilot <[email protected]> * Make CaseSensitivityDeepNesting testDir static constexpr so the lambda can use it Co-authored-by: Copilot <[email protected]> * Drop static from CaseSensitivityDeepNesting testDir so it can be captured Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> * Fix e2fsck return code 1 treated as failure in resize (#41720) e2fsck -f -y returns 1 or 2 when there were errors fixed. However, the resize implementation currently only accepts 0 as a success. This PR adds 1 and 2 to the accepted return codes. * Document WSL architecture and contributor commands for Copilot (#41843) Co-authored-by: Copilot <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: 25aa9436-0656-41c8-a222-d81d6414a9e6 * Add WSLC volume events (#41831) * Fix incorrect AAAA DNS resolution for static DNS records causing resolution failure in musl (#41859) * Fix race condition causing potential use-after-free in NatNetworking (#41850) * Acquire m_instanceLock before calling _ValidateDistributionNameAndPathNotInUse() (#41855) * Acquire m_instanceLock before calling _ValidateDistributionNameAndPathNotInUse * Cleanup diff * Cleanup diff * Make the store publish stage opt-in (#41857) * Remove the gate before publishing nuget packages, and rename to avoid confusion (#41858) * Remove the gate before publishing nuget packages, and rename to avoid confusion * Complete nuget * Fail bind() requests that fail in Windows (#41856) * Don't add swiotlb=force with the hv_pci swiotlb pool (#41829) The hv_pci pool is created with force_bounce set, so virtio devices bounce through it without the global flag. swiotlb=force only made every other device, mainly hv_storvsc, bounce all its I/O through the default 64 MB pool, which runs out under load (#41828). * Fix potential crash caused by error during session initialization (#41887) * Add a /hyperv to triage hyper-v issues (#41885) * Localization change from build: 160297307 (#41890) Co-authored-by: WSL localization <[email protected]> * Increase the default commited stack size to 64KB (#41888) * Increase the default commited stack size to 64KB * Fix formatting of stack size comment in CMakeLists Co-authored-by: Copilot Autofix powered by AI <[email protected]> --------- Co-authored-by: Copilot Autofix powered by AI <[email protected]> * suppress systemctl is-system-running pulling error messages (#41881) The systemctl is-system-running polling can produce error messages like Failed to connect to bus: No such file or directory before d-bus is ready. And those error messages are duplicated into /dev/kmsg by wsl. This PR suppresses the error messages as those are not useful for the polling result. * Disable unsafe move constructors in ScopedRelay (#41897) * Wait for the drvfs initialization thread to exit before destroying WslCoreVm (#41895) * Fix potential crash by use-after-free by in the stdin relay thread (#41894) * Release resources that could call callbacks before returning from HcsVirtualMachine's constructor on failure (#41908) * Narrow volume event publish ordering comments (#41889) * Add wslc cp alias for wslc container cp (#41902) * Add wslc cp alias for wslc container cp Co-authored-by: Copilot <[email protected]> * Move wslc cp usage examples under generated usage line with color Co-authored-by: Copilot <[email protected]> * Use cp short description key and add cp help example tests Co-authored-by: Copilot <[email protected]> * Remove cp help examples Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> * Fix potential starvation in COMImplClass::Disconnect (#41912) * Use repository NuGet configuration for out-of-tree builds (#41916) * Fix a potential use-after-free between plugin calls and WSLCSessionManagerImpl's destruction (#41911) * Save state * Simplify reset logic * Prepare for PR * Add missing synchronization around load WinHttp proxy methods (#41909) * Add missing synchronization around load WinHttp proxy methods * Fix loading logic * Fix missing synchronization on m_httpProxyStateTracker access (#41907) * Fix missing synchronization on m_httpProxyStateTracker access * Update header * Use the instance lock instead * Format * Fix potential deadlock in between VM exit callback and session shutdown (#41910) * Fix potential deadlock in between VM exit callback and ~LxssUserSessionImpl * Cleanup diff * Fix potential use-after-free in EpollWatcher (#41896) * Match docker -v parsing: LTR spec parser, shared validation, config-v… (#41905) * Match docker -v parsing: LTR spec parser, shared validation, config-volume anonymous volumes Co-authored-by: Copilot <[email protected]> * Reject extra colons in -v mode section Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> * Mount bind volumes during cp on non-running containers (#41906) * Mount bind volumes during cp on non-running containers Co-authored-by: Copilot <[email protected]> * Mirror issue repro in bind mount cp test Co-authored-by: Copilot <[email protected]> * Throw on deleted container in archive mounts, generate test tar in container Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]> * reap sub processes during shutdown to unblock systemd (#41899) After the cgroup isolation change. The process tree looks like this: ``` init (systemd) in the distro cgroup namespace init (wsl) in the root cgroup namespace login in the distro cgroup namespace ``` And the poweroff sequence is: WSL init resets the signal handlers, which sets SIGCHLD to default. WSL init calls systemctl poweroff systemd kills processes in it's cgroup namespace like the login process. And skips processes like the wsl init in the root namespace. The WSL init does not reap the killed sub process. Making it a zombie in the distro namespace. Systemd waits for the zombie processes and blocks. The timeout in init finally shutsdown with RB_POWER_OFF. This could cause the terminate to wait for the timeout and slow down the termination. This PR adds a waitpid loop that reaps any subprocesses of the WSL init during systemd poweroff. So systemd is no longer stuck by the zombie processes. And it calls BR_POWER_OFF itself to kill the WSL processes in the same PID namespace but in the root cgroup namespace. * Localization change from build: 160603855 (#41933) Co-authored-by: WSL localization <[email protected]> * Fix incorrect srwlock usage in when initializing drvfs (#41925) * Fix potential deadlock in WSL1 instance termination (#41922) * Fix potential deadlock in WSL1 instance termination * Differenciate using instance ids * Prepare for PR * Fix potential use-after-free if the WSLC VM is killed while the last session COM reference is being released (#41946) * Try smaller port ranges when mirrored mode cannot allocate ports (#41880) The mirrored network mode requires a continuous 4096 port range. This allocation can fail if the host port range is fragmented. And if the allocation fails, the network mode falls back to none without a clear user facing message. This PR makes two changes: Retry the port allocation with a smaller range if the default 4096 count fails. Down to 512 ports. Add user warnings when a smaller port range is used or the allocation eventually fails. * Fix wslservice potentially killing wslcsession process too early (#41951) * Localization change from build: 160716380 (#41954) Co-authored-by: WSL localization <[email protected]> * Fix wslc inspect for slash-prefixed container names (#41923) * Fix WSLC GPU hook execution and library discovery (#41886) * Add hourly upstream sync workflow for feature/wsl-for-apps * Remove upstream sync workflow * Fix WSLC GPU hook execution and library discovery Run image-provided ldconfig only from the sandboxed startContainer hook. Retain VM-side cache generation for non-root, read-only and minimal images, and configure musl library discovery. Co-authored-by: Copilot <[email protected]> * Address feedback * Preserve GPU library discovery for non-root WSLC containers Use a temporary root-owned setuid helper after container restrictions are applied, remove it before invoking image ldconfig, and preserve root identity through shell wrappers. Cover non-root loading, restart, privilege restrictions, and hook failures, with comments explaining the lifecycle and permission choices. Co-authored-by: Copilot App <[email protected]> Copilot-Session: 41029ba7-2173-4277-b148-5de84b1db137 * Keep GPU linker-cache tests on WSLC APIs and bundled images Use bundled Debian's Perl loader instead of pulling a Python image, replace Docker lifecycle commands with WSLC APIs, and remove Docker-only policy cases. Compare hook capabilities with an ordinary root WSLC process and keep rationale comments next to the relevant checks. Co-authored-by: Copilot App <[email protected]> Copilot-Session: 41029ba7-2173-4277-b148-5de84b1db137 --------- Co-authored-by: Kevin Vega <[email protected]> Co-authored-by: Copilot <[email protected]> Copilot-Session: 41029ba7-2173-4277-b148-5de84b1db137 * Fix NAT relay listener lifetime across active connections (#41948) Co-authored-by: Jack Moffitt <[email protected]> * Warn when nested virtualization capability detection fails (#41942) * Initial plan * Warn when nested virtualization capability detection fails Co-authored-by: benhillis <[email protected]> * Distinguish nested virtualization detection failures Emit a localized detection-failure warning with the error code while retaining the unsupported warning for negative capability results. Co-authored-by: Copilot <[email protected]> Copilot-Session: bbd8114d-2fc2-4be1-a8b0-f3fc6dc3f3d2 --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: benhillis <[email protected]> Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: bbd8114d-2fc2-4be1-a8b0-f3fc6dc3f3d2 * Fix potential hang when a distribution is terminated while waiting on OOBE (#41924) * Fix race condition in Signal() / ResizeTty() process logic (#41929) * Fix race condition in Signal() / ResizeTty() process logic * Fix test case * Fix potential use free in WSLCContainer (#41949) * Remove bundled perf integration (#41904) * Expose bundled perf through WSL-owned paths Keep perf artifacts read-only and expose them through a per-distro wrapper and managed local symlink without modifying distro packages or session search paths. Co-authored-by: Copilot <[email protected]> Copilot-Session: dc502fd6-021a-4a35-8227-e3688decebda * Preserve explicit perf helper path overrides Default the runtime wrapper's PERF_EXEC_PATH only when unset or empty, and cover empty values and inherited overrides. Co-authored-by: Copilot <[email protected]> Copilot-Session: dc502fd6-021a-4a35-8227-e3688decebda * Strengthen bundled perf package-isolation coverage Verify PERF_EXEC_PATH is not set globally and regular distro perf replacements remain writable across restarts. Co-authored-by: Copilot <[email protected]> Copilot-Session: 513b5be8-a1a8-4bf1-8938-b74e06526ee3 * Prefer distro perf before bundled fallback Dispatch to executable distro perf before setting bundled helper defaults, preserving arguments and failures. Cover dynamic selection and fallback, and document the behavior. Co-authored-by: Copilot <[email protected]> Copilot-Session: 513b5be8-a1a8-4bf1-8938-b74e06526ee3 * Remove bundled perf integration Stop mounting and exposing bundled perf so distro packages own perf installation and selection. Preserve kernel headers and modules and cover distro perf replacement across restarts. Co-authored-by: Copilot <[email protected]> Copilot-Session: 513b5be8-a1a8-4bf1-8938-b74e06526ee3 * Remove obsolete distro perf regression test Co-authored-by: Copilot <[email protected]> Copilot-Session: 513b5be8-a1a8-4bf1-8938-b74e06526ee3 --------- Co-authored-by: Ben Hillis <[email protected]> Copilot-Session: dc502fd6-021a-4a35-8227-e3688decebda Copilot-Session: 513b5be8-a1a8-4bf1-8938-b74e06526ee3 * Fix potential hang while waiting for timezone thread (#41926) * Run DCAT release jobs on a custom pool (#41961) * Fix potential deadlock + use-after-free in WatchForExitedProcesses (#41928) * Fix potential deadlock in WatchForExitedProcesses * Cleanup test * Move to an external registry * Format * WSLc Clarify image pull status message (#41753) * Clarify image pull status message Updates the `WSLCCLI_ImageNotFoundPulling` en-US resource string to say `not found locally` before pulling. This makes it clear the image may exist remotely and improves CLI message clarity. * Update image pull test expectation Co-authored-by: licon4812 <[email protected]> * Reword image pull message and update test Updates the en-US `WSLCCLI_ImageNotFoundPulling` string to a clearer phrasing: `Unable to find image '{}' locally, pulling`. The WSLC container create E2E test expectation was updated to match this exact output so behavior and test assertions stay aligned. * Align WSLC missing image message with Docker Co-authored-by: licon4812 <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> * Localization change from build: 160948052 (#41972) Co-authored-by: WSL localization <[email protected]> * Don't sleep for 3 hours waiting for the installer service (#41962) * Match console detach sequence for full UTF-16 characters (#41960) * Match console detach sequence on full UTF-16 chars Co-authored-by: Copilot <[email protected]> * Add console detach unicode low-byte test Co-author | ||||||
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |