From 5cd1b73772e339e3b460d53ba37630704a323ca7 Mon Sep 17 00:00:00 2001 From: qiulaidongfeng <2645477756@qq.com> Date: Tue, 17 Sep 2024 20:10:20 +0800 Subject: runtime: correctly print panics before fatal-ing on defer Fixes #67792 Change-Id: I93d16580cb31e54cee7c8490212404e4d0dec446 Reviewed-on: https://go-review.googlesource.com/c/go/+/613757 Reviewed-by: Keith Randall Reviewed-by: Keith Randall Reviewed-by: Michael Pratt LUCI-TryBot-Result: Go LUCI Auto-Submit: Keith Randall --- src/runtime/testdata/testprog/panicprint.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/runtime/testdata') diff --git a/src/runtime/testdata/testprog/panicprint.go b/src/runtime/testdata/testprog/panicprint.go index 4ce958ba3d..eaf3ba2c33 100644 --- a/src/runtime/testdata/testprog/panicprint.go +++ b/src/runtime/testdata/testprog/panicprint.go @@ -4,6 +4,8 @@ package main +import "sync" + type MyBool bool type MyComplex128 complex128 type MyComplex64 complex64 @@ -90,6 +92,23 @@ func panicCustomFloat32() { panic(MyFloat32(-93.70)) } +func panicDeferFatal() { + var mu sync.Mutex + defer mu.Unlock() + var i *int + *i = 0 +} + +func panicDoublieDeferFatal() { + var mu sync.Mutex + defer mu.Unlock() + defer func() { + panic(recover()) + }() + var i *int + *i = 0 +} + func init() { register("panicCustomComplex64", panicCustomComplex64) register("panicCustomComplex128", panicCustomComplex128) @@ -108,4 +127,6 @@ func init() { register("panicCustomUint32", panicCustomUint32) register("panicCustomUint64", panicCustomUint64) register("panicCustomUintptr", panicCustomUintptr) + register("panicDeferFatal", panicDeferFatal) + register("panicDoublieDeferFatal", panicDoublieDeferFatal) } -- cgit v1.3-5-g9baa