> 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.


Reply via email to