|
From: Robert D. <rob...@gm...> - 2014-08-19 01:10:23
|
On 2014-08-18, Robert Dodier <rob...@gm...> wrote:
> (%i1) for i thru 3000 do if equal (1, i) then print ("HEY");
> HEY
> Maxima encountered a Lisp error:
>
> Error in PROGN [or a callee]: Bind stack overflow.
The problem is that is(equal(n, m)) (where n and m are integers) puts
stuff into the assume database and leaves it there. The culprit is
DINTNUM in src/db.lisp. There are some calls to FACT there which
wedge stuff into the database, and you can see the detritus via
e.g. (symbol-plist '$%pi). The loop triggers the bug by filling the
database with more and more stuff.
On the face of it, it seems unnecessary for DINTNUM to modify the global
database, but it has been like that for a long time; at least since
Maxima 5.0 (circa 1990).
best
Robert Dodier
|