1
0
mirror of https://github.com/golang/go synced 2024-11-19 18:44:41 -07:00

runtime: fix Stack

Fixes #8626.

LGTM=bradfitz
R=golang-codereviews
CC=bradfitz, golang-codereviews, iant, r
https://golang.org/cl/137050043
This commit is contained in:
Russ Cox 2014-09-01 19:42:22 -04:00
parent 548d0805f7
commit a8c5e87b1e
2 changed files with 12 additions and 2 deletions

View File

@ -584,13 +584,13 @@ func Stack(buf []byte, all bool) int {
n := 0 n := 0
if len(buf) > 0 { if len(buf) > 0 {
gp.writebuf = buf gp.writebuf = buf[0:0:len(buf)]
goroutineheader(gp) goroutineheader(gp)
traceback(pc, sp, 0, gp) traceback(pc, sp, 0, gp)
if all { if all {
tracebackothers(gp) tracebackothers(gp)
} }
n = len(buf) - len(gp.writebuf) n = len(gp.writebuf)
gp.writebuf = nil gp.writebuf = nil
} }

View File

@ -6,6 +6,7 @@ package runtime_test
import ( import (
. "runtime" . "runtime"
"strings"
"sync" "sync"
"testing" "testing"
"time" "time"
@ -331,3 +332,12 @@ func TestStackCache(t *testing.T) {
} }
} }
} }
func TestStackOutput(t *testing.T) {
b := make([]byte, 1024)
stk := string(b[:Stack(b, false)])
if !strings.HasPrefix(stk, "goroutine ") {
t.Errorf("Stack (len %d):\n%s", len(stk), stk)
t.Errorf("Stack output should begin with \"goroutine \"")
}
}