diff options
author | Ryan Schneider <ryanleeschneider@gmail.com> | 2018-06-14 21:58:44 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2018-06-14 21:58:44 +0800 |
commit | 897ea01d5ffa4204f1a58353e7cb6e1bbdf096aa (patch) | |
tree | 53eeaecd9e22eef4bed7dc08a140920567a46ad1 /internal | |
parent | ec192f18b49907ba8a6eeb5ee33119bab962a274 (diff) | |
download | dexon-897ea01d5ffa4204f1a58353e7cb6e1bbdf096aa.tar.gz dexon-897ea01d5ffa4204f1a58353e7cb6e1bbdf096aa.tar.zst dexon-897ea01d5ffa4204f1a58353e7cb6e1bbdf096aa.zip |
internal/debug: use pprof goroutine writer for debug_stacks (#16892)
* debug: Use pprof goroutine writer in debug.Stacks() to ensure all goroutines are captured.
* Up to 64MB limit, previous code only captured first 1MB of goroutines.
* internal/debug: simplify stacks handler
* fix typo
* fix pointer receiver
Diffstat (limited to 'internal')
-rw-r--r-- | internal/debug/api.go | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/internal/debug/api.go b/internal/debug/api.go index 048b7d763..86a4218f6 100644 --- a/internal/debug/api.go +++ b/internal/debug/api.go @@ -21,6 +21,7 @@ package debug import ( + "bytes" "errors" "io" "os" @@ -190,9 +191,9 @@ func (*HandlerT) WriteMemProfile(file string) error { // Stacks returns a printed representation of the stacks of all goroutines. func (*HandlerT) Stacks() string { - buf := make([]byte, 1024*1024) - buf = buf[:runtime.Stack(buf, true)] - return string(buf) + buf := new(bytes.Buffer) + pprof.Lookup("goroutine").WriteTo(buf, 2) + return buf.String() } // FreeOSMemory returns unused memory to the OS. |