elcritch / figuro

Experimental UI Library for Nim
64 stars 1 forks source link

Maximum iteration level exceeded on tclick example #29

Closed matkuki closed 1 year ago

matkuki commented 1 year ago

Specs:

Following the readme instructions, I get this:

PS J:\Nim\figuro\testing\second_test> nim c -r figuro/tests/tclick.nim
Hint: used config file 'C:\Users\matic\.choosenim\toolchains\nim-#devel\config\nim.cfg' [Conf]
Hint: used config file 'C:\Users\matic\.choosenim\toolchains\nim-#devel\config\config.nims' [Conf]
Hint: used config file 'J:\Nim\figuro\testing\second_test\nim.cfg' [Conf]
Hint: used config file 'J:\Nim\figuro\testing\second_test\figuro\config.nims' [Conf]
Hint: used config file 'J:\Nim\figuro\testing\second_test\figuro\tests\config.nims' [Conf]
....................................................................................................
....................................................................................................
.....................................................................................
J:\Nim\figuro\testing\second_test\vendor\nim-stack-strings\stack_strings.nim(708, 125) Hint: 'setLen
' cannot raise 'InsufficientCapacityDefect' [XCannotRaiseY]
J:\Nim\figuro\testing\second_test\vendor\nim-stack-strings\stack_strings.nim(627, 70) Hint: 'add' ca
nnot raise 'InsufficientCapacityDefect' [XCannotRaiseY]
stack trace: (most recent call last)
9999903 calls omitted

J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) mangledNameAux
J:\Nim\figuro\testing\second_test\figuro\tests\tclick.nim(60, 26) template/generic instantiation of `slot` from here
J:\Nim\figuro\testing\second_test\figuro\tests\tclick.nim(61, 11) template/generic instantiation of `withDraw` from here
J:\Nim\figuro\testing\second_test\figuro\tests\tclick.nim(65, 5) template/generic instantiation of `rectangle` from here
J:\Nim\figuro\testing\second_test\figuro\tests\tclick.nim(72, 9) template/generic instantiation of `button` from here
J:\Nim\figuro\testing\second_test\figuro\figuro\ui\utils.nim(134, 14) template/generic instantiation of `preNode` from here
J:\Nim\figuro\testing\second_test\figuro\figuro\ui\core.nim(184, 52) template/generic instantiation of `draw` from here
J:\Nim\figuro\testing\second_test\figuro\figuro\meta\slots.nim(288, 18) template/generic instantiation of `rpcUnpack` from here
J:\Nim\figuro\testing\second_test\figuro\figuro\meta\datatypes.nim(133, 13) template/generic instantiation of `unpack` from here
J:\Nim\figuro\testing\second_test\figuro\figuro\meta\datatypes.nim(90, 8) template/generic instantiation of `ofType` from here
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(170, 72) template/generic instantiation of `getTypeId` from here
J:\Nim\figuro\testing\second_test\vendor\variant\variant.nim(61, 32) Error: interpretation requires too many iterations; if you are sure
this is not a bug in your code, compile with `--maxLoopIterationsVM:number` (current value: 10000000)
elcritch commented 1 year ago

Thanks, I've seen that one too at times, but it should be gone now.

Note since then I updated the readme a bit, and submitted a PR for Atlas as well. You'd want to make sure you update Atlas and re-run the replay step in the readme.

The CI also runs window builds on merge to main now, so hopefully it'll keep these to a minimum.

matkuki commented 1 year ago

I tried a clean install following the readme, same problem every time. Also noticed that it uses (nim executable) more than 10GB of memory during processing.

Also I think the readme has two typos:

nimble install https://github.com/nim-lang/atlas@\#head

should probably be:

nimble install https://github.com/nim-lang/atlas@#head

And this:

cp figuro/vendor/atlas.lock atlas.lock

should probably be:

cp figuro/atlas.lock atlas.lock
elcritch commented 1 year ago

Thanks I tweaked the readme. Note that you need to either use \#head or '#head' in most shells to keep # from being treated as a comment.

I haven't been able to replicate this on the runners. Could you post the SHA1 of your vendor/variant and your Atlas?

matkuki commented 1 year ago

Thanks I tweaked the readme. Note that you need to either use #head or '#head' in most shells to keep # from being treated as a comment.

Ahh, didn't know that, thanks.

Could you post the SHA1 of your vendor/variant and your Atlas?

Atlas:

$ atlas --version
version: 0.6.3 (sha: ab22f997c22a644924c1a9b920f8ce207da9b77f)

vendor/variant:

4934aa62d135eeda49fdb3967ffe8116811ef904
elcritch commented 1 year ago

Thanks I tweaked the readme. Note that you need to either use #head or '#head' in most shells to keep # from being treated as a comment.

Ahh, didn't know that, thanks.

Could you post the SHA1 of your vendor/variant and your Atlas?

Atlas:

$ atlas --version
version: 0.6.3 (sha: ab22f997c22a644924c1a9b920f8ce207da9b77f)

vendor/variant:

4934aa62d135eeda49fdb3967ffe8116811ef904

That all looks right. Also the variant library should be at 4934aa62d135eeda49fdb3967ffe8116811ef904.

And you have a nim.cfg in your working directory file that looks alright? It should have all the deps listed. That's the only other thing I can think of.

The nim.cfg should look like:

############# begin Atlas config section ##########
--noNimblePath
--path:"vendor/assume"
--path:"vendor/ws/src"
--path:"vendor/urlly/src"
--path:"vendor/pixie/src"
--path:"vendor/macroutils/src"
--path:"vendor/bumpy/src"
--path:"vendor/vmath/src"
--path:"vendor/crunchy/src"
--path:"vendor/nimsimd/src"
--path:"vendor/flatty/src"
--path:"vendor/zippy/src"
--path:"vendor/chroma/src"
--path:"vendor/micros/src"
--path:"vendor/nim-stack-strings"
--path:"vendor/msgpack4nim/src"
--path:"vendor/nimscripter/src"
--path:"vendor/threading"
--path:"vendor/windy.elcritch.github.com/src"
--path:"vendor/asynctools"
--path:"vendor/cdecl/src"
--path:"vendor/patty"
--path:"vendor/opengl/src"
--path:"vendor/variant"
--path:"vendor/supersnappy/src"
--path:"vendor/pretty/src"
--path:"vendor/cssgrid/src"
############# end Atlas config section   ##########
elcritch commented 1 year ago

Also you can checkout the Windows CI build for comparison: https://github.com/elcritch/figuro/actions/runs/6309477543/job/17129475556

elcritch commented 1 year ago

Nim 2 devel

Oh I just realized this. I'm using Nim 2.0.0 and haven't tested the 2.0 devel branch. I'd recommend trying out the 2.0.0 branch.

matkuki commented 1 year ago

Oh I just realized this. I'm using Nim 2.0.0 and haven't tested the 2.0 devel branch. I'd recommend trying out the 2.0.0 branch.

That was it! Thanks 👍