Circularity detection broken in ASDF

Richard M Kreuter <[email protected]> Wed, 03 Sep 2008 18:27:54 -0400
Newsgroups gmane.lisp.cclan.general
Message-ID <[email protected]>
Hi,

(I tried posting this once before, but gmane and sourceforge seem to
disagree about what got through.  I've subscribed now.)

It seems that circularity detection is broken in asdf 1.123 and
therabouts.  Patch attached.

Demonstration:

* (require "ASDF")

("ASDF")
* (progn
   (with-open-file (f "0.lisp" :direction :output :if-exists :supersede)
     (print 'foo f))
   (with-open-file (f "1.lisp" :direction :output :if-exists :supersede)
     (print 'bar f))
   nil)

NIL

* (asdf:defsystem circ
   :pathname *default-pathname-defaults*
   :components ((:file "0" :depends-on ("1"))
                (:file "1" :depends-on ("0"))))

#<ASDF:SYSTEM "circ" {10025620C1}>
* (asdf:oos 'asdf:compile-op "circ")
Control stack guard page temporarily disabled: proceed with caution

debugger invoked on a SB-KERNEL::CONTROL-STACK-EXHAUSTED in thread #<THREAD "initial thread" {1002450D61}>:
  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.

Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [ABORT] Exit debugger, returning to top level.

(SB-KERNEL::CONTROL-STACK-EXHAUSTED-ERROR)
0] :a

--
RmK

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/

_______________________________________________
cclan-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cclan-list
asdf.diff (application/octet-stream, 395 B)
--- asdf.lisp   5 Jul 2008 02:57:20 -0000       1.123
+++ asdf.lisp   21 Jul 2008 13:34:40 -0000
@@ -588,7 +588,7 @@
 (defgeneric component-visiting-p (operation component))

 (defmethod component-visiting-p ((o operation) (c component))
-  (let ((node (cons o c)))
+  (let ((node (node-for o c)))
     (member node (operation-visiting-nodes (operation-ancestor o))
             :test 'equal)))