]> Cypherpunks repositories - gostls13.git/commit
runtime: when dying from a signal use the previous signal handler
authorElias Naur <elias.naur@gmail.com>
Tue, 18 Jul 2017 12:17:57 +0000 (14:17 +0200)
committerElias Naur <elias.naur@gmail.com>
Thu, 10 Aug 2017 10:08:17 +0000 (10:08 +0000)
commit5500c9ce27128ab26aa23bafddce7dd512ce72ea
tree4f369975ea3c77fd73d484b95151ab93d6280614
parent7d80a2ea18f48d309115bbe950422c54e31a14e8
runtime: when dying from a signal use the previous signal handler

Before this CL, whenever the Go runtime wanted to kill its own
process with a signal dieFromSignal would reset the signal handler
to _SIG_DFL.

Unfortunately, if any signal handler were installed before the Go
runtime initialized, it wouldn't be invoked either.

Instead, use whatever signal handler was installed before
initialization.

The motivating use case is Crashlytics on Android. Before this CL,
Crashlytics would not consider a crash from a panic() since the
corresponding SIGABRT never reached its signal handler.

Updates #11382
Updates #20392 (perhaps even fixes it)
Fixes #19389

Change-Id: I0c8633329433b45cbb3b16571bea227e38e8be2e
Reviewed-on: https://go-review.googlesource.com/49590
Run-TryBot: Elias Naur <elias.naur@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/runtime/crash_cgo_test.go
src/runtime/signal_unix.go
src/runtime/testdata/testprogcgo/catchpanic.go [new file with mode: 0644]