system/excpt: let the OS handle termination on signal (#16712)

This commit is contained in:
alaviss 2021-02-19 08:29:21 +00:00 • committed by GitHub
commit ccc0667c29
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 46 additions and 3 deletions

View file

@ -0,0 +1,20 @@
discard """
joinable: false
disabled: windows
"""
import os, osproc, posix, strutils
proc main() =
if paramCount() > 0:
let signal = cint parseInt paramStr(1)
discard posix.raise(signal)
else:
# synchronize this list with lib/system/except.nim:registerSignalHandler()
let fatalSigs = [SIGINT, SIGSEGV, SIGABRT, SIGFPE, SIGILL, SIGBUS,
SIGPIPE]
for s in fatalSigs:
let (_, exitCode) = execCmdEx(quoteShellCommand [getAppFilename(), $s])
doAssert exitCode == 128 + s, "mismatched exit code for signal " & $s
main()