[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Trying to understand trace limit
From: |
Dave Musicant |
Subject: |
Trying to understand trace limit |
Date: |
Mon, 28 Sep 2020 12:06:03 -0500 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0 Thunderbird/68.10.0 |
Hi all,
I'm seeing some strange behavior with tracing code, which I'd love some
help understanding. I've boiled it down to the following simplified example:
(define count
(lambda (n)
(if (equal? n 1) 1
(+ 1 (count (- n 1))))))
,tr (count 92)
When I run the above code (in a fresh Guile instance, via redirecting
from a file), the trace runs to completion.
However, when I run this version of the code from a file, which runs the
function twice...
(define count
(lambda (n)
(if (equal? n 1) 1
(+ 1 (count (- n 1))))))
,tr (count 10) ; runs to completion
,tr (count 92) ; dies mid-trace
... then the trace dies when it runs the second time, in something that
must be some sort of stack overflow, though the error is fairly cryptic:
While executing meta-command:
In procedure +: Wrong type argument in position 1: #<unspecified>
What's happening from a memory perspective where tracing the code the
first time affects how much memory is available for the second time? It
seems that the first run shouldn't affect the stack limit of the second,
but something is going on.
Thanks for the help.
Dave
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Trying to understand trace limit,
Dave Musicant <=