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