INim icon indicating copy to clipboard operation
INim copied to clipboard

Handling `sysFatal` gracefully

Open adigitoleo opened this issue 2 years ago • 3 comments

Unhandled sysFatal from top level scope can crash the repl:

%zsh> inim
👑 INim 0.6.1
Nim Compiler Version 1.6.0 [Linux: amd64] at /usr/bin/nim
nim> var s = newSeq[int](5)
nim> s[5] = 42
fatal.nim(53)            sysFatal
Error: unhandled exception: value out of range: -1 notin 0 .. 9223372036854775807 [RangeDefect]

Other unhandled sysFatal don't show the error message:

%zsh> inim
👑 INim 0.6.1
Nim Compiler Version 1.6.0 [Linux: amd64] at /usr/bin/nim
nim> proc oof() =
....   var s = newSeq[int](5)
....   s[5] = 42
....
nim> oof()
/usr/lib/nim/lib/system/fatal.nim(53) sysFatal

adigitoleo avatar Jan 15 '22 04:01 adigitoleo

confirmed, these should not crash the repl, ideally. Perhaps they should be removed from execution so that further commands can continue?

0atman avatar Mar 30 '22 09:03 0atman

Looks like the crash isn't happening any more with nim 1.6.6, the message is still missing in the second case however.

adigitoleo avatar Jun 21 '22 16:06 adigitoleo

Crash is back, either I was talking nonsense before or it is reintroduced. My naive idea for this was to somehow catch sysFatal during the internal compile cycle (although I understand that it's more like a panic than an exception), but that requires a better understanding of fatal.nim than I have: https://github.com/nim-lang/Nim/blob/devel/lib/system/fatal.nim

In particular, Nim is not always simply raiseing something, there's a few platform/compiler-flag specific behaviours.

adigitoleo avatar Nov 24 '22 09:11 adigitoleo