From a7be95346693cee337f776088fd2627bd1adb8c6 Mon Sep 17 00:00:00 2001 From: Dmitriy Vyukov Date: Fri, 24 Oct 2014 21:05:24 +0400 Subject: [PATCH] dashboard: always run bench binary with timeout When the tree is particularly broken, even the first invocation of bench binary that queries list of benchmarks can hang. Fixes golang/go#8844. LGTM=bradfitz R=adg, bradfitz CC=golang-codereviews https://golang.org/cl/162160043 --- dashboard/builder/bench.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dashboard/builder/bench.go b/dashboard/builder/bench.go index fa3849d1..fb99aac5 100644 --- a/dashboard/builder/bench.go +++ b/dashboard/builder/bench.go @@ -115,13 +115,14 @@ func (b *Builder) buildBenchmark(workpath string, update bool) (benchBin, log st // based on the list of available benchmarks, already executed benchmarks // and -benchcpu list. func chooseBenchmark(benchBin string, doneBenchs []string) (bench string, procs, affinity int, last bool) { - out, err := exec.Command(benchBin).CombinedOutput() + var out bytes.Buffer + err := run(exec.Command(benchBin), allOutput(&out)) if err != nil { log.Printf("Failed to query benchmark list: %v\n%s", err, out) last = true return } - outStr := string(out) + outStr := out.String() nlIdx := strings.Index(outStr, "\n") if nlIdx < 0 { log.Printf("Failed to parse benchmark list (no new line): %s", outStr)