From: Alex Brainman Date: Fri, 2 Mar 2012 05:35:42 +0000 (+1100) Subject: os: sleep 5ms after process has exited on windows X-Git-Tag: weekly.2012-03-04~36 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=d1bd332a6730b8246177a9213ea11bbeebcf38c4;p=gostls13.git os: sleep 5ms after process has exited on windows Fixes #2866. R=golang-dev, rsc CC=golang-dev https://golang.org/cl/5719047 --- diff --git a/src/pkg/os/exec_windows.go b/src/pkg/os/exec_windows.go index fa58020c03..5beca4a650 100644 --- a/src/pkg/os/exec_windows.go +++ b/src/pkg/os/exec_windows.go @@ -33,6 +33,11 @@ func (p *Process) wait() (ps *ProcessState, err error) { return nil, NewSyscallError("GetProcessTimes", e) } p.done = true + // NOTE(brainman): It seems that sometimes process is not dead + // when WaitForSingleObject returns. But we do not know any + // other way to wait for it. Sleeping for a while seems to do + // the trick sometimes. So we will sleep and smell the roses. + defer time.Sleep(5 * time.Millisecond) defer p.Release() return &ProcessState{p.Pid, syscall.WaitStatus{ExitCode: ec}, &u}, nil }