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:
parent
548d0805f7
commit
a8c5e87b1e
@ -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
|
||||
}
|
||||
|
||||
|
@ -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 \"")
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user