1
0
mirror of https://github.com/golang/go synced 2024-11-19 17:04: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
if len(buf) > 0 {
gp.writebuf = buf
gp.writebuf = buf[0:0:len(buf)]
goroutineheader(gp)
traceback(pc, sp, 0, gp)
if all {
tracebackothers(gp)
}
n = len(buf) - len(gp.writebuf)
n = len(gp.writebuf)
gp.writebuf = nil
}

View File

@ -6,6 +6,7 @@ package runtime_test
import (
. "runtime"
"strings"
"sync"
"testing"
"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 \"")
}
}