Flaky PLM inherited-output test can miss PID file after 30 seconds
- Dominant language
- Rust
- Stars
- 1.3k
- Forks
- 79
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 117
Description
> ⚠️ **Security notice:** When reporting BSODs or security issues, **DO NOT** attach memory dumps, logs, or traces to GitHub issues. Instead, send them to secure@microsoft.com referencing the GitHub issue. For application crashes, include a Feedback Hub link if possible (open with Win+F, choose "Share My Feedback" after submission).
### Relevant area(s)
Windows
### Brief description of your issue
`start::tests::inherited_output_handle_cannot_block_control_completion` remains intermittent after #848 fixed the original race reported in #845.
The `windows / x64` job for #1097 failed on September 3, 2026 after 225 PLM tests passed. The test reached its 30-second control timeout, but `DescendantCleanup::pid()` could not read the PID file and panicked at `src/host/plm/src/start.rs:627` with `descendant PID should be recorded for cleanup`.
The same unchanged test passed in the corresponding `windows / x64` job for #1096. #1097 changes only `src/core/wxc_common/src/config_parser.rs`, so the failure is independent of the pull request under test.
Failing run: https://github.com/microsoft/mxc/actions/runs/33786099458/job/100751428995
### Steps to reproduce
1. On a Windows x64 runner, run `cargo test -p plm inherited_output_handle_cannot_block_control_completion` repeatedly or as part of the full workspace suite under CI load.
2. The test starts `powershell.exe`, which starts a descendant PowerShell process and writes its PID to `descendant.pid`.
3. Observe that an intermittent run reaches the 30-second timeout without the PID file being readable.
### Expected behavior
The test should reliably record the descendant PID and validate that the inherited output handle cannot block control completion. Cleanup should remain reliable on every exit path.
### Actual behavior
The test intermittently panics before its behavioral assertions because the cleanup PID file is absent or unreadable:
```text
test start::tests::inherited_output_handle_cannot_block_control_completion ... FAILED
thread 'start::tests::inherited_output_handle_cannot_block_control_completion' panicked at host\plm\src\start.rs:627:14:
descendant PID should be recorded for cleanup
```
The failure blocks the Windows x64 build and skips downstream SDK packaging and integration jobs. Rerunning the failed workflow is currently the only workaround.
Contributor guide
Research direction
Start with the inherited_output_handle_cannot_block_control_completion test in src/host/plm/src/start.rs, especially the cleanup path around line 627. Run cargo test -p plm inherited_output_handle_cannot_block_control_completion repeatedly on a Windows x64 runner and inspect the linked failing workflow. Done means the descendant PID is reliably recorded and cleanup succeeds without intermittent timeout failures.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- powershell, rust
- Domain
- ci-cd, operating-systems, testing-qa
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100