[#7781] added panic stack trace to routine.SafeWrap and wrapped JSVM migrate arguments so that we can return a clean error with the failed filename

This commit is contained in:
Gani Georgiev
2026-09-15 17:39:59 +03:00
parent 457e094d41
commit 86ce1be8fe
10 changed files with 42 additions and 13 deletions
+6 -4
View File
@@ -22,8 +22,8 @@ func FireAndForget(f func(), wg ...*sync.WaitGroup) {
}
defer func() {
if err := recover(); err != nil {
log.Println("[FireAndForget] RECOVERED FROM PANIC:", err)
if rec := recover(); rec != nil {
log.Println("[FireAndForget] RECOVERED FROM PANIC:", rec)
stack := make([]byte, 2<<10) // 2 KB
length := runtime.Stack(stack, false)
@@ -40,8 +40,10 @@ func FireAndForget(f func(), wg ...*sync.WaitGroup) {
func SafeWrap(f func() error) func() error {
return func() (err error) {
defer func() {
if r := recover(); r != nil {
err = fmt.Errorf("[SafeWrap] recovered from panic: %v", r)
if rec := recover(); rec != nil {
stack := make([]byte, 2<<10) // 2 KB
length := runtime.Stack(stack, false)
err = fmt.Errorf("[SafeWrap] recovered from panic: %v\n%s", rec, string(stack[:length]))
}
}()