Merge pull request #16086 from cezarsa/full_stack_dump

Ensure goroutines dump is not truncated
This commit is contained in:
Brian Goff 2015-09-10 11:16:28 -04:00
commit c8dc729af4
1 changed files with 11 additions and 2 deletions

View File

@ -57,8 +57,17 @@ func Trap(cleanup func()) {
// DumpStacks dumps the runtime stack.
func DumpStacks() {
buf := make([]byte, 16384)
buf = buf[:runtime.Stack(buf, true)]
var (
buf []byte
stackSize int
)
bufferLen := 16384
for stackSize == len(buf) {
buf = make([]byte, bufferLen)
stackSize = runtime.Stack(buf, true)
bufferLen *= 2
}
buf = buf[:stackSize]
// Note that if the daemon is started with a less-verbose log-level than "info" (the default), the goroutine
// traces won't show up in the log.
logrus.Infof("=== BEGIN goroutine stack dump ===\n%s\n=== END goroutine stack dump ===", buf)