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  }