diff --git a/integration-cli/docker_cli_exec_test.go b/integration-cli/docker_cli_exec_test.go index 2f72eb90e6..72059c79e6 100644 --- a/integration-cli/docker_cli_exec_test.go +++ b/integration-cli/docker_cli_exec_test.go @@ -11,6 +11,7 @@ import ( "reflect" "runtime" "sort" + "strconv" "strings" "sync" "time" @@ -19,6 +20,7 @@ import ( "github.com/docker/docker/integration-cli/checker" "github.com/docker/docker/integration-cli/cli" "github.com/docker/docker/integration-cli/cli/build" + "github.com/docker/docker/pkg/parsers/kernel" "github.com/go-check/check" "gotest.tools/icmd" ) @@ -543,6 +545,38 @@ func (s *DockerSuite) TestExecEnvLinksHost(c *check.C) { func (s *DockerSuite) TestExecWindowsOpenHandles(c *check.C) { testRequires(c, DaemonIsWindows) + + if runtime.GOOS == "windows" { + v, err := kernel.GetKernelVersion() + c.Assert(err, checker.IsNil) + build, _ := strconv.Atoi(strings.Split(strings.SplitN(v.String(), " ", 3)[2][1:], ".")[0]) + if build >= 17743 { + c.Skip("Temporarily disabled on RS5 17743+ builds due to platform bug") + + // This is being tracked internally. @jhowardmsft. Summary of failure + // from an email in early July 2018 below: + // + // Platform regression. In cmd.exe by the look of it. I can repro + // it outside of CI. It fails the same on 17681, 17676 and even as + // far back as 17663, over a month old. From investigating, I can see + // what's happening in the container, but not the reason. The test + // starts a long-running container based on the Windows busybox image. + // It then adds another process (docker exec) to that container to + // sleep. It loops waiting for two instances of busybox.exe running, + // and cmd.exe to quit. What's actually happening is that the second + // exec hangs indefinitely, and from docker top, I can see + // "OpenWith.exe" running. + + //Manual repro would be + //# Start the first long-running container + //docker run --rm -d --name test busybox sleep 300 + + //# In another window, docker top test. There should be a single instance of busybox.exe running + //# In a third window, docker exec test cmd /c start sleep 10 NOTE THIS HANGS UNTIL 5 MIN TIMEOUT + //# In the second window, run docker top test. Note that OpenWith.exe is running, one cmd.exe and only one busybox. I would expect no "OpenWith" and two busybox.exe's. + } + } + runSleepingContainer(c, "-d", "--name", "test") exec := make(chan bool) go func() {