Closed
Description
Tested with latest devel.
type
Token* = ref object of RootObj
Li* = ref object of Token
proc bug*() =
var token = Li()
var tokens = @[Token()]
tokens.add token
bug()
Traceback (most recent call last)
/tmp/bug.nim(11) bug
/tmp/bug.nim(6) bug
/home/zed/.choosenim/toolchains/nim-#devel/lib/system/refs_v2.nim(124) nimDestroyAndDispose
/home/zed/.choosenim/toolchains/nim-#devel/lib/system/refs_v2.nim(101) nimRawDispose
/home/zed/.choosenim/toolchains/nim-#devel/lib/system/alloc.nim(945) dealloc
/home/zed/.choosenim/toolchains/nim-#devel/lib/system/alloc.nim(860) rawDealloc
/home/zed/.choosenim/toolchains/nim-#devel/lib/system/avltree.nim(74) del
SIGSEGV: Illegal storage access. (Attempt to read from nil?)
Error: execution of an external program failed: '/tmp/bug '
Doing @[Token(), Li()]
, @[Token(), token]
or even tokens.add Li()
does not trigger the bug. Found in the wild here: https://github.com/soasme/nim-markdown/blob/master/src/markdown.nim#L743