mirror of
https://github.com/restic/restic.git
synced 2025-08-15 03:37:27 +00:00
Print stacktrace in SIGINT handler if RESTIC_DEBUG_STACKTRACE_SIGINT set
The builtin mechanism to capture a stacktrace in Go is to send a SIGQUIT to the running process. However, this mechanism is not avaiable on Windows. Thus, tweak the SIGINT handler to dump a stacktrace if the environment variable `RESTIC_DEBUG_STACKTRACE_SIGINT` is set.
This commit is contained in:
15
internal/debug/stacktrace.go
Normal file
15
internal/debug/stacktrace.go
Normal file
@@ -0,0 +1,15 @@
|
||||
package debug
|
||||
|
||||
import "runtime"
|
||||
|
||||
func DumpStacktrace() string {
|
||||
buf := make([]byte, 128*1024)
|
||||
|
||||
for {
|
||||
l := runtime.Stack(buf, true)
|
||||
if l < len(buf) {
|
||||
return string(buf[:l])
|
||||
}
|
||||
buf = make([]byte, len(buf)*2)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user