github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/util/panic_dump.go (about) 1 package util 2 3 import ( 4 "fmt" 5 "io" 6 "os" 7 "runtime/debug" 8 ) 9 10 var PanicSink io.Writer = os.Stderr 11 12 func DumpPanic(recovered interface{}, msg string, args ...interface{}) error { 13 if recovered == nil { 14 return nil 15 } 16 17 err := fmt.Errorf("panic in %s: %v", fmt.Sprintf(msg, args...), recovered) 18 19 fmt.Fprintf(PanicSink, "%s\n %s\n", err.Error(), string(debug.Stack())) 20 return err 21 }