microsoft / microsoft/Windows-Containers

Process.Start() and PowerShell Start-Process hang on newer mcr.microsoft.com/windows/servercore:ltsc2019 / .NET Framework 4.8 LTSC2019 images

Open
#645 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug triage
Dominant language
PowerShell
Stars
551
Forks
76
PR merge metrics
No merged PRs in 30d

Description

Description of the bug

We are seeing a regression in newer Windows Server Core LTSC 2019 container images.

Starting a child process from inside the container hangs indefinitely. This affects both:

  • .NET System.Diagnostics.Process.Start()
  • PowerShell Start-Process

This used to work a few weeks ago and still works on an older pinned .NET Framework SDK image.

Known-good image

The following images still works correctly:

  • mcr.microsoft.com/dotnet/framework/sdk:4.8-20260512-windowsservercore-ltsc2019
  • mcr.microsoft.com/windows/servercore:10.0.17763.8880

On this image, both:

  • .NET Process.Start()
  • PowerShell Start-Process

return normally.

Regressed images

The problem occurs on newer images based on updated LTSC2019 Server Core, including:

  • mcr.microsoft.com/windows/servercore:ltsc2019
  • current floating mcr.microsoft.com/dotnet/framework/sdk:4.8
  • current floating mcr.microsoft.com/dotnet/framework/sdk:4.8-windowsservercore-ltsc2019
Expected behavior

Starting cmd.exe /c echo hello should return immediately.

Expected output for the .NET repro:

Before
After

Expected output for the PowerShell repro:

Before
After
Actual behavior

The process-start call hangs indefinitely.

For the .NET repro, output is:

Before

and Process.Start() never returns.

For the PowerShell repro, output is:

Before

and Start-Process never returns.

Container OS versions observed

Known-good older image lineage:

  • 10.0.17763.8880

Failing newer image lineage:

  • 10.0.17763.9020
Minimal PowerShell repro

Run:

docker run -ti --rm mcr.microsoft.com/windows/servercore:ltsc2019 powershell

Inside the container:

Write-Host "Before"
Start-Process cmd.exe -ArgumentList '/c echo hello' -Wait
Write-Host "After"

Actual result on the failing image:

Before

and then it hangs.

Minimal .NET repro

Run:

docker run -ti --rm mcr.microsoft.com/windows/servercore:ltsc2019 powershell

Inside the container:

Add-Type @"
using System;
using System.Diagnostics;

public class Test {
    public static void Run() {
        var p = new Process();
        p.StartInfo.FileName = "cmd.exe";
        p.StartInfo.Arguments = "/c echo hello";
        Console.WriteLine("Before");
        p.Start();
        Console.WriteLine("After");
    }
}
"@

[Test]::Run()

Actual result on the failing image:

Before

and then it hangs.

Notes
  • This does not appear to be specific to .NET Framework, because the same behavior is reproducible on plain mcr.microsoft.com/windows/servercore:ltsc2019.
  • The regression appears to have been introduced after the 2026-05-12 .NET Framework SDK LTSC2019 image.
  • We are currently pinning to mcr.microsoft.com/dotnet/framework/sdk:4.8-20260512-windowsservercore-ltsc2019 as a temporary workaround.
Environment
  • Host OS: Windows Server 2019
  • Container base: mcr.microsoft.com/windows/servercore:ltsc2019
  • Affected higher-level image: mcr.microsoft.com/dotnet/framework/sdk:4.8
  • Working higher-level image: mcr.microsoft.com/windows/servercore:10.0.17763.8880
Question

Is this a known regression in the updated LTSC2019 Server Core image, or an intentional change in process creation behavior inside Windows containers?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Run the minimal PowerShell and .NET repros with the known-good and failing Server Core images, comparing the 10.0.17763.8880 and 10.0.17763.9020 lineages. Check whether process creation behavior changed in the updated LTSC2019 image; done means identifying the regression or confirming the documented pinned-image workaround.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, powershell
Domain
devops, infrastructure, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.