aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/crash_cgo_test.go
diff options
context:
space:
mode:
authorElias Naur <elias.naur@gmail.com>2017-08-19 16:59:19 +0200
committerElias Naur <elias.naur@gmail.com>2017-08-29 07:40:19 +0000
commitc3189cee717a47dd7936d9f82904db72b28293f6 (patch)
treee3fc16aff861b031fec26f74f79ed10ce085ff5a /src/runtime/crash_cgo_test.go
parent176cd48e574817bbb912c139396324c187b31279 (diff)
downloadgo-c3189cee717a47dd7936d9f82904db72b28293f6.tar.gz
go-c3189cee717a47dd7936d9f82904db72b28293f6.zip
runtime: forward crashing signals to late handlers
CL 49590 made it possible for external signal handlers to catch signals from a crashing Go process. This CL extends that support to handlers registered after the Go runtime has initialized. Updates #20392 (and possibly fix it). Change-Id: I18eccd5e958a505f4d1782a7fc51c16bd3a4ff9c Reviewed-on: https://go-review.googlesource.com/57291 Run-TryBot: Elias Naur <elias.naur@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/runtime/crash_cgo_test.go')
-rw-r--r--src/runtime/crash_cgo_test.go18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/runtime/crash_cgo_test.go b/src/runtime/crash_cgo_test.go
index 2869ac7687..40d12dc3dd 100644
--- a/src/runtime/crash_cgo_test.go
+++ b/src/runtime/crash_cgo_test.go
@@ -430,12 +430,16 @@ func TestCatchPanic(t *testing.T) {
t.Fatal(err)
}
- cmd := testEnv(exec.Command(exe, "CgoCatchPanic"))
- // Make sure a panic results in a crash.
- cmd.Env = append(cmd.Env, "GOTRACEBACK=crash")
- // Tell testprogcgo to install an early signal handler for SIGABRT
- cmd.Env = append(cmd.Env, "CGOCATCHPANIC_INSTALL_HANDLER=1")
- if out, err := cmd.CombinedOutput(); err != nil {
- t.Errorf("testprogcgo CgoCatchPanic failed: %v\n%s", err, out)
+ for _, early := range []bool{true, false} {
+ cmd := testEnv(exec.Command(exe, "CgoCatchPanic"))
+ // Make sure a panic results in a crash.
+ cmd.Env = append(cmd.Env, "GOTRACEBACK=crash")
+ if early {
+ // Tell testprogcgo to install an early signal handler for SIGABRT
+ cmd.Env = append(cmd.Env, "CGOCATCHPANIC_EARLY_HANDLER=1")
+ }
+ if out, err := cmd.CombinedOutput(); err != nil {
+ t.Errorf("testprogcgo CgoCatchPanic failed: %v\n%s", err, out)
+ }
}
}