From 505f6e335e788c87881d4aa53cfa06a8c645009a Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Tue, 14 Jul 2015 15:43:33 -0400 Subject: [PATCH] cmd/pprof: store temporary files in temporary directory Fixes #9180. Change-Id: Id5adaea0ca9005946fb89c88a10c6f59d8c0943c Reviewed-on: https://go-review.googlesource.com/12202 Reviewed-by: Andrew Gerrand --- src/cmd/pprof/internal/commands/commands.go | 20 +++++++++++++++++++- src/cmd/pprof/internal/driver/driver.go | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/cmd/pprof/internal/commands/commands.go b/src/cmd/pprof/internal/commands/commands.go index 175c7cc99c..9570cd0440 100644 --- a/src/cmd/pprof/internal/commands/commands.go +++ b/src/cmd/pprof/internal/commands/commands.go @@ -9,6 +9,7 @@ import ( "bytes" "fmt" "io" + "io/ioutil" "os" "os/exec" "runtime" @@ -185,9 +186,26 @@ func saveSVGToFile() PostProcessor { } } +var vizTmpDir string + +func makeVizTmpDir() error { + if vizTmpDir != "" { + return nil + } + name, err := ioutil.TempDir("", "pprof-") + if err != nil { + return err + } + vizTmpDir = name + return nil +} + func invokeVisualizer(interactive **bool, format PostProcessor, suffix string, visualizers []string) PostProcessor { return func(input *bytes.Buffer, output io.Writer, ui plugin.UI) error { - tempFile, err := tempfile.New(os.Getenv("PPROF_TMPDIR"), "pprof", "."+suffix) + if err := makeVizTmpDir(); err != nil { + return err + } + tempFile, err := tempfile.New(vizTmpDir, "pprof", "."+suffix) if err != nil { return err } diff --git a/src/cmd/pprof/internal/driver/driver.go b/src/cmd/pprof/internal/driver/driver.go index 7f345a3bc2..df6a2d18b2 100644 --- a/src/cmd/pprof/internal/driver/driver.go +++ b/src/cmd/pprof/internal/driver/driver.go @@ -894,7 +894,7 @@ var usageMsg = "Output file parameters (for file-based output formats):\n" + " -help This message" var usageMsgVars = "Environment Variables:\n" + - " PPROF_TMPDIR Location for temporary files (default $HOME/pprof)\n" + + " PPROF_TMPDIR Location for saved profiles (default $HOME/pprof)\n" + " PPROF_TOOLS Search path for object-level tools\n" + " PPROF_BINARY_PATH Search path for local binary files\n" + " default: $HOME/pprof/binaries\n" + -- 2.48.1