From ccc0667c29256ec1303e1d4280f013b380d85828 Mon Sep 17 00:00:00 2001 From: alaviss Date: Fri, 19 Feb 2021 08:29:21 +0000 Subject: system/excpt: let the OS handle termination on signal (#16712) --- lib/system/excpt.nim | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'lib/system/excpt.nim') diff --git a/lib/system/excpt.nim b/lib/system/excpt.nim index dbb39f536..19bf8911d 100644 --- a/lib/system/excpt.nim +++ b/lib/system/excpt.nim @@ -643,7 +643,17 @@ when not defined(noSignalHandler) and not defined(useNimRtl): # unless there's a good reason to use cstring in signal handler to avoid # using gc? showErrorMessage(msg, msg.len) - quit(1) # always quit when SIGABRT + + when defined(posix): + # reset the signal handler to OS default + c_signal(sign, SIG_DFL) + + # re-raise the signal, which will arrive once this handler exit. + # this lets the OS perform actions like core dumping and will + # also return the correct exit code to the shell. + discard c_raise(sign) + else: + quit(1) proc registerSignalHandler() = c_signal(SIGINT, signalHandler) -- cgit 1.4.1-2-gfad0