> This will be probably be very difficult to track down unless you can
> find a smaller example that triggers it.
Here is a much easier way to get a stack overflow:
1. Save the following in a file, say bug.lisp:
;; this is the actual code from gforeign.lisp with (GDK:FLUSH)
;; replaced by (PRINT ...) and (FINISH-OUTPUT)
;;
(let ((interactive-eval #'ext:interactive-eval))
(declare (function interactive-eval))
(defun ext:interactive-eval (form)
(let ((values (multiple-value-list (funcall interactive-eval form))))
(print "call gdk flush")
(finish-output)
(values-list values))))
2. Type the following in the REPL of cmucl-2003-11-x86-linux:
(compile-file "bug")
(load "bug")
9 ;; or evaluate anything
This does not give a stack overflow in cmucl-2003-10-x86-linux and cmucl 18e.
Does anybody know why redefining EXT:INTERACTIVE-EVAL in this way doesn't work
anymore in cmucl-2003-11-x86-linux? Any possible hooks for me to achieve the
same effect?
Best,
-cph
ps. if you just load bug.lisp without compiling it, you won't get a stack
overflow in cmucl-2003-11-x86-linux.