On 28.02.2020 17:58, Waldek Hebisch wrote: > On Thu, Feb 27, 2020 at 10:41:32PM +0100, Kurt Pagani wrote: >> >> The second issue concerns big files (compile or read doesn't matter): >> >> >> --ECL >> -- (1) -> )r bigfile >> -- >> -- >> System error: >> -- C-STACK overflow at size 1042432. Stack can probably be resized. >> -- Proceed with caution. >> >> --SBCL >> -- >> System error: >> -- Control stack exhausted (no more space for function call frames). >> -- This is probably due to heavily nested or infinitely recursive function >> -- calls, or a tail call that SBCL cannot or has not optimized away. >> -- >> -- PROCEED WITH CAUTION. >> >> Example: >> - http://fricas-wiki.math.uni.wroc.pl/AWAIC > > That one looks like sbcl bug: stack overflow is during lisp compilation.
Yes, ECL and ABCL the same/similar. > >> - attached bigfile.input (mostly comments, ~30k lines) >> >> I'm wondering why reading a file uses recursion? > > Recursion in general is reasonable. Dear me, nothing against recursion. I forgot the 'scanner', probably because one is used to read the whole file into memory before preocessing nowadays (e.g. Python). > Our scanned uses too complicated > method which usually keeps recursion depth low. But on long > streches of comments the method backfires and recursion depth > is very high. Adding some actual code (so distnce between executable > lines is at most 5000) between comment makes problem go away, > so it there is at least partial workaround. Anyway, I was > thinking about simplifyng scanner, but up to now "do not fix > what is not broken" won. Now I will have good excuse > to work on it. To say the truth I am more worried about > releated problem: skiping long parts using ')if' and ')endif' > also leads to crash... > The strange thing is that the (compiled) AWAIC example (http://fricas-wiki.math.uni.wroc.pl/AWAIC) worked some years ago. Unfortunately I can't remember which Fricas version. I found one old version only (1.2.7, 2016) and this one is able to read the bigile but cannot compile the AWAIC either. By the way, I thought it wouldn't matter whether comments or commands are read, however, this seems not to be case, indeed (the snippet below creates a file that runs with 100k lines without any problem at all). So mucht the more I'm wondering why the AWAIC won't compile. It's certainly not a problem of upmost priority, though. --- N:=100000 f:=open("bigfile2.input"::FileName,"output")$TextFile writeLine!(f,"X:=[0 for i in 1.." string(N) "]") for i in 1..N repeat writeLine!(f,"X." string(i) ":=random(" string(N) ")") close!(f) )q --- (2) -> )r bigfile x:=0 (2) 0 Type: NonNegativeInteger (3) -> x (3) 0 Type: NonNegativeInteger (4) -> )lisp (lisp-implementation-version) Value = "1.3.0" (4) -> )lisp (lisp-implementation-type) Value = "SBCL" -- You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/fricas-devel/182cb7a7-7dca-d278-4e3d-3a52b70c84e0%40gmail.com.
