From: Russ Cox Date: Wed, 22 Jul 2015 21:48:49 +0000 (-0400) Subject: cmd/pprof: fix race between viewer and web command X-Git-Tag: go1.5beta3~100 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=3bab4ef68da5334a1aac558ec7bee53f6bf15cfc;p=gostls13.git cmd/pprof: fix race between viewer and web command Fixes #11729. Change-Id: I6e5e23169ac1368afcbd016ed544a710aa045326 Reviewed-on: https://go-review.googlesource.com/12553 Reviewed-by: Rob Pike --- diff --git a/src/cmd/pprof/internal/commands/commands.go b/src/cmd/pprof/internal/commands/commands.go index 9570cd0440..9aeee5762e 100644 --- a/src/cmd/pprof/internal/commands/commands.go +++ b/src/cmd/pprof/internal/commands/commands.go @@ -14,6 +14,7 @@ import ( "os/exec" "runtime" "strings" + "time" "cmd/pprof/internal/plugin" "cmd/pprof/internal/report" @@ -224,6 +225,11 @@ func invokeVisualizer(interactive **bool, format PostProcessor, suffix string, v viewer := exec.Command(args[0], append(args[1:], tempFile.Name())...) viewer.Stderr = os.Stderr if err = viewer.Start(); err == nil { + // The viewer might just send a message to another program + // to open the file. Give that program a little time to open the + // file before we remove it. + time.Sleep(1 * time.Second) + if !**interactive { // In command-line mode, wait for the viewer to be closed // before proceeding