Skip to content

ARC/newruntime: Adding inherited var ref object to seq with base type causes segfault #12964

Closed
@zedeus

Description

@zedeus

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions