nim-lang / Nim

Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula. Its design focuses on efficiency, expressiveness, and elegance (in that order of priority).
https://nim-lang.org
Other
16.54k stars 1.47k forks source link

--gc:ARC cause compiler crashed #16823

Open codehz opened 3 years ago

codehz commented 3 years ago

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

cooldome commented 3 years ago

Try compiling with --cursorInference:off

codehz commented 3 years ago

oh, I forgot to add --gc:arc again... new error:

/root/proj/nim-1.4.2/bin/nim_temp c --cursorInference:off --gc:arc test_complex.ni
m
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]
...................................................
Error: internal error: cannot map the empty seq type to a C type
Traceback (most recent call last)
/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(2736) 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
(6 calls omitted) ...
/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(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(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(2545) genStmtListExpr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2736) 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(2771) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2545) genStmtListExpr
/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(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(2556) 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(139) loadInto
/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(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(139) loadInto
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2752) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(1498) genSeqConstr
/root/proj/nim-1.4.2/compiler/ccgtypes.nim(428) getSeqPayloadType
/root/proj/nim-1.4.2/compiler/ccgtypes.nim(402) getTypeDescWeak
/root/proj/nim-1.4.2/compiler/msgs.nim(583) internalErrorImpl
/root/proj/nim-1.4.2/compiler/msgs.nim(539) liMessage
/root/proj/nim-1.4.2/compiler/msgs.nim(406) handleError
/root/proj/nim-1.4.2/compiler/msgs.nim(395) quit
Araq commented 3 years ago

Can you minimize it further, please?

codehz commented 3 years ago

I think it is related to https://github.com/nim-lang/Nim/issues/16847 Because when I try to expand the macro manually, the crash is also disappear...

ringabout commented 3 years ago

So should this work in arc?

proc typeIdStorage[T](): var TypeId =
  var storage {.global.}: TypeId
  return storage
Araq commented 7 months ago

Why shouldn't it?