Skip to content

--gc:ARC cause compiler crashed #16823

Open
@codehz

Description

@codehz

Example

Demo: try https://github.com/codehz/xmlio/blob/0d5633937f375b998276d552d0244f14f252755c/tests/test_complex.nim (download full project at first)

nim c --gc:arc test_complex.nim

Current Output

Hint: used config file '/root/proj/nim-1.4.2/config/nim.cfg' [Conf]
Hint: used config file '/root/proj/nim-1.4.2/config/config.nims' [Conf]
Hint: used config file '/tmp/xmlio/tests/config.nims' [Conf]
.................................................../root/proj/nim-1.4.2/compiler/nim.nim(118) nim
/root/proj/nim-1.4.2/compiler/nim.nim(83) handleCmdLine
/root/proj/nim-1.4.2/compiler/main.nim(245) mainCommand
/root/proj/nim-1.4.2/compiler/main.nim(210) compileToBackend
/root/proj/nim-1.4.2/compiler/main.nim(86) commandCompileToC
/root/proj/nim-1.4.2/compiler/modules.nim(160) compileProject
/root/proj/nim-1.4.2/compiler/modules.nim(96) compileModule
/root/proj/nim-1.4.2/compiler/passes.nim(208) processModule
/root/proj/nim-1.4.2/compiler/passes.nim(86) processTopLevelStmt
/root/proj/nim-1.4.2/compiler/cgen.nim(1947) myProcess
/root/proj/nim-1.4.2/compiler/cgen.nim(992) genProcBody
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2819) expr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1231) genTryGoto
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2545) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2545) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2792) expr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(410) genVarStmt
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(392) genSingleVar
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(379) genSingleVar
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(139) loadInto
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2762) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(1472) genObjConstr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2742) expr
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(783) genCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(780) genAsgnCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(385) genPrefixCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(366) genParams
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(290) genArg
/root/proj/nim-1.4.2/compiler/cgen.nim(632) initLocExprSingleUse
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2666) expr
/root/proj/nim-1.4.2/compiler/cgen.nim(1243) genProc
/root/proj/nim-1.4.2/compiler/cgen.nim(1185) genProcNoForward
/root/proj/nim-1.4.2/compiler/cgen.nim(1051) genProcAux
/root/proj/nim-1.4.2/compiler/cgen.nim(992) genProcBody
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2819) expr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1231) genTryGoto
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2771) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2552) genStmtListExpr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2795) expr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(943) genCase
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(815) genStringCase
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(789) genCaseSecondPass
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(180) exprBlock
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2807) expr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1574) genAsgn
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(129) loadInto
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(780) genAsgnCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(379) genPrefixCall
/root/proj/nim-1.4.2/compiler/cgen.nim(619) initLocExpr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2666) expr
/root/proj/nim-1.4.2/compiler/cgen.nim(1243) genProc
/root/proj/nim-1.4.2/compiler/cgen.nim(1185) genProcNoForward
/root/proj/nim-1.4.2/compiler/cgen.nim(1051) genProcAux
/root/proj/nim-1.4.2/compiler/cgen.nim(992) genProcBody
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2545) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2771) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2552) genStmtListExpr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2807) expr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1574) genAsgn
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(129) loadInto
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(780) genAsgnCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(379) genPrefixCall
/root/proj/nim-1.4.2/compiler/cgen.nim(619) initLocExpr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2666) expr
/root/proj/nim-1.4.2/compiler/cgen.nim(1243) genProc
/root/proj/nim-1.4.2/compiler/cgen.nim(1185) genProcNoForward
/root/proj/nim-1.4.2/compiler/cgen.nim(1051) genProcAux
/root/proj/nim-1.4.2/compiler/cgen.nim(992) genProcBody
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2545) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2773) expr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(451) genIf
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2545) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2801) expr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1574) genAsgn
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(129) loadInto
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(780) genAsgnCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(385) genPrefixCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(366) genParams
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(290) genArg
/root/proj/nim-1.4.2/compiler/cgen.nim(632) initLocExprSingleUse
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2784) expr
/root/proj/nim-1.4.2/compiler/cgen.nim(1243) genProc
/root/proj/nim-1.4.2/compiler/cgen.nim(1185) genProcNoForward
/root/proj/nim-1.4.2/compiler/cgen.nim(1051) genProcAux
/root/proj/nim-1.4.2/compiler/cgen.nim(992) genProcBody
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2545) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2807) expr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1574) genAsgn
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(129) loadInto
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(780) genAsgnCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(385) genPrefixCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(366) genParams
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(290) genArg
/root/proj/nim-1.4.2/compiler/cgen.nim(632) initLocExprSingleUse
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2771) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2552) genStmtListExpr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2742) expr
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(783) genCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(780) genAsgnCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(379) genPrefixCall
/root/proj/nim-1.4.2/compiler/cgen.nim(619) initLocExpr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2666) expr
/root/proj/nim-1.4.2/compiler/cgen.nim(1243) genProc
/root/proj/nim-1.4.2/compiler/cgen.nim(1185) genProcNoForward
/root/proj/nim-1.4.2/compiler/cgen.nim(1051) genProcAux
/root/proj/nim-1.4.2/compiler/cgen.nim(992) genProcBody
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2545) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2801) expr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1574) genAsgn
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(129) loadInto
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(780) genAsgnCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(379) genPrefixCall
/root/proj/nim-1.4.2/compiler/cgen.nim(619) initLocExpr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2666) expr
/root/proj/nim-1.4.2/compiler/cgen.nim(1243) genProc
/root/proj/nim-1.4.2/compiler/cgen.nim(1185) genProcNoForward
/root/proj/nim-1.4.2/compiler/cgen.nim(1009) genProcAux
/root/proj/nim-1.4.2/compiler/injectdestructors.nim(1024) injectDestructorCalls
/root/proj/nim-1.4.2/compiler/varpartitions.nim(896) computeCursors
/root/proj/nim-1.4.2/compiler/varpartitions.nim(841) computeGraphPartitions
/root/proj/nim-1.4.2/compiler/varpartitions.nim(749) traverse
/root/proj/nim-1.4.2/compiler/varpartitions.nim(663) traverse
/root/proj/nim-1.4.2/compiler/varpartitions.nim(602) deps
/root/proj/nim-1.4.2/compiler/varpartitions.nim(458) destMightOwn
/root/proj/nim-1.4.2/compiler/varpartitions.nim(468) destMightOwn
/root/proj/nim-1.4.2/lib/system/fatal.nim(49) sysFatal
Error: unhandled exception: index 1 not in 0 .. 0 [IndexDefect]

Expected Output

no crash at compile time

Additional Information

$ nim -v
Nim Compiler Version 1.4.2 [Linux: amd64]
Compiled at 2021-01-25
Copyright (c) 2006-2020 by Andreas Rumpf

active boot switches:

also confirmed in devel version

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