From 43b18f42410f427dbfa5b33cae88f6ef574bd547 Mon Sep 17 00:00:00 2001 From: "Hana (Hyang-Ah) Kim" Date: Tue, 1 May 2018 20:01:00 -0400 Subject: [PATCH] cmd/trace: handle invalid goid para in /trace Change-Id: I1cb7c8b70a5ae16386f6abb577c23d821f7ff7f0 Reviewed-on: https://go-review.googlesource.com/112197 Reviewed-by: Peter Weinberger Run-TryBot: Hyang-Ah Hana Kim --- src/cmd/trace/trace.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/cmd/trace/trace.go b/src/cmd/trace/trace.go index fcba0cbc3f..31ef3b6892 100644 --- a/src/cmd/trace/trace.go +++ b/src/cmd/trace/trace.go @@ -185,11 +185,15 @@ func httpJsonTrace(w http.ResponseWriter, r *http.Request) { // If goid argument is present, we are rendering a trace for this particular goroutine. goid, err := strconv.ParseUint(goids, 10, 64) if err != nil { - log.Printf("failed to parse goid parameter '%v': %v", goids, err) + log.Printf("failed to parse goid parameter %q: %v", goids, err) return } analyzeGoroutines(res.Events) - g := gs[goid] + g, ok := gs[goid] + if !ok { + log.Printf("failed to find goroutine %d", goid) + return + } params.mode = modeGoroutineOriented params.startTime = g.StartTime if g.EndTime != 0 { @@ -249,12 +253,12 @@ func httpJsonTrace(w http.ResponseWriter, r *http.Request) { // If start/end arguments are present, we are rendering a range of the trace. start, err = strconv.ParseInt(startStr, 10, 64) if err != nil { - log.Printf("failed to parse start parameter '%v': %v", startStr, err) + log.Printf("failed to parse start parameter %q: %v", startStr, err) return } end, err = strconv.ParseInt(endStr, 10, 64) if err != nil { - log.Printf("failed to parse end parameter '%v': %v", endStr, err) + log.Printf("failed to parse end parameter %q: %v", endStr, err) return } } -- 2.48.1