diff --git a/pkg/task/task.go b/pkg/task/task.go index eb1e7b5d..f47eb747 100644 --- a/pkg/task/task.go +++ b/pkg/task/task.go @@ -3,6 +3,7 @@ package task import ( "context" + "runtime" "github.com/pkg/errors" log "github.com/sirupsen/logrus" @@ -63,11 +64,17 @@ func (t Task[K]) GetErrMsg() string { return t.Error.Error() } +func getCurrentGoroutineStack() string { + buf := make([]byte, 1<<16) + n := runtime.Stack(buf, false) + return string(buf[:n]) +} + func (t *Task[K]) run() { t.state = RUNNING defer func() { if err := recover(); err != nil { - log.Errorf("error [%+v] while run task [%s]", err, t.Name) + log.Errorf("error [%s] while run task [%s],stack trace:\n%s", err, t.Name, getCurrentGoroutineStack()) t.Error = errors.Errorf("panic: %+v", err) t.state = ERRORED }