From f9d20266a8397138805e5675b992601ef49ad37a Mon Sep 17 00:00:00 2001 From: coti <54785329+coticom@users.noreply.github.com> Date: Tue, 26 Mar 2024 17:50:14 +0800 Subject: [PATCH] opt: use runtime/debug.Stack() to print stack trace of panic (#93) --- cron/chain.go | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/cron/chain.go b/cron/chain.go index fdec8c9..b2ccb1f 100644 --- a/cron/chain.go +++ b/cron/chain.go @@ -1,8 +1,7 @@ package cron import ( - "fmt" - "runtime" + "runtime/debug" "sync" "time" @@ -45,14 +44,7 @@ func Recover(logger dlog.Logger) JobWrapper { return FuncJob(func() { defer func() { if r := recover(); r != nil { - const size = 64 << 10 - buf := make([]byte, size) - buf = buf[:runtime.Stack(buf, false)] - err, ok := r.(error) - if !ok { - err = fmt.Errorf("%v", r) - } - logger.Errorf("panic: stack %v\n%v\n", err, string(buf)) + logger.Errorf("panic: stack %v\n%s\n", r, debug.Stack()) } }() j.Run()